Глобальная обработка экрана печати в Windows с помощью приложения .Net - PullRequest
0 голосов
/ 31 марта 2009

Как мне сделать мое приложение C # стандартным обработчиком «Print Screen» в Windows?

Я написал утилиту захвата экрана и в идеале хочу, чтобы она заменила обработчик экрана печати по умолчанию или иным образом имел бы уникальную комбинацию клавиш, которая бы ее вызывала.

Я знаю, как это сделать в C ++ с использованием глобальных хуков и т. Д., Но мне не ясно, как это можно сделать в .Net. Кроме того, если есть способ сделать это без использования резидентного приложения, это было бы супер.

Ответы [ 2 ]

1 голос
/ 31 марта 2009

Пока вы используете хук WM_KEYBOARD_LL для захвата ключа PrintScreen, нет никаких причин, по которым вы не можете сделать это в C #. Это один из немногих глобальных хуков, которые можно использовать в управляемом коде, поскольку он не требует внедрения DLL в каждый целевой процесс. Вместо этого контекст переключится обратно на исходное приложение для обработки.

В блоге Адама есть отличный пост о том, как настроить такой хук в C #: http://www.seesharpdot.net/?tag=wh_keyboard_ll

1 голос
/ 31 марта 2009

Почему бы не использовать AutoHotKey (OpenSource, бесплатно) со следующим скриптом?

Этот скрипт был взят из группы новостей AutoHotKey , он отобразит экран печати для использования IrfanView. Вы можете использовать его для запуска вашей программы.

~printscreen::
ifexist,%screenshot1%\irfanview.exe
    {
    run, "%screenshot1%\irfanview.exe" "/capture=0 /convert=%screenshots%\%A_now%_screenshot.jpg"
   sleep,500
   run,%screenshots%  ;open folder
   return
    }
return


~!printscreen::       ;copy only active window
ifexist,%screenshot1%\irfanview.exe
    {
...