WM_Copy、wm_gettext 和 wm_keydown 失败?

发布于 2024-11-29 03:05:01 字数 748 浏览 0 评论 0原文

问题:我需要从 Windows 应用程序(不是我的程序)的窗口中获取选定的文本。我正在 Delphi XE 中工作,我尝试访问的软件是过去 15 年中使用 C、C++、VB 以及谁知道还有什么其他语言构建的一个集合体。我没有源代码。我尝试阅读的编辑框(RTF 备忘录)属于“Ter32Class”类。当我使用 wm_copy 时,剪贴板中没有任何内容。当我使用 wm_gettext 时,什么也没有。当我使用 wm_keydown 命令时(模拟 Ctrl-InsCtrl-< kbd>C)没有任何反应。请注意,我可以让所有这些替代方案在写字板、记事本和 FireFox 中工作,但不能在这个应用程序中使用(顺便说一句,也可以在 OpenOffice 中使用,但这不是问题)。我能够以编程方式从此框中获取文本的唯一方法是使用 autohotkey 和简单的“send ^c”命令。虽然它有效,但它并不优雅。帮助?!?

更多信息:窗口层次结构:Ter32Class 是 OI_Mdi 的子级,OI_Mdi 是 MDIClient 的子级,而 MDIClient 是 OI_Window 的子级。我正在深入获取适当的句柄,因为它将响应粘贴命令。

我正在使用 Delphi XE,但如果 Delphi XE 专家没有答案,我会喜欢 C++ 或 VB 中的任何解决方案。

The problem: I need to obtain the selected text from a window in a Windows application (not my program). I am doing my work in Delphi XE and the software I am attempting to access is a kluge built over the past 15 years with C, C++, VB and who knows what else. I do not have the source code. The edit box (an RTF memo) I am attempting to read is of the class "Ter32Class". When I use wm_copy, nothing goes to the clipboard. when I use wm_gettext, nothing. When I use wm_keydown commands (to simulate Ctrl-Ins or Ctrl-C) nothing happens. Note that I can get all of these alternatives to work in wordpad, notepad, and FireFox but not this application (or OpenOffice, incidentally, but that's not the issue). The only way I have been able to programmatically obtain text from this box is to use autohotkey with the simple "send ^c" command. While it works, it is inelegant. HELP?!?

More information: Window hierarchy: Ter32Class is a child of OI_Mdi which is a child of MDIClient, which is a child of OI_Window . I am drilling down to obtain the appropriate handle as it will respond to a paste command.

I am using Delphi XE but I'd love any solution in C++ or VB if no Delphi XE gurus have the answer.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

来自快速宏论坛

我需要对话的窗口之一是 Ter32Class 类
显然是一个 TE 编辑控件,一个不继承自的编辑器
标准 RichText 控件

已发布的与该控件对话的方法是通过它的 DLL

,因此除非发生了某些更改(发布时间为 2006 年),否则您似乎需要使用其 DLL 来获取文本。

来自子系统(TE Edit 控制网站)

应用程序接口函数

GetTerBuffer:检索窗口文本
HANDLE GetTerBuffer(hWnd, 大小)

From Quick Macros Forum

One of the windows I need to talk to is of class Ter32Class which
apparently is a TE Edit Control, an editor that doesn't inherit from
the standard RichText Control

and

The published method of talking to this control is via it's DLL

so unless something has changed (post is 2006), it appears you'll need to use it's dll to get the text.

From Sub Systems (TE Edit control website)

Application Interface functions

GetTerBuffer: Retrieve Window Text
HANDLE GetTerBuffer(hWnd, size)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文