Re: Помогите!! Очень надо!!! проблемы с получением HWND Desk
От: GDI Россия  
Дата: 19.03.04 13:39
Оценка:
Здравствуйте, PavelVSokolov, вы писали:
[]

Ну если смотреть спаем, то порядок немного другой. Попробуй так:

HWND hDesktop; //Desktop
hDesktop = ::GetDesktopWindow();
char buf[255];
int nLen;

HWND hTray1;//QuickLaunch
hTray1 = ::FindWindow("Shell_TrayWnd",NULL);
hTray1 = ::FindWindowEx(hTray1,NULL,"ReBarWindow32",NULL);
hTray1 = ::FindWindowEx(hTray1,NULL,"ToolbarWindow32",NULL); 
nLen=::GetWindowText(hTray1, buf, 255);

HWND hTray2;//Tabs
hTray2 = ::FindWindow("Shell_TrayWnd",NULL);
hTray2 = ::FindWindowEx(hTray2,NULL,"ReBarWindow32",NULL);
hTray2 = ::FindWindowEx(hTray2,NULL,"MSTaskSwWClass",NULL);
hTray2 = ::FindWindowEx(hTray2,NULL,"ToolbarWindow32",NULL);
nLen=::GetWindowText(hTray2, buf, 255);

HWND hTray3;//Tray
hTray3 = ::FindWindow("Shell_TrayWnd",NULL);
hTray3 = ::FindWindowEx(hTray3,NULL,"TrayNotifyWnd",NULL);
hTray3 = ::FindWindowEx(hTray3,NULL,"SysPager",NULL); 
hTray3 = ::FindWindowEx(hTray3,NULL,"ToolbarWindow32",NULL);
nLen=::GetWindowText(hTray3, buf, 255);


Потом следующая "конструкция" несовсем ясна:
HWND hWnd = ::GetForegroundWindow();
if ((hWnd == hDesktop) ||(hWnd == hTray1) || (hWnd == hTray2) ||
    (hWnd == hTray3))
   return;

Для чего это нужно? В этот момент ForegroundWindow может быть и не трей или десктоп, а, например, окно твоей программы!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.