Заблокировать перерисовку окна

Тема в разделе "WASM.WIN32", создана пользователем _Juicy, 15 июл 2011.

  1. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    Нужно на время заблокировать программе возможность перерисовывать содержимое определенного окна.
    Никаких сообщений окну не посылается, т.е. перерисовывается оно не по WM_PAINT, а по собственному внутреннему событию.
    Как это можно сделать?

    В идеале - нужно, чтобы оно сохраняло текущее изображение при сворачивании, изменении размера етс., но не добавляло ничего нового.
     
  2. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    1. Найти, где хранится DC окна, куда идёт отрисовка, и временно подменить на что-нибудь левое (в идеале - на DC своего bitmap'а нужного размера в памяти)
    2. найти процедуру, выполняющую отрисовку (обычно, хоть и не всегда, отрисовку делают за один раз), и воткнуть на её входе RET. Потом - восстановить (остановку потоков добавить по вкусу).
    3. Дизассемблировать, выяснить, что за событие, и запатчить его в хлам.
     
  3. klzlk

    klzlk New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2011
    Сообщения:
    449
    o Подмена контекста, см. NtUserPrintWindow().
    o Установка фильтра. Это всевозможные хуки, сабклассинг и пр.
    o Саспенд потоков.
     
  4. litrovith

    litrovith Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    509
    А перерисовывать хотя бы старое окно кто будет, Пушкин?
    Squash, что то вы недоговариваете...
     
  5. klzlk

    klzlk New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2011
    Сообщения:
    449
    litrovith
    Да, вы правы. Я этого не заметил в названии топика.
     
  6. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.208
    litrovith
    У меня написано - в идеале оно должно перерисовываться, но не обновляться. Но можно и без перерисовки, время блокировки небольшое, авось пользователь и не заметит.

    Чорт, палево :)
     
  7. litrovith

    litrovith Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    509
    Ну если
    , тогда хватит и суспенда потоков, или отключение монитора аха-ха-ха ))))
    В юзермоде НОРМАЛЬНО сделать такое нереально.
     
  8. ASMatic

    ASMatic New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2010
    Сообщения:
    233
    перехватываем CreateCompatibleDC() BitBlt()\StachBlt() - чего не хотите видеть в окне, ясно откуда берется(ресурсы\сеть..)берем айдихи\указатели на память - видем что создается контекст девайса, если из нашего сорса - запоминаем DC и при копировании просто ретурнимся.
    litrovith
     
  9. litrovith

    litrovith Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    509
    ASMatic, безпалева? Не мелите ерундой.
    ...в юзермоде? Даж жена засмеялась...
     
  10. ASMatic

    ASMatic New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2010
    Сообщения:
    233
    litrovith
    для начала - о безпалевности речи небыло. а по поводу перехватов и без палева - многое в юм перехватывается так что вы со своей жаной будете кукать неделю и не понимать какова хера у вас контакты обновились а у других нет.)
     
  11. litrovith

    litrovith Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    509
    ASMatic, флаг тебе в место, которым думаешь, умник! Какие контакты? у меня сроду антивируса не стояло на реальной системе, зачем мне твои контакты, мАлыш???
     
  12. ASMatic

    ASMatic New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2010
    Сообщения:
    233
    контакты были для примера, ав твой меня ваще не волнует - ты б лучше чот по теме чем флудить.
    *я перестал. ненавижу флудеров!

    да, еще "флаг тебе в место" - не вытаскивай, а то сквозить будет
     
  13. klzlk

    klzlk New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2011
    Сообщения:
    449
    litrovith
    А что в этом такого не реального ?
     
  14. Ezrah

    Ezrah Member

    Публикаций:
    0
    Регистрация:
    22 мар 2011
    Сообщения:
    411
    Можно сделать снимок экрана, создать второй рабочий стол, установить ему "обои". Извращение.
     
  15. klzlk

    klzlk New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2011
    Сообщения:
    449
    Ezrah
    В качестве примера можно привести многослойные(анимированные) окна. Это например персонажи в ворде.
     
  16. litrovith

    litrovith Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    509
    klzlk, в том, что в етом варианте всё расчитано на то, что авось пользователь и не заметит.
    В конце концов в юзермоде ето называется клоунада.
    Понятно, что каждый останется при своём мнении...

    ТС, читай пост #4
     
  17. klzlk

    klzlk New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2011
    Сообщения:
    449
  18. litrovith

    litrovith Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    509
    klzlk, лесом, лесом.
    особенно тебя!