GetWindowTextA 函数 (winuser.h)

如果指定窗口的标题栏有一个) ,则将其文本复制到缓冲区中 (。 如果指定的窗口是控件,则会复制控件的文本。 但是, GetWindowText 无法检索另一个应用程序中控件的文本。

语法

int GetWindowTextA(
  [in]  HWND  hWnd,
  [out] LPSTR lpString,
  [in]  int   nMaxCount
);

参数

[in] hWnd

类型:HWND

包含文本的窗口或控件的句柄。

[out] lpString

类型: LPTSTR

将接收文本的缓冲区。 如果字符串的长度或长于缓冲区,则字符串将被截断,并用 null 字符终止。

[in] nMaxCount

类型: int

要复制到缓冲区的最大字符数,包括 null 字符。 如果文本超出此限制,则会将其截断。

返回值

类型: int

如果函数成功,则返回值是复制字符串的长度(以字符为单位),不包括终止 null 字符。 如果窗口没有标题栏或文本,如果标题栏为空,或者窗口或控件句柄无效,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

此函数无法检索另一个应用程序中编辑控件的文本。

注解

如果目标窗口由当前进程拥有, GetWindowText 将导致 将WM_GETTEXT 消息发送到指定的窗口或控件。 如果目标窗口由另一个进程拥有并具有标题, GetWindowText 将检索窗口标题文本。 如果窗口没有标题,则返回值为 null 字符串。 此行为是设计使然。 如果拥有目标窗口的进程未响应,则应用程序无需响应即可调用 GetWindowText 。 但是,如果目标窗口未响应并且它属于调用应用程序, GetWindowText 将导致调用应用程序变得无响应。

若要在另一进程中检索控件的文本,请直接发送 WM_GETTEXT 消息,而不是调用 GetWindowText

示例

以下示例代码演示了对 GetWindowTextA 的调用。

hwndCombo = GetDlgItem(hwndDlg, IDD_COMBO); 
cTxtLen = GetWindowTextLength(hwndCombo); 

// Allocate memory for the string and copy 
// the string into the memory. 

pszMem = (PSTR) VirtualAlloc((LPVOID) NULL, 
    (DWORD) (cTxtLen + 1), MEM_COMMIT, 
    PAGE_READWRITE); 
GetWindowText(hwndCombo, pszMem, 
    cTxtLen + 1); 

若要在上下文中查看此示例,请参阅 “发送消息”。

注意

winuser.h 标头将 GetWindowText 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非中性编码别名与非非编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅 函数原型的约定

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 winuser.h (包括 Windows.h)
Library User32.lib
DLL User32.dll
API 集 Windows 10版本 10.0.14393) 中引入 ext-ms-win-ntuser-window-l1-1-4 (

请参阅

概念性

GetWindowTextLength

参考

SetWindowText

WM_GETTEXT

Windows