Помогите!! Очень надо!!! проблемы с получением HWND Desktop
От: PavelVSokolov Россия http://www.edgebeyond.com/
Дата: 19.03.04 10:48
Оценка:
Приветсвую, знатоки!!!

Проблема следующая. Есть программка, которая меняет свойства окон. Ну так вот, я хотел-бы, что бы окно десктопа, трея и вообще все нижней строчки не менялось. Как отловить соответсвующие хеадеры.Сейчас сделано так, но не работет.

    HWND hDesktop; //Desktop
    hDesktop = ::GetDesktopWindow();

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

    HWND hTray2;//Tabs
    hTray2 = ::FindWindow("Shell_TrayWnd",NULL);
    hTray2 = ::FindWindowEx(hTray2,NULL,"ReBarWindow32",NULL);
    hTray2 = ::FindWindowEx(hTray2,NULL,"SysTabControl32",NULL); 

    HWND hTray3;//Tray
    hTray3 = ::FindWindow("Shell_TrayWnd",NULL);
    hTray3 = ::FindWindowEx(hTray3,NULL,"TrayNotifyWnd",NULL);
    hTray3 = ::FindWindowEx(hTray3,NULL,"ToolbarWindow32",NULL); 

    HWND hWnd = ::GetForegroundWindow();
    if ((hWnd == hDesktop) ||
        (hWnd == hTray1) ||
        (hWnd == hTray2) ||
        (hWnd == hTray3))
        return;


пробовал так:

    HWND hDesktop; //Desktop
    hDesktop = ::FindWindow("Progman",NULL);
    hDesktop = ::FindWindowEx(hDesktop,NULL,"SHELLDLL_DefView",NULL);
    hDesktop = ::FindWindowEx(hDesktop,NULL,"SysListView32",NULL);

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

    HWND hTray2;//Tabs
    hTray2 = ::FindWindow("Shell_TrayWnd",NULL);
    hTray2 = ::FindWindowEx(hTray2,NULL,"ReBarWindow32",NULL);
    hTray2 = ::FindWindowEx(hTray2,NULL,"SysTabControl32",NULL); 

    HWND hTray3;//Tray
    hTray3 = ::FindWindow("Shell_TrayWnd",NULL);
    hTray3 = ::FindWindowEx(hTray3,NULL,"TrayNotifyWnd",NULL);
    hTray3 = ::FindWindowEx(hTray3,NULL,"ToolbarWindow32",NULL); 

    HWND hWnd = ::GetForegroundWindow();
    if ((hWnd == hDesktop) ||
        (hWnd == hTray1) ||
        (hWnd == hTray2) ||
        (hWnd == hTray3))
        return;


т.е. hWnd не совпадает ни с одним из нужных мне окон, хотя применение нового стиля идет именно к нему (к рабочему столу, например) Что делать?
Just dream can be infinity.
ICQ:77405006
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.