2012-01-07 3 views
0

Я хочу, чтобы отобразить название диалогового окна:Получение дескриптора текущего окна GetWindowText?

HWND hWnd = ::GetActiveWindow(); 
char cc[101]; 
::GetWindowText(hWnd,cc,100); 
MessageBox(cc); 

но результат получается пустой «».

не уверен, что не так ??

+0

Похоже плохой дизайн. Если модуль должен взаимодействовать с окном, ему должен быть предоставлен дескриптор и он не должен угадывать. –

ответ

1

По MSDN:

Получает дескриптор окна для активного окна, прикрепленного к очереди сообщений вызывающего потока.

Это означает, что если поток, который вы вызываете из функции, не принадлежит ни одному окну, функция завершится с ошибкой.

Возможно, вы, скорее всего, захотите GetForegroundWindow.

0

Это может наступить немного поздно, но в любом случае. Если вы хотите в любое время получить текущее (активное) окно в системе, лучший подход - использовать процедуру, реализованную в DLL, а затем установить глобальный крючок, который вызывает эту процедуру.

Следующие ресурсы весьма полезны:

  1. Creating and using your DLL
  2. An overview on Hooks
Смежные вопросы