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


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

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header 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