Einzelnen Beitrag anzeigen

Ykcim

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

Tastendruck an Fremdsoftware

  Alt 14. Apr 2021, 16:33
Hallo Zusammen,

es gibt zwar schon viel zu dem Thema, aber leider habe ich die Lösung damit nicht zusammenbekommen.

Ich übergebe verschiedene Daten an eine Fremdsoftware und drücke dort auch Buttons. Das klappt mittlerweile auch. Jetzt muss ich in dem Menü einen Eintrag auswählen. Das ist ein Menü, dass wie ein MainMenü aussieht. Ich kann zwar das Handle von der Anwendung und das Handle des gesamten Menüs ermitteln, aber nicht die einzelnen Menüpunkte.

Jetzt war mein Gedanke, dass die der Software einfach ein paar Tastendrücke übermittle. Die Taste F10 aktiviert das Menü, genau wie die ALT-Taste.

Delphi-Quellcode:
procedure TFrm_BD_Orga.Select_Module(hApp: HWND; Module: integer);
var I: Integer;
      wnd: HWND;
      CName: array [0 .. 255] of Char;
begin
   if hApp = 0 then begin
      hApp := FindWindow(nil, 'Fremdsoftware'); //Handle der Software
      GetClassName(hApp, CName, 256);
      wnd := FindWindowEx(hApp, 0, CName, 'MenuStrip1'); // Handle des Menüs
   end;

   PostMessage(wnd, WM_KEYDOWN, VK_F10, 0);
   PostMessage(wnd, WM_KEYUP, VK_F10, 0);

   PostMessage(wnd, WM_KEYDOWN, VK_RIGHT, 0);
   PostMessage(wnd, WM_KEYUP, VK_RIGHT, 0);

   for I := 0 to Module -1 do begin
      PostMessage(wnd, WM_KEYDOWN, VK_Down, 0);
      PostMessage(wnd, WM_KEYUP, VK_Down, 0);
  end;
  PostMessage(wnd, WM_KEYDOWN, VK_RETURN, 0);
  PostMessage(wnd, WM_KEYUP, VK_RETURN, 0);
end;
Ich habe versucht, sowohl dem Menür selber, als auch der ganzen App eine Taste zu übermitteln. Leider reagiert sie nicht.

Hat jemand eine Idee?

Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat