![]() |
Fremden Button drücken
hallo DP's
versuche schon seit geraumer Zeit einen Message zu einer anderen Anwendung zu schiken(realtek HD Audiomanager). Das Handle habe ich aber irgendwie kann ich die Message nicht rüberschicken. hier mal mein Code
Delphi-Quellcode:
procedure TForm1.BtnStartClick(Sender: TObject);
var LWnd: HWND; begin LWnd := FindWindow('#32770', 'Realtek HD Audio-Manager'); //LWnd := FindWindowEx(LWnd, 0, '#32770', nil); //LWnd := GetDlgItem(LWnd, 65535); LWnd := GetDlgItem(LWnd, 1); //Button if LWnd <> 0 then begin sendmessage(LWnd,WM_KEYDOWN,VK_MENU,0); //PostKeyExHWND(LWnd, Ord('I'), [ssAlt], False); end; end; |
AW: Fremden Button drücken
Wie wäre es wenn du einfach die Nachricht BM_CLICK an die Schaltfläche sendest? Davon abgesehen, du sendest zwar die Nachricht WM_KEYDOWN, aber wo lässt du den Button wieder los?
|
AW: Fremden Button drücken
boahr, manchmal kann man gar net so dumm denken...
danke schön |
AW: Fremden Button drücken
bei diesem einen button geht es, aber wenn ich das handle vom anderen habe, geht der nicht bei:
Delphi-Quellcode:
ist das Lwnd auf einmal Null.
LWnd := FindWindowEx(LWnd, 0, '#32770', 'Lautsprecherkonfiguration');
Es geht nur bei diesem einen Button...komisch |
AW: Fremden Button drücken
Tipp: lad Dir
![]() |
AW: Fremden Button drücken
hab jetzt auch das problem das die vier anzeigen(buttons alle die gleiche controlID haben) und er windowstext auch gleich ist.
ich schätze mal das er deswegen auch nicht weiß wo er drücken soll.
Delphi-Quellcode:
über x-spy habe ich ja da Handle bekommen...
var
wnd: HWND; begin wnd := FindWindow('#32770', 'Realtek HD Audio-Manager'); wnd := FindWindowEx(wnd, 0, '#32770', nil); wnd := FindWindowEx(wnd, 0, 'Static', 'Lautsprecherausgang'); |
AW: Fremden Button drücken
über x-spy habe ich ja da Handle bekommen...
|
AW: Fremden Button drücken
Zitat:
|
AW: Fremden Button drücken
Das kommt mir komisch vor. Ist da vielleicht ein FindWindowEx zuviel?
|
AW: Fremden Button drücken
ja hmmm. also das Handle ist unterschiedlich seh ich grad
$000E0676 und $002103E8 aber der quellcode greift doch auf die controlID zurück oder nicht? |
AW: Fremden Button drücken
Wer hat denn jetzt den Code zum Ermitteln des Handles geschrieben? Du selbst, oder hast Du Dir den generieren lassen?
|
AW: Fremden Button drücken
dieser Code stammt bis auf sendMessage...
von x-spy
Delphi-Quellcode:
und bei LWnd := GetDlgItem(LWnd, 65535);
var
LWnd: HWND; begin LWnd := FindWindow('#32770', 'Realtek HD Audio-Manager'); LWnd := FindWindowEx(LWnd, 0, '#32770', nil); LWnd := GetDlgItem(LWnd, 65535); if LWnd <> 0 then begin sendmessage(LWnd,BM_CLICK,VK_MENU,0); end; end; setzt er das handle auf null.. |
AW: Fremden Button drücken
Dann wird das Ding wohl nicht gefunden. Ich habe leider das Realtek-Dingens nicht zur Verfügung, sonst hätte ich mal geschaut, wie man da rankommen könnte.
|
AW: Fremden Button drücken
Das Handle ist immer unterschiedlich, weil es ja von Windows benötigt wird, um die Fenster eindeutig zu identifizieren. Und ein Handle wird bei jedem Programmstart neu vergeben.
|
AW: Fremden Button drücken
Stimmt. Und? :gruebel:
|
AW: Fremden Button drücken
Ich wollte es nur mal erwähnt haben, da WizoHulk anscheinend die nötigen Hintergrundinformationen fehlen.
|
AW: Fremden Button drücken
Achso. Mich wundert ja auch, dass er bei einem BM_CLICK ein VK_MENU als wParam übergibt. Sei' s drum, ich an seiner Stelle würde es noch einmal mit WinSpy zusätzlich zu X-Spy probieren, ansonsten könnte man ja mal mit der Keule ran (EnumChildWindows etc.).
|
AW: Fremden Button drücken
ich hatte damals mal mit threadid gearbeitet und attach threadinpud.
aber das bringt mir glaub ich auch nicht viel, da er das Handle im GetdlgItem() ja nicht findet |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz