Как отделить скриншот от копирования в буфер обмена в C # - PullRequest
3 голосов
/ 06 декабря 2010

У меня тут небольшая проблема.Я хочу сохранить скриншоты на рабочий стол, используя приложение, которое я создаю.Для этого мне нужно распознать, какие изображения в буфере обмена взяты из скриншота, а какие скопированы.Но я не знаю, как это сделать, и я искал ответ, но не нашел его.

Идея приложения состоит в том, что оно всегда активно в фоновом режиме и всякий раз, когда я нажимаюкнопка PrintScreen, она непосредственно сохраняет изображение на моем рабочем столе.

Ответы [ 3 ]

4 голосов
/ 06 декабря 2010

Почему бы вам просто не заставить приложение сделать снимок экрана и сохранить его для вас?

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

Вы можете создать скриншот bmp следующим образом:

Size s = Screen.PrimaryScreen.Bounds.Size;
Bitmap bmp = new Bitmap(s.Width, s.Height);
Graphics g = Graphics.FromImage(bmp);
g.CopyFromScreen(0, 0, 0, 0, s);

А затем сохраните BMP следующим образом:

bmp.Save("PATHANDFILENAME");

Обновление

Исходя из этой дополнительной информации, вы можете рассмотреть комбинацию сохранения снимка экрана и использования глобальной клавиатуры (, как предоставлено Томом ). С помощью крючка должна быть возможность захватить нажатый экран печати, а затем захватить и сохранить текущий экран. Также вы можете отменить нажатие экрана печати и предотвратить копирование экрана в буфер обмена.

1 голос
/ 06 декабря 2010

Если вы хотите отличить настоящий скриншот от фальшивого, попробуйте встроить небольшое изменение в изображение, которое будет невидимым для глаз, но вы сможете обнаружить из своего кода, например, пиксель на месте (2,2) на клиенте область формы может иметь слегка измененные значения RGB (+ 3, + 2, + 1) - что будет невидимым.

Посмотрите вверх стеганография .

0 голосов
/ 06 декабря 2010

хм интересно. Вы можете объединить этот код для прослушивания изменений в буфере обмена:

http://codeguru.earthweb.com/columns/dotnettips/article.php/c7315/

с дополнительным кодом для проверки состояния ключа.

Или, используя глобальную клавиатуру , вы можете прослушать Ctrl + C или PrtScn, а затем немедленно проверить буфер обмена. Конечно, как показывают комментарии, это не надежно, но это только начало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...