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?