Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi etwas in nem fremden Fenster anklicken (https://www.delphipraxis.net/100465-etwas-nem-fremden-fenster-anklicken.html)

tabbi 28. Sep 2007 18:34


etwas in nem fremden Fenster anklicken
 
Hallo,

kann mir evtl jemand helfen ?

Ich möchte von meinem Programm aus ein fremdes Element (z.B. Button oder Kontrolkästchen) in einem anderen Programm anklicken.
Kann mir da jemand evtl mit einem code snippet helfen ? Ich hab schonmal gesucht und den Code von Lucky gefunden, bin mir aber nicht sicher wie ich das auf meine Sache anzuwenden habe, da dies ja für messageboxen da ist. An Delphi hab ich nur: Delphi für Win32 (2007)

Ich bedanke mich für jede Hilfe.

mfg
tabbi

dominikkv 28. Sep 2007 18:51

Re: etwas in nem fremden Fenster anklicken
 
na klar, du musst nur das handle das Buttons rausfinden und ihm eine botschaft schicken... dazu findest du hier im forum genügend...
such mal nach Hier im Forum suchenFindWindow und Hier im Forum suchensendmessage

edit:
schau dir mal das beispiel an

Carlo91 28. Sep 2007 18:54

Re: etwas in nem fremden Fenster anklicken
 
Hi,
ich hab glaub ich was für dich...

Delphi-Quellcode:
var
  hBtnWnd: HWND;
begin
  hBtnWnd :=FindWindow('TForm1'{klassenname},'Form1'{Fenster caption}); //in hBtnWnd wird hier das Handle des fensters auf dem der button ist gespeichert...
  hBtnWnd :=FindWindowEx(hBtnWnd, 0, 'TButton'{Klassenname}, 'Button1'{Caption der klasse(TButton)}); //in hBtnWnd wird hier das Handle des buttons gespeichert...
  if hBtnWnd <> 0 then // hier wird überprüft ob das handle nicht 0 ist...
  begin
    SendMessage(hBtnWnd, BM_CLICK, 0, 0); // die message für einen buttonklick wird gesendet...
  end;
end;
viel spaß damit!

P.S. ich hoffe die codekommentare sind zuverstehn da ich normalerweise meinen code nicht kommentiere

MfG Carlo

tabbi 28. Sep 2007 19:02

Re: etwas in nem fremden Fenster anklicken
 
hi, danke.

Ich bin jetzt erstmal dabei mittels WinSPY das Handle etc. zu finden, da gibts nur ein Problem.

In dem Programm, in dem ich etwas anklicken will ist das wie folgt gelöst:

Das programm hat links sone Outlook Leiste, wo dann wie bei Outlook untereinander sone art Textlinks sind.

Jedoch finde ich nur das Handle von der OutlookLeiste, nicht aber von dem einzelnen Textlink.

Wie kann ich das lösen ?

mfg
tabbi

Carlo91 28. Sep 2007 19:06

Re: etwas in nem fremden Fenster anklicken
 
das ist eine gute frage... ich GLAUBE selbst wenn du das handle hast würden die nicht auf SendMessage reagieren!
du könntest aber die position des Textlinks herausfinden und dann an der stelle einen mausklick simulieren.

MfG Carlo

tabbi 28. Sep 2007 19:13

Re: etwas in nem fremden Fenster anklicken
 
hi,

ok, das wäre dann wohl möglich.
Am besten verschiebe ich das Fenster aber vorher nach top,left 0,0 da sich ja sonst die koordinaten ändern oder ?

eine andere Frage wäre noch. Wenn ich eine ComboBox habe, wie kann ich da einen Eintrag wechseln ?

Carlo91 28. Sep 2007 19:15

Re: etwas in nem fremden Fenster anklicken
 
falls du eine combobox aus einem anderen programm meinst würde ich sagen selecten(anklicken die combobox) und dann mit pfeil tasten nach oben/unten geht vileicht aber auch anders musst mal die SuFu benutzen...

MfG Carlo

s-off 28. Sep 2007 19:45

Re: etwas in nem fremden Fenster anklicken
 
Hallo,

nur zur Info: Nur von TWinControl abgeleitete Komponenten besitzen ein Handle!

Dazu gehören bspw. TEdit, TPanel, TButton, TCheckBox und auch TJvOutlookBar (ein OutlookBar-Derivat der Jedis).
Dazu gehören aber nicht TLabel, TImage und auch nicht TJvOutlookBarPage, welches die einzelnen Seiten einer TJvOutlookBar darstellt.

tabbi 28. Sep 2007 21:11

Re: etwas in nem fremden Fenster anklicken
 
ok danke.

ich habs jetzt halt immer mit mouse_event(...) gelöst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:17 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