2009-10-30 3 views
3

Я использую объект Clipboard для воспроизведения данных, скопированных в буфер обмена. Допустим, у меня мало приложений, из которых я могу скопировать данные в буфер обмена, например, excel, блокнот и т. Д.Есть ли способ найти исходное приложение, из которого данные были скопированы в буфер обмена? Windows Forms

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

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

ответ

1

на основе эталонного класса Clipboard: 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 См

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

6

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