Hallo,
ich möchte geren überwachen ob in einer fremden Anwendung ein bestimmtes Fenster mit einem bestimmten Namen geöffnet wird. Wenn dann soll eine bestimmte Taste (anhand der Caption) gesucht und angeklickt werden.
Die Überwachung über einen Timer, sowie das Vorhandensein der Taste habe ich hin bekommen,
nun zu meinem Problem.
1.) Wie bekomme ich es hin, dass der Button im geöffneten Fenster individuell über den Button Handel ausgewählt werdne kann ??
2.) Ich möchte nachdem ich die Aktion durchgeführt habe das entsprechende Fenster schließen. DestroyWindow schließt das Fenster leider nicht. Die Handels habe ich bereits überprüft.
Delphi-Quellcode:
procedure Tform1.ClickIt;
var
hWnd : Cardinal;
hBtn : Cardinal;
taste : string;
ret : boolean;
begin
hWnd := FindWindow(nil, fenstername);
if hWnd = 0 then
begin
Label4.Caption := 'Fenster nicht gefunden.';
button2.Enabled:=true;
// exit;
end
else
begin
timer1.Enabled:=false;
Label4.Caption := 'Fenster gefunden.';
// SetForegroundWindow(hWnd);
SetWindowPos(hWnd, HWND_noTopMost, 0, 0, 0, 0, SWP_SHOWWINDOW or SWP_NOMOVE or SWP_NOSIZE);
hBtn := FindWindowEx(hWnd, 0, nil, drueck_taste );
///// Buttonauswahl funktioniert nicht
If hBtn <> 0 then
begin
PostMessage(hWnd , WM_KEYDOWN, hBtn , 0);
PostMessage(hWnd , WM_KEYDOWN, VK_RETURN , 0);
end;
////// FENSTER WIRD mit DestroyWindow(hWnd) NICHT GESCHLOSSEN !"!!! WARUM NICHT ?????
if ((hWnd <> 0) and (not DestroyWindow(hWnd))) then begin
MessageBox(0, 'Unable to destroy window!', 'Error', MB_OK or MB_ICONERROR);
// hWnd := 0;
end;
timer1.Enabled:=true;
end;
end;
Was mach ich falsch ??, Habt ihr eine Tipp ???
mfg