Поделиться через


Функция 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 извлекает текст заголовка окна. Если в окне нет заголовка, возвращаемое значение является пустой строкой. Это поведение выполняется по проектированию. Он позволяет приложениям вызывать 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 как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 2000 Профессиональный [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
заголовка winuser.h (включая Windows.h)
библиотеки User32.lib
DLL User32.dll
набор API ext-ms-win-ntuser-window-l1-1-4 (представлено в Windows 10 версии 10.0.14393)

См. также

концептуальные

GetWindowTextLength

Справочник

SetWindowText

WM_GETTEXT

Windows