Скрытие все создаваемых окон

Тема в разделе "WASM.WIN32", создана пользователем 2FED, 14 май 2009.

  1. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Мне нужно скрыть все создаваемые окна в моём приложение, точнее в приложение к которому приатачена моя длл. но это не суть важно.

    Я перехватил ShowWindow и в nCmdShow писал SW_HIDE, способ работает но как то через Ж..., во первых при создание окна его не видно но фокус оно получает, во вторых бывает так что при таком режиме работы с какогото хрена вываливается Explorer.exe.

    Какие идеи подскажете по скрытию окон, какие функции хучить?
     
  2. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    Хватать не ShowWindow, а ф-ции создания окон, диалогов.
     
  3. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    mrcrown но ведь при создание окна оно изначально невидимое, а потом вызывается
    ShowWindow чтобы его отобразить.
     
  4. planet

    planet New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    108
    создать свой desktop (CreateDesktop) и приатачить процесс ему. Окно случайно не с IE ?)
     
  5. barton

    barton New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2008
    Сообщения:
    164
    Адрес:
    Czechoslovakia
    Да ИЕ по-любому. И ДЛЛ уже догадываемся какая приатаченая, ещё один кработрой детектед)
    CreateDesktop/CloseDesktop (msdn)
    или перехват CreateWindowExA, коордитаны кривые ставь, чтоб за десктоп ушло
     
  6. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Спасибо за идеи, но окно не ИЕ. Коне что поинтересней ;)
     
  7. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Кое что*

    ... нафига убрали редактирование?
     
  8. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    Последовательность действий:
    1) Установить перехват ф-ий CreateWindow, CreateDialog, DialogBox. Всем перехватываемым окнам посылать WM_HIDE.
    2) Найти все окна, которые уже созданы (и поэтому они отображаются) и послать им WM_HIDE.
     
  9. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    2FED
    Да, а вот после вызова DialogBox окно уже становится видимым без вызова ShowWindow.
     
  10. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    AndreyMust19
    Наколдуйте еще и числовое значение своему сказочному WM_HIDE - и дело в шляпе.
     
  11. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    :))))
    (kero имеет в виду, что такой константы не существует. Есть SW_HIDE, используемая в ShowWindow)

    На самом деле, окну надо послать WM_SHOWWINDOW, с нужными wParam и lParam. Однако, если в соответствующих процедурах стоит обработчик, который по каким-то своим причинам не собирается скрывать окна, то этот фокус, конечно же, не пройдет. Как не пройдет и при использовании ShowWindow, потому что в конечном счете это превратится в тот же самый WM_SHOWWINDOW.
     
  12. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    А почему нельзя послать сообщение типа WM_HIDE. При получении этого события окно пропадает с экрана и с панели задач тоже.