окно отображается с задержкой

Тема в разделе "WASM.BEGINNERS", создана пользователем gale1238, 12 окт 2011.

  1. gale1238

    gale1238 New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2009
    Сообщения:
    72
    Пользователь может запустить любую программу. У некоторых окно появляется не сразу, а с задержкой в несколько секунд. Надо поймать этот момент, чтобы закрыть окно.
    Программа запускается из раздела RunOnce при создании новой учётной записи. У меня есть список идентификаторов процессов, запущенных под учётной записью пользователя.
     
  2. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    /OFFTOP
    Начинающим хакерам:
    Я чего-то умею, объяснить не сумею. Не могу я похакать, а умею лишь плакать :)
    --------------------------------------------------------------------------------
    1)
    Бессмысленное желание - пока окно не открыто/не появилось его закрыть нельзя.
    2) Если фраза про RunOnce имеет отношение к закрытию окна, так надо было с этой фразы и начинать. Иначе эти две фразы висят в воздухе. Что-то запускается и мы знаем список процессов. В чем вопрос?
     
  3. gale1238

    gale1238 New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2009
    Сообщения:
    72
    Структура моей программы:
    1 отключение клавиатуры и мыши;
    2 закрытие всех окошек;
    3 основная часть;
    4 включение устройств ввода-вывода.
    Программа запускается из раздела RunOnce при создании новой учётной записи.
    Если перед самым появлением рабочего стола пользователь начнёт судорожно щёлкать, например, по значку мои документы, то окно появляется на экране, но не сразу, а со значительной задержкой. Кроме того, этих окошек может быть несколько штук.
    Это такой глюк у проводника?
    Окна появляются в самый неподходящий момент - когда выполняется основная часть программы. Если установить задержку между первой и второй частью в 3 секунды, то экран очищается от окошек. Без неё - нет.
    Нужно поймать тот момент, когда окна появляются на экране.
     
  4. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Неправильно сформулировао. Окна у тебя могут все время появлятся. Значит нужно постоянное закрытие или закрытие до момента, когда ты перехватил мышь и клавиатуру.
    Значит два варианта : один это пауза(ничего не гарантирует) и второй - это поставить хук на создание окон и не давать им создаваться... А ловить окна - это неправильно. Не надо им вообще дать появится. Ну правда можно хукать рисование окна, но это тоже НЕПРАВИЛЬНО.
     
  5. gale1238

    gale1238 New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2009
    Сообщения:
    72
    Функция SetWindowsHookEx с параметром WH_CBT не ловит консольные окна.
    Как узнать идентификатор процесса перехваченного окна?
     
  6. gale1238

    gale1238 New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2009
    Сообщения:
    72
    Простейшая процедура повторного вызова
    Код (Text):
    1. CBTProc proc nCode:DWORD,wParam:DWORD,lParam:DWORD
    2.     xor eax,eax
    3.     inc eax
    4.     ret
    5. CBTProc endp
    Все окна блокируются, кроме консольных.
    Добавляю в процедуру функцию
    Код (Text):
    1. CBTProc proc nCode:DWORD,wParam:DWORD,lParam:DWORD
    2.     push ecx
    3.         push esp
    4.         push wParam
    5.     call GetWindowThreadProcessId
    6.     pop ecx
    7.     xor eax,eax
    8.     inc eax
    9.     ret
    10. CBTProc endp
    Окна не блокируются.