Windows API宏,在WinUser.h中根据是否已定义Unicode被分别定义为GetWindowTextW和GetWindowTextA。该函数将指定窗口的标题条文本(如果存在)拷贝到一个缓存区内。如果指定的窗口是一个控件,则拷贝控件的文本。但是,GetWindowText可能无法获取外部应用程序中控件的文本,获取自绘的控件或者是外部的密码编辑框很有可能会失败。
Windows API宏,在WinUser.h中根据是否已定义Unicode被分别定义为GetWindowTextW和GetWindowTextA。该函数将指定窗口的标题条文本(如果存在)拷贝到一个缓存区内。如果指定的窗口是一个控件,则拷贝控件的文本。但是,GetWindowText可能无法获取外部应用程序中控件的文本,获取自绘的控件或者是外部的密码框很有可能会失败。
该函数将指定窗口的标题条文本(如果存在)拷贝到一个缓存区内。如果指定的窗口是一个控件,则拷贝控件的文本。但是,GetWindowText可能无法获取外部应用程序中控件的文本,获取自绘的控件或者是外部的密码框很有可能会失败。
函数原型:Int GetWindowText(HWND hWnd,LPTSTR lpString,Int nMaxCount);
hWnd:带文本的窗口或控件的句柄。
lpString:指向接收文本的缓冲区的指针。
nMaxCount:指定要保存在缓冲区内的字符的最大个数,其中包含NULL字符。如果文本超过界限,它就被截断。
getwindowtext的DELPHI例子:
var
p:pchar;
begin
getmem(p,255);
getwindowtext(application.Handle,p,255);
showmessage(strpas(p));
freemem(p);
end;
如果函数成功,返回值是拷贝的字符串的字符个数,不包括中断的空字符;如果窗口无标题栏或文本,或标题栏为空,或窗口或控制的句柄无效,则返回值为零。若想获得更多错误信息,请调用GetLastError函数。
函数不能返回在其他应用程序中的控件的文本。
如果目标窗口属于当前进程,GetWindowText函数给指定的窗口或控件发送WM_GETTEXT消息。如果目标窗口属于其他进程,并且有一个窗口标题,则GetWindowText返回窗口的标题文本,如果窗口无标题,则函数返回空字符串。
速查:Windows NT:3.1以上版本;Windows:95以上版本:Windows CE:
1.0以上版本;头文件:Winuser.h;库文件:user32.lib:Unicode:在Windows NT上实现为Unicode和ANSI两种版本。
int GetWindowText(
LPTSTR lpszStringBuf,
int nMaxCount
) const;
void GetWindowText(
CString& rString
) const;
lpszStringBuf
Pointer to the buffer that will receive the text. If the string is as long or longer than the buffer, the string is truncated and terminated with a NULL character.
nMaxCount
Specifies the maximum number of characters to copy to the buffer, including the NULL character. If the text exceeds this limit, it is truncated.
rString
A CString object that is to receive the copied string of the window's title.
Specifies the length, in characters, of the copied string, not including the terminating null character. It is 0 if CWnd has no caption or if the caption is empty.
If the CWnd object is a control, the GetWindowText member function copies the text within the control instead of copying the caption.
This member function causes the WM_GETTEXT message to be sent to the CWnd object.
简单使用:
定义CString str ;
GetDlgItem(控件ID)->GetWindowText(str);
这样str中就保存了 获取到的字符