AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi sendmessage an ein Fremdprogramm löst dort kein Event aus
Thema durchsuchen
Ansicht
Themen-Optionen

sendmessage an ein Fremdprogramm löst dort kein Event aus

Ein Thema von Periander · begonnen am 10. Jun 2009 · letzter Beitrag vom 10. Jun 2009
Antwort Antwort
Seite 1 von 2  1 2      
Periander

Registriert seit: 27. Sep 2006
16 Beiträge
 
#1

sendmessage an ein Fremdprogramm löst dort kein Event aus

  Alt 10. Jun 2009, 12:49
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:
   s := 'random';
   For i := 1 to Length(s) do
   begin
   SendMessage(hwnded2, WM_CHAR, Word(s[i]), 0);
   end;
Habe das ganze auch mit WM_COPYDATA versucht, allerdings ohne Erfolg:

Delphi-Quellcode:
  var
  aCopyData: TCopyDataStruct;
  p: PChar;
Delphi-Quellcode:

  p := 'random';

  with aCopyData do begin
    dwData := 0;
    cbData := StrLen(p) + 1;
    lpData := p;
  end;

   SendMessage(hwnded2, WM_COPYDATA, Longint(Handle),
              Longint(@aCopyData));
   end;
Ich möchte den Tastendruck nicht über Keydown simulieren, sondern über Sendmessage senden. Kennt jemand einen Grund für mein Problem?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: sendmessage an ein Fremdprogramm löst dort kein Event au

  Alt 10. Jun 2009, 12:50
Zitat von Periander:
Ich möchte den Tastendruck nicht über Keydown simulieren, sondern über Sendmessage senden. Kennt jemand einen Grund für mein Problem?
Ich tipp mal drauf das das Programm auf KeyDown-Messages die Abarbeitung anstößt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: sendmessage an ein Fremdprogramm löst dort kein Event au

  Alt 10. Jun 2009, 12:51
Zitat von Periander:
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.
Was heißt das und was möchtest du erreichen?

Zitat:
Habe das ganze auch mit WM_COPYDATA versucht, allerdings ohne Erfolg:
Wenn der Empfänger die nachricht nicht verarbeitet, kann auch nichts passieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Periander

Registriert seit: 27. Sep 2006
16 Beiträge
 
#4

Re: sendmessage an ein Fremdprogramm löst dort kein Event au

  Alt 10. Jun 2009, 12:54
Zitat von Luckie:
Zitat von Periander:
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.
Was heißt das und was möchtest du erreichen?
D.h. Das in dem Editfeld zwar die Eingabe "random" erscheint, aber nicht den gleichen effekt erzeugt, als wenn ich "random" reingeschrieben hätte.
Es "steht" nur da, ohne, dass das Programm merken würde, dass es eben da steht.


Hab es eben nochmal mit:

Delphi-Quellcode:
  
  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;
Probiert, hat aber auch nur in soweit geklappt, dass der Text dort stand, aber nicht verarbeitet wurde.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: sendmessage an ein Fremdprogramm löst dort kein Event au

  Alt 10. Jun 2009, 13:14
Ich vermute das kein EM_CHANGE ausgelöst wird. Frag mich aber bitte nicht warum nicht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: sendmessage an ein Fremdprogramm löst dort kein Event au

  Alt 10. Jun 2009, 13:16
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Periander

Registriert seit: 27. Sep 2006
16 Beiträge
 
#7

Re: sendmessage an ein Fremdprogramm löst dort kein Event au

  Alt 10. Jun 2009, 13:18
Zitat von Luckie:
Ich vermute das kein EM_CHANGE ausgelöst wird. Frag mich aber bitte nicht warum nicht.
ja, sowas habe ich mir auch schon gedacht. Hat jemand ne Idee, wie ich sowas anderweitig noch provozieren kann?
Habs schon mit diversen klicks in und aus dem Editfeld versucht, vergeblich.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: sendmessage an ein Fremdprogramm löst dort kein Event au

  Alt 10. Jun 2009, 13:29
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#9

Re: sendmessage an ein Fremdprogramm löst dort kein Event au

  Alt 10. Jun 2009, 13:33
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.
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Periander

Registriert seit: 27. Sep 2006
16 Beiträge
 
#10

Re: sendmessage an ein Fremdprogramm löst dort kein Event au

  Alt 10. Jun 2009, 13:33
Zitat von Bernhard Geyer:
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.
Keines dieser Programme. Das ist ein ganz normales Programm, denke nicht, dass dort jemand Schutzmechanismen eingebaut hat.

Zitat:
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.
Weiß nicht genau wie ich das anstellen soll.




Zitat:
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.
Wenn ich ein WM_KEYUP einbaue, dann erscheint in dem Editfeld jeder Buchstabe doppelt, deswegen habe ich es rausgelassen und funktioniert hat es so auch nicht.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz