问题:我需要从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,但如果没有Delphi XE大师有答案,我会喜欢C ++或VB中的任何解决方案。
答案 0 :(得分:1)
我需要与之交谈的一个窗口是Ter32Class类 显然是一个TE编辑控件,一个不继承的编辑器 标准的RichText控件
和
与此控件交谈的已发布方法是通过它的DLL
所以除非某些内容发生了变化(帖子是2006),否则你需要使用它的dll来获取文字。
From Sub Systems (TE Edit control website)
应用程序界面功能
GetTerBuffer:检索窗口文本
处理GetTerBuffer(hWnd,size)