Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Probleme mit keybd_event (https://www.delphipraxis.net/138213-probleme-mit-keybd_event.html)

stephan3309 5. Aug 2009 09:24


Probleme mit keybd_event
 
Guten Morgen!

Ich möchte von meinem Programm aus einen String, den ich von einer RS232 Schnittstelle einlese
an ein externes Programm senden.
Leider habe ich noch ein kleines Problem mit der Übergabe an ein externes Programm.
Die Handles der externen Programme habe ich erfolgreich mit Win-Spy finden können.

Nach dem ich Google und Foren-Suchen gequält habe, kam folgendes dabei raus:

Delphi-Quellcode:
procedure TForm1.B_SendClick(Sender: TObject);
var
  wndMain, wndChild: HWND;
  i: integer;
  s : string;
begin
  s := E_Rx_String.Text;


  wndMain := FindWindow('Notepad','Unbenannt - Editor');
  if wndMain <> 0 then
  begin
    wndChild := FindWindowEx(wndMain, 0, 'Edit', nil);
    if wndChild <> 0 then
    begin
      ShowMessage('Window Handle: ' + IntToStr(wndChild));
       SetForegroundWindow(wndChild);
          for i := 1 to length(s) do
            if VkKeyScan(s[i])>255 then begin
              keybd_event(VK_SHIFT, 0, 0, 0);
              keybd_event(VkKeyScan(s[i]), 0, 0, 0);
              keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
              end else keybd_event(VkKeyScan(s[i]), 0, 0, KEYEVENTF_KEYUP);
       end;
    end else ShowMessage('Fenster nicht gefunden!');
end;
Wenn unterschiedliche Buchstaben/Zahlen eingegeben werden, funktioniert das auch wunderbar,
wenn in dem Editfeld aber gleiche Zeichen nebeneinander stehen, werden die nicht ausgegeben.
Beispiel:
Eingabe im Delphi Programm -> Ausgabe in Notepad
'111' -> 1
'A111' -> A1
Sind jedoch unterschiedliche Zeichen nebeneinander, funktioniert das ganze wunderbar:
'123' -> 123

Kann mir einfach nicht erklären warum das so ist :gruebel: .
Die Länge des Strings wird (in der For-Schleife/length(s)) korrekt ermittelt.

Vielleicht könnt Ihr mir einen Tip geben, woran das liegt,...und wie ich das Problem vielleicht
beseitigen kann.

Einen schönen Tag noch,

stephan

DeddyH 5. Aug 2009 09:58

Re: Probleme mit keybd_event
 
Versuch es mal hiermit: EnterText

stephan3309 5. Aug 2009 10:03

Re: Probleme mit keybd_event
 
Dankeschön!

Damit läufts :-D


Einen schönen Tag noch!


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:05 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