Einzelnen Beitrag anzeigen

IMPEGA

Registriert seit: 19. Jan 2008
Ort: Brhv
80 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Button in einer Anwendung drücken.

  Alt 30. Apr 2015, 11:39
Hi
Ich schon wieder mit einer Frage.
Ich versuche ein "Play" Button in einer Anwendung (Wahrscheinlich Java) zu drücken.
Fragt mich bitte nicht wozu man es braucht, es ist für einen Kumpel.
Es handelt sich um "SDRSharp" (Download hier: http://sdrsharp.com/#download)

In der Anwendung möchte ich einfach nur das Play drücken.
Bild: http://www.xup.in/dl,19032894/SDR.JPG/

Meine Versuche sind leider gescheitert.
Hier habe ich die Class mit WinSpy ausgelesen und so getestet.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  wndMain, wndChild: HWND;
  i : Word;
begin
  wndMain := FindWindow('WindowsForms10.Window.8.app.0.2004eee','SDR# v1.0.0.1337 - IQ Imbalance: Gain = 1,000 Phase = 0,000°');
  if wndMain <> 0 then
  begin
    wndChild := FindWindowEx(wndMain, 0, 'WindowsForms10.BUTTON.app.0.2004eee', nil); (*Das Button OK bestimmen.*)
    PostMessage(199070, WM_KEYDOWN, VK_RETURN, 0); (*Drücke auf das Button OK.*)
  end;
end;
Leider wird mein Button nicht gefunden.
Dann habe ich versucht die ganzen HWND zu erfassen um zu testen ob mein Button vorhanden ist.
Scheinbar ja, scheinbar ist die Class auch richtig aber es passiert nichts.
Delphi-Quellcode:
function FindWindowEx2(hParent: HWND; ChildClassName: string; ChildNr: Word): HWND;
var
  i: Word;
  hChild: HWND;
begin
  hChild := 0;
  Result := 0;
  Dec(ChildNr);
  for i := 0 to ChildNr do
  begin
    hChild := FindWindowEx(hParent, hChild, PChar(ChildClassName), nil);
    if hChild = 0 then
      Break;
    Result := hChild;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  wndMain, wndChild, Jogi: HWND;
begin
  wndMain := FindWindow('WindowsForms10.Window.8.app.0.2004eee','SDR# v1.0.0.1337 - IQ Imbalance: Gain = 1,000 Phase = 0,000°');
  if wndMain <> 0 then
  begin
    wndChild := FindWindowEx2(wndMain,'WindowsForms10.Window.8.app.0.2004eee', 5); //Damit habe ich versucht die Gruppe zu erfassen.
      if wndChild <> 0 then
        begin
           Jogi := FindWindowEx2(wndChild,'WindowsForms10.BUTTON.app.0.2004eee', 5); //Das sollte eigentlich mein Button sein
           ShowMessage('Window Handle: ' + IntToStr(Jogi)); //Nur ein Test ob die HWND stimmt
           PostMessage(Jogi, WM_KEYDOWN, VK_RETURN, 0); //Drücke Play
        end;
  end;
end;
Ich komme nun nicht weiter.
Das Ganze habe ich schon aufgegeben, meine Neugier aber hat mich zu der Frage bewegt.
Ist es überhaupt in diesem Fall machbar?
Vorschläge?
  Mit Zitat antworten Zitat