Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   PageControl auf anderer Anwendung steuern (https://www.delphipraxis.net/187274-pagecontrol-auf-anderer-anwendung-steuern.html)

surfer007 13. Nov 2015 13:40

PageControl auf anderer Anwendung steuern
 
Hallo,

wie kann ich ein PageControl von einer anderen Anwendung steuern, also die ActivePage auswählen? Das Handle ist bekannt (WinSpy), ich habe schon mit SendMessage und WM_LBUTTONDOWN versucht auf das PageControl zu "klicken", klappt aber leider nicht.

Hintergrund ist das ich den Refresh Button der anderen Anwendung drücken will, der wird bei der anderen Anwendung aber erst zur Laufzeit erzeugt wenn in den Settings auf das entsprechende Tab geklickt wird. Danach ist der Button da und mein Code für den Button funktioniert. Ich muss also auch die Seite des PageControls anwählen, damit der Button da ist. Code für Button drücken:

Delphi-Quellcode:
procedure TForm1.btnRefreshClick(Sender: TObject);
var
  wndMain, wndChild: HWND;
begin
  wndMain := FindWindow('TSettingsForm','Settings');
  if wndMain <> 0 then begin
    // button
    wndChild := FindWindowEx(wndMain, 0, 'TPageControl', nil);
    wndChild := FindWindowEx(wndChild, 0, 'TTabSheet', nil);
    wndChild := FindWindowEx(wndChild, 0, 'TAdvSmoothPanel', nil);
    wndChild := FindWindowEx(wndChild, 0, 'TAdvSmoothButton', nil);
    if wndChild <> 0 then begin
      SendMessage(wndChild, WM_LBUTTONDOWN,0,0);
      SendMessage(wndChild, WM_LBUTTONUP,0,0);
    end;
  end;
end;

Memnarch 13. Nov 2015 15:10

AW: PageControl auf anderer Anwendung steuern
 
Du klickst an position(0,0) innerhalb der TPageControl. Ist da überhaupt der Button den du suchst?

surfer007 13. Nov 2015 15:28

AW: PageControl auf anderer Anwendung steuern
 
Beim Test für PageControl umschalten habe ich diverse x,y Koordinaten getestet, funktioniert nun! Der Beispielcode klickt den Button wenn er erzeugt wurde, und da geht auch 0,0.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz