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