Hallo Leute,
ich habe die Suchfunktion und Google schon bemüht aber alle gefundenen Lösungsansätze haben
mir leider nicht geholfen.
Vielleicht habt ihr ja einen Tipp:
Ich möchte an den Text aus einer fremden Anwendung kommen. Wie ist mir im Prinzip egal
Die Anwendung ist die Entwicklungsumgebung der Sprache NATURAL.(wie das aussieht, siehe Bild 1)
Ich habe alle möglichen Handles im Zugriff.
Die Fensterstruktur könnt' ihr auf Bild 2 sehen.
Der Text an den ich ran möchte, steht in der Fensterklasse "PgmEdtEditWin"
Die Properties des Fensters seht ihr in Bild 3 bis 5.
Wie es aussieht, hat das Fenster keine weiteren Fenster(Edits etc), also muss der Text ja wohl "da drin stecken"
Meine Idee war, an den Text über die Zwischenablage zu kommen.
Aber alle meine Versuche mit WM_COPY bzw. Tasten senden sind gescheitert.
Passiert nix
Etwas erschwerend kommt hinzu, dass mein Code per Hook aufgerufen wird.. ich weiß nicht, ob das einen Einfluss hat(Taste senden etc.)
(der Hook reagiert auf die rechte Maustaste bzw. auf das sich dann öffnende Popupmenü)
Hier mal ein Stück Code(ist nicht vollständig!)
Delphi-Quellcode:
if nCode = HC_ACTION then
begin
fillchar(cwps,Sizeof(CWPStruct),0);
CopyMemory(@cwps, Pointer(lParam), SizeOf(CWPSTRUCT));
GetClassName(cwps.hwnd, szClassName, SizeOf(szClassName));
klasse := szClassName;
if pos('NIDE', klasse) > 0 then
begin
case cwps.message of
WM_INITMENU:
begin
focus := getfocus;
GetClassName(focus, szClassName, SizeOf(szClassName));
klasse := szClassName;
if klasse = 'PgmEdtEditWin' then
begin
SendMessage(focus,WM_COPY , 0, 0);
s := clipboard.AsText;
MessageBox(0,pchar(s),'Info',0);
// STRG A und STRG C senden
Keybd_Event(VK_CONTROL,0,0,0);
Keybd_Event(byte('A'),0,0,0);
Keybd_Event(byte('A'),0,KEYEVENTF_KEYUP,0);
Keybd_Event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);
sleep(200);
Keybd_Event(VK_CONTROL,0,0,0);
Keybd_Event(byte('C'),0,0,0);
Keybd_Event(byte('C'),0,KEYEVENTF_KEYUP,0);
Keybd_Event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);
s := clipboard.AsText;
MessageBox(0,pchar(s),'Info',0);
end;
end;
Habt ihr eine Idee?
Wenn ich per Winspector die Messages anschaue, die bei einem manuellen STRG A + C ausgelöst werden, sind da ein
Haufen WM_USER+Zahl dabei aber kein WM_COPY
Danke schon mal