Здравствуйте, 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 может быть и не трей или десктоп, а, например, окно твоей программы!