delphiautohotkeydelphi-xesendmessagete-edit

WM_Copy, wm_gettext and wm_keydown fail?


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.


Solution

  • 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)