![]() |
sendmessage an ein Fremdprogramm löst dort kein Event aus
Hallo,
mein Problem ist folgendes; ich möchte in ein Editfeld eines anderen Programms schreiben. Das klappt auch soweit, allerdings verarbeitet das fremde Programm diese Eingabe nicht so, als wenn ich den Text manuel eintragen würde. Ich habe das ganze so versucht:
Delphi-Quellcode:
Habe das ganze auch mit WM_COPYDATA versucht, allerdings ohne Erfolg:
s := 'random';
For i := 1 to Length(s) do begin SendMessage(hwnded2, WM_CHAR, Word(s[i]), 0); end;
Delphi-Quellcode:
var
aCopyData: TCopyDataStruct; p: PChar;
Delphi-Quellcode:
Ich möchte den Tastendruck nicht über Keydown simulieren, sondern über Sendmessage senden. Kennt jemand einen Grund für mein Problem?p := 'random'; with aCopyData do begin dwData := 0; cbData := StrLen(p) + 1; lpData := p; end; SendMessage(hwnded2, WM_COPYDATA, Longint(Handle), Longint(@aCopyData)); end; |
Re: sendmessage an ein Fremdprogramm löst dort kein Event au
Zitat:
|
Re: sendmessage an ein Fremdprogramm löst dort kein Event au
Zitat:
Zitat:
|
Re: sendmessage an ein Fremdprogramm löst dort kein Event au
Zitat:
Es "steht" nur da, ohne, dass das Programm merken würde, dass es eben da steht. Hab es eben nochmal mit:
Delphi-Quellcode:
Probiert, hat aber auch nur in soweit geklappt, dass der Text dort stand, aber nicht verarbeitet wurde.for lCount := 1 To Length(AText) Do begin lScanCode := VkKeyScan(AText[lCount]); lWithShift := lScanCode and (1 shl 8) <> 0; PostMessage(hwnded2, WM_KeyDown, lScanCode, 0); end; |
Re: sendmessage an ein Fremdprogramm löst dort kein Event au
Ich vermute das kein EM_CHANGE ausgelöst wird. Frag mich aber bitte nicht warum nicht.
|
Re: sendmessage an ein Fremdprogramm löst dort kein Event au
Schau dir doch mal mit MS Spy an welche Events das Edit-Control bekommt und bilde dieses nach. Evtl. ist es nötig das das Control auch den Focus hat.
|
Re: sendmessage an ein Fremdprogramm löst dort kein Event au
Zitat:
Habs schon mit diversen klicks in und aus dem Editfeld versucht, vergeblich. |
Re: sendmessage an ein Fremdprogramm löst dort kein Event au
Welche Art von Programm ist es. Es gibt programm (Virenscanner, Firewall, ...) welche solche Art von Fernbedienung durch eigene Schutzmechanismen (z.B. Prüfung von KeyStates etc...) verhindern.
|
Re: sendmessage an ein Fremdprogramm löst dort kein Event au
Dein Ansatz mit WM_KEYDOWN ist vermutlich sogar richtig.
Kann aber sein, daß du danach auch noch ein WM_KEYUP benötigtst, da das Programm erst auf ein Keyup reagiert, was es bei dir nie bekommt. |
Re: sendmessage an ein Fremdprogramm löst dort kein Event au
Zitat:
Zitat:
Zitat:
|
Re: sendmessage an ein Fremdprogramm löst dort kein Event au
Ich glaub mit PostMessage kannst du bei Kombination WM_KEYDOWN und W_KEYUP Probleme kriegen, da
beides direkt hintereinander geschieht. Mit SendMessage würde WM_KEYDOWN verarbeitet werden bevor das nächste SendMessage das WM_KEYUP sendet. Wenn du einen Tastendruck simulieren willst, daß wirklich wie eine echte Tastatureingabe wirkt, musst du keydown UND keyup benutzen. Jeder Tastendruck besteht aus zwei Ereignissen - Drücken + Loslassen |
Re: sendmessage an ein Fremdprogramm löst dort kein Event au
Zitat:
Ich habe festegestellt, wenn ich "sendkey" verwenede funktioniert es, allerdings möchte ich nicht, dass das Programm immer im Focus ist, sonder, dass es nebenbei läuft. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz