如果要读取另外一个窗口的文字,需要用到什么函数

时间:2021-12-03 21:57:26
您好,请教一下您,如果要读取另外一个窗口的文字,需要用到什么函数,以及按什么顺序去使用这些函数?如何去学习这些函数,本人没接触过API函数,很多概念都不明白,网上找来都是比较零散的,很多看不懂,请问如何系统学习?

20 个解决方案

#1


GetWindowText
CWnd::GetWindowText
InternalGetWindowText

最好的办法是查MSDN

#2


FindWindow
FindWindowEx
GetWindowText

SendDlgItemMessage

SendMessage

方法多拉

#3


建议先找本windows程序设计看看。

#4


看<windows程序设计>,岗岗的。
很简单,你先获得目标窗口的句柄,有了句柄就可以做一切,获取文本只是其中之一罢了。

#5


先取得你得读取的窗口的指针,然后调用GetWindowText方法。

#6


在windows下只要有窗口句柄,你可以干你要干的如何事情.
如果没有hWnd,可以用FindWindow()来找.

#7


GetWindowText();
前提是你必须得到要获得文字的窗口或者控件的句柄!

#8


要先找到文字所在的子窗口,可以参考下这里:
http://topic.csdn.net/u/20080803/13/a5b9967a-be48-4cba-9ae8-ed428d4a00b7.html

#9


2.19.35  GetWindowText

函数功能:该函数将指定窗口的标题条文本(如果存在)拷贝到一个缓存区内。如果指定的
窗口是一个控制,则拷贝控制的文本。但是, GetWindowTeXt不能接收在其他应用程序中的
控制文本。


请问是真的吗?

#10


引用 9 楼 skyku 的回复:
2.19.35  GetWindowText 

函数功能:该函数将指定窗口的标题条文本(如果存在)拷贝到一个缓存区内。如果指定的 
窗口是一个控制,则拷贝控制的文本。但是,GetWindowTeXt不能接收在其他应用程序中的 
控制文本。 

请问是真的吗?


在WIN9X及之前的操作系统中,GetWindowText能获取任何窗口的文本,包括其他应用程序,这也是9X下密码框的密码很容易被盗取的原因。
从WIN2000开始,GetWindowText不再能获取其他进程的窗口内容,必须注入该进程空间后才能获得,一般采用HOOK、远程注入等方式进入其他进程空间。

#11


引用 10 楼 jameshooo 的回复:
在WIN9X及之前的操作系统中,GetWindowText能获取任何窗口的文本,包括其他应用程序,这也是9X下密码框的密码很容易被盗取的原因。 
从WIN2000开始,GetWi…


谢谢,那么楼上那些所说的用函数是不能实现咯?

#12


按钮,标题栏的可以使用楼上说的函数
文本框,列表框,下拉框就不行了

#13


用SendMessage可以

#14


用FindWindow和FindWindowEx找到对应的窗口句柄hWnd

SendMessage(hWnd,WM_GETTEXT,(WPARAM)512,(LPARAM)szText);  //char szText[512];

#15


wnd = FindWindow()
wnd.GetDlgItemText()

#16


比如B窗口的实例为b,B窗口中有一个控件button的实例为m_b,且B窗口已经建立

则在A窗口的某个函数中:
CString strText;
b.m_b.GetWindowText( strText );

结果,B窗口中的button上的字就保存到了strText中

#17


引用 16 楼 jszj 的回复:
比如B窗口的实例为b,B窗口中有一个控件button的实例为m_b,且B窗口已经建立 

则在A窗口的某个函数中: 
CString strText; 
b.m_b.GetWindowText( strText ); 

结果,B窗口中的button上的字就保存到了strText中


您说的是同一个程序吧,我说的是一个程序读另外一个程序的~

#18


HWND h = findwindow(....);
char a[];
GetwindowText(a);

#19


这些函数查了也不会用啊,有没有傻瓜式教程?

#20


先FindWindow()获取指定窗口的句柄,然后GetWindowText()获取其上面的字符

#1


GetWindowText
CWnd::GetWindowText
InternalGetWindowText

最好的办法是查MSDN

#2


FindWindow
FindWindowEx
GetWindowText

SendDlgItemMessage

SendMessage

方法多拉

#3


建议先找本windows程序设计看看。

#4


看<windows程序设计>,岗岗的。
很简单,你先获得目标窗口的句柄,有了句柄就可以做一切,获取文本只是其中之一罢了。

#5


先取得你得读取的窗口的指针,然后调用GetWindowText方法。

#6


在windows下只要有窗口句柄,你可以干你要干的如何事情.
如果没有hWnd,可以用FindWindow()来找.

#7


GetWindowText();
前提是你必须得到要获得文字的窗口或者控件的句柄!

#8


要先找到文字所在的子窗口,可以参考下这里:
http://topic.csdn.net/u/20080803/13/a5b9967a-be48-4cba-9ae8-ed428d4a00b7.html

#9


2.19.35  GetWindowText

函数功能:该函数将指定窗口的标题条文本(如果存在)拷贝到一个缓存区内。如果指定的
窗口是一个控制,则拷贝控制的文本。但是, GetWindowTeXt不能接收在其他应用程序中的
控制文本。


请问是真的吗?

#10


引用 9 楼 skyku 的回复:
2.19.35  GetWindowText 

函数功能:该函数将指定窗口的标题条文本(如果存在)拷贝到一个缓存区内。如果指定的 
窗口是一个控制,则拷贝控制的文本。但是,GetWindowTeXt不能接收在其他应用程序中的 
控制文本。 

请问是真的吗?


在WIN9X及之前的操作系统中,GetWindowText能获取任何窗口的文本,包括其他应用程序,这也是9X下密码框的密码很容易被盗取的原因。
从WIN2000开始,GetWindowText不再能获取其他进程的窗口内容,必须注入该进程空间后才能获得,一般采用HOOK、远程注入等方式进入其他进程空间。

#11


引用 10 楼 jameshooo 的回复:
在WIN9X及之前的操作系统中,GetWindowText能获取任何窗口的文本,包括其他应用程序,这也是9X下密码框的密码很容易被盗取的原因。 
从WIN2000开始,GetWi…


谢谢,那么楼上那些所说的用函数是不能实现咯?

#12


按钮,标题栏的可以使用楼上说的函数
文本框,列表框,下拉框就不行了

#13


用SendMessage可以

#14


用FindWindow和FindWindowEx找到对应的窗口句柄hWnd

SendMessage(hWnd,WM_GETTEXT,(WPARAM)512,(LPARAM)szText);  //char szText[512];

#15


wnd = FindWindow()
wnd.GetDlgItemText()

#16


比如B窗口的实例为b,B窗口中有一个控件button的实例为m_b,且B窗口已经建立

则在A窗口的某个函数中:
CString strText;
b.m_b.GetWindowText( strText );

结果,B窗口中的button上的字就保存到了strText中

#17


引用 16 楼 jszj 的回复:
比如B窗口的实例为b,B窗口中有一个控件button的实例为m_b,且B窗口已经建立 

则在A窗口的某个函数中: 
CString strText; 
b.m_b.GetWindowText( strText ); 

结果,B窗口中的button上的字就保存到了strText中


您说的是同一个程序吧,我说的是一个程序读另外一个程序的~

#18


HWND h = findwindow(....);
char a[];
GetwindowText(a);

#19


这些函数查了也不会用啊,有没有傻瓜式教程?

#20


先FindWindow()获取指定窗口的句柄,然后GetWindowText()获取其上面的字符

#21