Einzelnen Beitrag anzeigen

Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Tastendruck an Fremdsoftware

  Alt 14. Apr 2021, 23:02
Hallo Zusammen,

Ich habe gerade noch ein bißchen getestet und probiert und dabei eine Lösung gefunden, die ich morgen in schöner bauen werde:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var I: Integer;
      wnd, hApp: HWND;
      CName: array [0 .. 255] of Char;
begin
   hApp := FindWindow(nil, 'FremdSoftware'); //Handle der Software
   GetClassName(hApp, CName, 256);
   wnd := FindWindowEx(hApp, 0, CName, 'Menue'); // Handle des Menüs

   //Wählt den ersten Hauptmenüpunkt
   PostMessage(wnd, WM_KEYDOWN, VK_Right, 0);
   PostMessage(wnd, WM_KEYUP, VK_Right, 0);
   //Wählt den zweiten Hauptmenüpunkt
   PostMessage(wnd, WM_KEYDOWN, VK_Right, 0);
   PostMessage(wnd, WM_KEYUP, VK_Right, 0);
   //Öffnet mit ENTER das PullDownMenü des zweiten Hauptmenüpunkt
   PostMessage(wnd, WM_KEYDOWN, VK_RETURN, 0);
   PostMessage(wnd, WM_KEYUP, VK_RETURN, 0);
   //Markiert den ersten Eintrag des PullDownMenüs
   PostMessage(wnd, WM_KEYDOWN, VK_Down, 0);
   PostMessage(wnd, WM_KEYUP, VK_Down, 0);
   //Markiert den zweiten Eintrag des PullDownMenüs
   PostMessage(wnd, WM_KEYDOWN, VK_Down, 0);
   PostMessage(wnd, WM_KEYUP, VK_Down, 0);
   //Markiert den dritten Eintrag des PullDownMenüs
   PostMessage(wnd, WM_KEYDOWN, VK_Down, 0);
   PostMessage(wnd, WM_KEYUP, VK_Down, 0);
   //Markiert den vierten Eintrag des PullDownMenüs
   PostMessage(wnd, WM_KEYDOWN, VK_Down, 0);
   PostMessage(wnd, WM_KEYUP, VK_Down, 0);
   //Führt den vierten (markierten) Menüpunkt aus
   PostMessage(wnd, WM_KEYDOWN, VK_RETURN, 0);
   PostMessage(wnd, WM_KEYUP, VK_RETURN, 0);
end;
Damit scheint es zu funktionieren... Offensichtlich brauche ich das Menü garnicht mit ALT oder F10 zu aktivieren. Mit dem entsprechenden Handel kann ich darin direkt navigieren...

Gute Nacht
Patrick
Patrick

Geändert von Ykcim (14. Apr 2021 um 23:04 Uhr)
  Mit Zitat antworten Zitat