В настоящее время я запускаю глобальный хук, который следит за определенным окном, а затем закрывает его с помощью PostMessage(hWnd,WM_CLOSE,0,0);
DLL, содержащей хук:
LRESULT CALLBACK MyFunc(int code, WPARAM wParam, LPARAM lParam)
{
switch(code)
{
case HCBT_CREATEWND:
{
HWND hWnd = (HWND)wParam;
//GetWindowText(hWnd, wintext, 80) returns nothing
//if ( strcmp(wintext, ("Kaspersky Internet Security: license notification")) == 0 )
// {
// Beep(70,100);
// PostMessage(hWnd,WM_CLOSE,0,0);
// }
break;
}
case HCBT_ACTIVATE:
{
HWND hWnd = (HWND)wParam;
GetWindowText(hWnd, wintext, 80);
if ( strcmp(wintext, ("Kaspersky Internet Security: license notification")) == 0 )
{
Beep(70,100);
PostMessage(hWnd,WM_CLOSE,0,0);
}
break;
}
}
...
Как видите, я использую GetWindowText(hWnd, wintext, 80)
, чтобы определить по заголовку окна, нужно ли закрыть текущее активное окно. Я закрываю окно, когда оно активируется, а не когда оно создается. Я хотел бы закрыть окно, когда оно создается, то есть когда HCBT_CREATEWND
истинно.
Дело в том, что я не могу использовать GetWindowText(hWnd, wintext, 80)
для получения заголовка окна и тем самым определить, должно ли окно быть закрыто, потому что при вызове HCBT_CREATEWND
окно не было полностью создан и не имеет заголовка, GetWindowText(hWnd, wintext, 80)
ничего не возвращает.
Подытожу мой вопрос: можно ли получить заголовок окна или каким-то другим способом определить, что это за окно, когда HCBT_CREATEWND
истинно?