Узнайте, поступает ли содержимое буфера обмена из Internet Explorer

Я хочу иметь возможность вставлять содержимое буфера обмена с функциональными гиперссылками в мои элементы управления Winform. Чтобы это сработало, я попытался проверить, содержит ли буфер обмена HTML, а не RTF, и затем я мог соответствующим образом проанализировать содержимое HTML. К сожалению, Internet Explorer генерирует RTF и HTML в содержимом буфера обмена, и поэтому я не могу сказать, что содержимое исходит из браузера. Microsoft Word, например, делает то же самое, и единственный способ, который я обнаружил до сих пор, чтобы отличить офисные продукты от IE, — это проверить пространство имен xmlns:o"urn:schemas-microsoft-com:office:office" в HTML-содержимом файла. буфер обмена. Я не могу просто использовать HTML во всех случаях, потому что предпочитаю RTF или просто содержимое в формате Unicode из других источников, а не из браузеров.

Есть ли способ определить, что содержимое буфера обмена поступает из определенного приложения? В моем случае из IE? До сих пор я использовал только Clipboard.Contains(TextDataFormat.HTML) и Clipboard.GetDataObject().GetFormats(), но больше ничего не нашел.


person SoftwareAsAClient    schedule 02.12.2013    source источник
comment
Что, если буфер обмена исходит из программы на базе IE? Или какая-то программа, которая решила генерировать какой-то другой HTML-контент, который вы не могли понять? Лучше опишите ошибку пользователю.   -  person Sheng Jiang 蒋晟    schedule 04.12.2013
comment
Обратите внимание, что проверка содержимого в данных (т. е. схемы XML) эффективно запускает операцию вставки и будет иметь непредвиденные последствия, такие как запуск отложенного рендеринга и вызов сетевого трафика, если копирование/вставка выполняется по сети с помощью RemDesk. или что-то еще. О чем следует помнить.   -  person Chris Thornton    schedule 13.12.2013


Ответы (1)


Вы можете использовать класс P/Invoke, чтобы получить заголовок окна вызывающего приложения, используя http://pinvoke.net/default.aspx/user32/GetWindowText.html. Для IE заголовок представляет собой имя страницы с суффиксом - Microsoft Internet Explorer, заголовок по умолчанию для этого IE.

Это пример кода, как использовать GetWindowsText C# как использовать WM_GETTEXT/ API GetWindowText

person Markus    schedule 29.06.2016