Снимок экрана

Тема в разделе "WASM.WIN32", создана пользователем simpleX, 12 апр 2009.

  1. simpleX

    simpleX New Member

    Публикаций:
    0
    Регистрация:
    31 дек 2006
    Сообщения:
    26
    Адрес:
    Россия, г. Курск
    Привествую,

    у меня такой вопрос. Требуется периодически (скажем, 10 раз в секунду) делать снимки экрана монитора. Но при этом не захватывать определенные, указанные заранее окна. Т.е. например на рабочем столе открыто 2 окна: калькулятор и пэинт. Вот на снимке окна калькулятора быть не должно. Такое реально сделать? Какие способы решения подскажете.

    Я лично пока что вижу 1 способ - прятать окна перед фотографированием экрана, а после показывать. Но тут возможны мелкие неприятности типа "мелькания" окна и т.д. Да и вообще не нравится мне етот способ, ето решение "в лоб". Есть ли обходные пути?
     
  2. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    Получи HDC нужного окна и впред...BitBlt
     
  3. simpleX

    simpleX New Member

    Публикаций:
    0
    Регистрация:
    31 дек 2006
    Сообщения:
    26
    Адрес:
    Россия, г. Курск
    а поподробнее можно?
     
  4. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
  5. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    можешь попробовать поизвращаться с объединетием и разъединением регионов (GetWindowRect и ей подобные)
     
  6. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    offtop:
    RET
    MSoft
    насколько я понимаю, нужный HDC ничего не даст - грабиться будет весь регион в том виде, в каком он отображается на экране, то есть со всеми наложенными окнами


    других способов кроме временного сокрытия окон не знаю
     
  7. kero

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

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    Если на Win OS >=2k - может, пойдет и так (когда-то здесь уже советовал):

    1) "нежелательному" окну W добавляем WS_EX_LAYERED + SetLayeredWindowAttributes,

    2) BitBlt всему экрану с параметром SRCCOPY без CAPTUREBLT, получая снимок без layered окон,

    3) BitBlt всему экрану с параметром SRCCOPY+CAPTUREBLT, получая снимок со всеми окнами,

    4) и BitBlt на WindowRect(W) 2-ого снимка - той же области 1-го снимка.

    Это - чтоб с учетом посторонних layered окон. Если же на оные плювать - просто 1) + 2).
     
  8. simpleX

    simpleX New Member

    Публикаций:
    0
    Регистрация:
    31 дек 2006
    Сообщения:
    26
    Адрес:
    Россия, г. Курск
    хмм, ваша мысль довольно любопытная
    интересно какова максимальная частота снимаемых таким образом кадров экрана...

    P.S. Кстате возможны косяки при наложении нескольких layered окон
     
  9. kero

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

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    Так и замерьте :)

    Кстати, вот утилитка для экспериментов: http://www.wasm.ru/forum/attachment.php?item=3026 из недавней ветки http://www.wasm.ru/forum/viewtopic.php?id=31473

    Само собой. Думайте :)
     
  10. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    Эмм... а поиск для кого?
    http://wasm.ru/forum/viewtopic.php?id=31473