Про screensaver ...
От: Alex001 http://www.gradural.ru/alex/
Дата: 21.06.02 05:19
Оценка:
Написал свой screensaver (переделал из SDK). Теперь хочу отслеживать какие прогаммы работают в момент его активизации и запрещать его запуск если работает что-то критичное, например Media Player . Пытался делать это при WM_CREATE, но в этот момент окна всех приложений уже погашены и перебор GetTopWindow..GetNextWindow ничего не дает!!! Видимо надо с процессами поработать, но как? Подскажите как решить эту проблему. Заранее спасибо!
Re: Про screensaver ...
От: Afx  
Дата: 21.06.02 07:19
Оценка:
Здравствуйте Alex001, Вы писали:

A>Написал свой screensaver (переделал из SDK). Теперь хочу отслеживать какие прогаммы работают в момент его активизации и запрещать его запуск если работает что-то критичное, например Media Player :)) . Пытался делать это при WM_CREATE, но в этот момент окна всех приложений уже погашены и перебор GetTopWindow..GetNextWindow ничего не дает!!! Видимо надо с процессами поработать, но как? Подскажите как решить эту проблему. Заранее спасибо!


Смотри ToolHelp функции
Re: Про screensaver ...
От: Олег Куликов США  
Дата: 21.06.02 08:07
Оценка:
Здравствуйте Alex001, Вы писали:

A>... и перебор GetTopWindow..GetNextWindow ничего не дает!!!


А так пробовал? Тоже не работает?


HWND hwnd = GetWindow( m_hWnd, GW_HWNDFIRST );
while (hwnd != NULL)
{
  //Проверка 
  //...
  hwnd = GetWindow( hwnd, GW_HWNDNEXT );
}
И немедленно выпил...
Re[2]: Про screensaver ...
От: Alex001 http://www.gradural.ru/alex/
Дата: 21.06.02 08:16
Оценка:
Здравствуйте Олег Куликов, Вы писали:

ОК>А так пробовал? Тоже не работает?



ОК>
ОК>HWND hwnd = GetWindow( m_hWnd, GW_HWNDFIRST );
ОК>while (hwnd != NULL)
ОК>{
ОК>  //Проверка 
ОК>  //...
ОК>  hwnd = GetWindow( hwnd, GW_HWNDNEXT );
ОК>}
ОК>


Я же говорю все окна погашены и поэтому Z-order пуст
Re[2]: Про screensaver ...
От: Alex001 http://www.gradural.ru/alex/
Дата: 21.06.02 09:16
Оценка:
Здравствуйте Afx, Вы писали:

Afx>Смотри ToolHelp функции


Спасибо, получилось
Re[3]: Про screensaver ...
От: Олег Куликов США  
Дата: 21.06.02 10:10
Оценка:
Здравствуйте Alex001, Вы писали:

A>Я же говорю все окна погашены и поэтому Z-order пуст


Это не так, поверь. С чего ему быть пустым? Твой сэйвер просто рисуется поверх существующих окон.
GetTopWindow ничего не находит, т.к. она ищет дочерние окна твоего сэйвера. Их, возможно, у него нет, вот z-order и пуст. У меня она тоже ничего не нашла
И немедленно выпил...
Re[4]: Про screensaver ...
От: vasketsov Россия http://ntprog.by.ru
Дата: 21.06.02 12:38
Оценка: 6 (1)
Здравствуйте Олег Куликов, Вы писали:

ОК>Здравствуйте Alex001, Вы писали:


A>>Я же говорю все окна погашены и поэтому Z-order пуст


ОК>Это не так, поверь. С чего ему быть пустым? Твой сэйвер просто рисуется поверх существующих окон.

ОК>GetTopWindow ничего не находит, т.к. она ищет дочерние окна твоего сэйвера. Их, возможно, у него нет, вот z-order и пуст. У меня она тоже ничего не нашла
ОК>

окон других нет, потому что ScreenSaver — это совсем другой десктоп в NT.
потому перебором окон это не решить.
надо процессы перебирать, что по всей видимости было удачно сделано.
Васкецов Сергей
http://registry.km.ru
Re[2]: Про screensaver ...
От: Аноним  
Дата: 21.06.02 14:23
Оценка:
Здравствуйте Afx, Вы писали:

Afx>Здравствуйте Alex001, Вы писали:


A>>Написал свой screensaver (переделал из SDK). Теперь хочу отслеживать какие прогаммы работают в момент его активизации и запрещать его запуск если работает что-то критичное, например Media Player :)) . Пытался делать это при WM_CREATE, но в этот момент окна всех приложений уже погашены и перебор GetTopWindow..GetNextWindow ничего не дает!!! Видимо надо с процессами поработать, но как? Подскажите как решить эту проблему. Заранее спасибо!


Afx>Смотри ToolHelp функции


toolhelp функции есть только в Win9x и Win2000, в NT их нет. в NT можно использовать EnumProcesses из PSAPI.dll
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.