WM_Copy, wm_gettext и wm_keydown терпят неудачу? - PullRequest
2 голосов
/ 12 августа 2011

Проблема: мне нужно получить выделенный текст из окна в приложении Windows (не моей программе).Я делаю свою работу в Delphi XE, и программное обеспечение, к которому я пытаюсь получить доступ, является клугем, созданным за последние 15 лет на C, C ++, VB, и кто знает, что еще.У меня нет исходного кода.Поле редактирования (памятка RTF), который я пытаюсь прочитать, относится к классу «Ter32Class».Когда я использую wm_copy, в буфер обмена ничего не попадает.когда я использую wm_gettext, ничего.Когда я использую команды wm_keydown (для имитации Ctrl - Ins или Ctrl - C ) ничего не происходит,Обратите внимание, что я могу заставить все эти альтернативы работать в WordPad, Notepad и FireFox, но не в этом приложении (или, кстати, в OpenOffice, но это не проблема).Единственный способ, которым я смог программно получить текст из этого поля, - использовать autohotkey с простой командой "send ^c".Хотя это работает, это не элегантно.ПОМОЩЬ?!?

Дополнительная информация: Иерархия окон: Ter32Class является дочерним элементом OI_Mdi, который является дочерним элементом MDIClient, который является дочерним элементом OI_Window.Я углубляюсь, чтобы получить соответствующий дескриптор, так как он будет отвечать на команду вставки.

Я использую Delphi XE, но мне бы понравилось любое решение на C ++ или VB, если у гуру Delphi XE нет ответа.

1 Ответ

1 голос
/ 12 августа 2011

Из Quick Macros Forum

Одно из окон, с которыми мне нужно поговорить, относится к классу Ter32Class, который, по-видимому, является TE Edit Control, редактором, который не наследуетиз стандартного RichText Control

и

Опубликованный метод общения с этим элементом управления осуществляется через его DLL

, поэтому, если что-то не изменилось (публикация 2006 г.) , похоже, вам понадобится использовать dll для получения текста.

Из подсистем (TE Edit control website)

Функции интерфейса приложения

GetTerBuffer: получение текста окна
HANDLE GetTerBuffer (hWnd, размер)

...