Пользователь может запустить любую программу. У некоторых окно появляется не сразу, а с задержкой в несколько секунд. Надо поймать этот момент, чтобы закрыть окно. Программа запускается из раздела RunOnce при создании новой учётной записи. У меня есть список идентификаторов процессов, запущенных под учётной записью пользователя.
/OFFTOP Начинающим хакерам: Я чего-то умею, объяснить не сумею. Не могу я похакать, а умею лишь плакать -------------------------------------------------------------------------------- 1) Бессмысленное желание - пока окно не открыто/не появилось его закрыть нельзя. 2) Если фраза про RunOnce имеет отношение к закрытию окна, так надо было с этой фразы и начинать. Иначе эти две фразы висят в воздухе. Что-то запускается и мы знаем список процессов. В чем вопрос?
Структура моей программы: 1 отключение клавиатуры и мыши; 2 закрытие всех окошек; 3 основная часть; 4 включение устройств ввода-вывода. Программа запускается из раздела RunOnce при создании новой учётной записи. Если перед самым появлением рабочего стола пользователь начнёт судорожно щёлкать, например, по значку мои документы, то окно появляется на экране, но не сразу, а со значительной задержкой. Кроме того, этих окошек может быть несколько штук. Это такой глюк у проводника? Окна появляются в самый неподходящий момент - когда выполняется основная часть программы. Если установить задержку между первой и второй частью в 3 секунды, то экран очищается от окошек. Без неё - нет. Нужно поймать тот момент, когда окна появляются на экране.
Неправильно сформулировао. Окна у тебя могут все время появлятся. Значит нужно постоянное закрытие или закрытие до момента, когда ты перехватил мышь и клавиатуру. Значит два варианта : один это пауза(ничего не гарантирует) и второй - это поставить хук на создание окон и не давать им создаваться... А ловить окна - это неправильно. Не надо им вообще дать появится. Ну правда можно хукать рисование окна, но это тоже НЕПРАВИЛЬНО.
Функция SetWindowsHookEx с параметром WH_CBT не ловит консольные окна. Как узнать идентификатор процесса перехваченного окна?
Простейшая процедура повторного вызова Код (Text): CBTProc proc nCode:DWORD,wParam:DWORD,lParam:DWORD xor eax,eax inc eax ret CBTProc endp Все окна блокируются, кроме консольных. Добавляю в процедуру функцию Код (Text): CBTProc proc nCode:DWORD,wParam:DWORD,lParam:DWORD push ecx push esp push wParam call GetWindowThreadProcessId pop ecx xor eax,eax inc eax ret CBTProc endp Окна не блокируются.