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 集 ext-ms-win-ntuser-window-l1-1-4 (在 Windows 10 版本 10.0.14393 中引入)

请参阅

概念性

GetWindowTextLength

引用

SetWindowText

WM_GETTEXT

Windows