Есть ли способ узнать исходное приложение, из которого данные были скопированы в буфер обмена Windows Forms - PullRequest
3 голосов
/ 30 октября 2009

Я использую объект буфера обмена для воспроизведения данных, скопированных в буфер обмена. Допустим, у меня есть несколько приложений, из которых я могу копировать данные в буфер обмена, такие как Excel, Блокнот и т. Д.

Я хочу знать, есть ли какая-либо функция или есть какой-нибудь способ выяснить, откуда данные собираются в примере буфера обмена, поступают ли они из Excel или блокнота или из неизвестного приложения.

Я использую C # и .Net 2.0

Ответы [ 2 ]

7 голосов
/ 05 августа 2010

Если вы используете SetClipboardViewer api для обнаружения, когда что-то копируется в буфер обмена и обрабатывает сообщение WM_DRAWCLIPBOARD, тогда вы можете использовать функцию GetClipboardOwner , чтобы найти дескриптор окна, которое инициировало операцию , Используя дескриптор, вы можете получить идентификатор процесса и путь к исполняемому файлу.

2 голосов
/ 30 октября 2009

На основании ссылки на класс буфера обмена: http://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.aspx

Вы не можете точно сказать, из какого приложения поступает содержимое в буфере обмена.

Вы можете сделать какую-то догадку, хотя. Например. Из Clipboard.ContainsText Method (TextDataFormat) вы можете определить, является ли это приложение выводом / отображением HTML, Text, RTF и т. Д.

См. http://msdn.microsoft.com/en-us/library/system.windows.forms.textdataformat.aspx

Кроме этого, я сомневаюсь, что вы можете пойти дальше.

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