![]() |
Problem mit SendMessage
ahoihoi,
zur Zeit versuche ich aus meinem Programm einen Button in einem anderen Programm klicken zu lassen. Um das Fenster zu finden hab ich FindWindowByTitle von swissdelphicenter.ch genutzt. Das Finden des Fensters und des Buttons funktionieren. Aber aus irgendeinem Grund wird in der Anwendung nur der Fokus auf den Button gesetzt, aber kein Klick ausgeführt. Der Quelltext dazu sieht bisher so aus:
Code:
Wenn ich das auf ein Programm von mir anwende funktioniert das auch alles. Nur bei dem Programm bei dem ich den Button klicken will geht es halt nicht.
var
wnd : Hwnd; s : string; btn : THandle; begin wnd:= FindWindowByTitle('Test13'); if wnd<>0 then begin btn := FindWindowEx(wnd,0,'TButton','Test12'); if btn <> 0 then SendMessage(btn, BM_CLICK, 0, 0); end else ShowMessage('Fenster nicht gefunden'); end; Den Namen des Buttons habe ich mit WinSpy ermittelt. Da er ja fokussiert wird denke ich nicht, dass er nicht gefunden wird sondern, dass irgendetwas beim Senden des Klicks falsch ist. Schon mal Danke für eure Antworten. mfg any_key |
Re: Problem mit SendMessage
Unter was für einem Betriebssystem? XP? Vista? Unter Vista könnte es Probleme wegen UAC geben.
Versuch mal statt BM_CLICK 2 Messages zu senden. WM_LBUTTONDOWN und WM_LBUTTONUP. |
Re: Problem mit SendMessage
Ich benutze WinXP SP2. Bei WM_LBUTTONDOWN und WM_LBUTTONUP wird auch nur der Button fokussiert, aber weiter passiert nichts. Außerdem habe ich auch schon ausprobiert das Fenster in den Vordergrund zu bringen (was es eigentlich gar nicht soll - aber man muss ja erstmal alle Möglichkeiten ausprobieren) und dann per Tastendruck (Leertaste) das Button Event auszulösen. Aber das klappt alles nicht :(
|
Re: Problem mit SendMessage
Hallo,
Wie heisst denn das Programm? |
Re: Problem mit SendMessage
Das ist ein Downloaddialog aus dem WebBrowser.
Ich habe auch schon probiert den Download an idHTTP oder dem Embedded Webbrowser weiterzugeben, aber das klappt nicht weil ich dann immer die Seite herunterlade von der ich gerade gekommen bin. Insgesamt soll eine Datei von Rapidshare.com heruntergeladen werden. Dabei ist dann das Problem mit idHTTP und dem Embedded WebBrowser gewesen, dass immer nur die Seite selbst heruntergeladen wurde und nicht die Datei. Deshalb will ich versuchen den Downloaddialog, wenn er sich öffnet direkt zu beantworten. |
Re: Problem mit SendMessage
Hallo,
Du hast diese Frage doch schon selbst hier gestellt..da kam doch eine Antwort. ![]() |
Re: Problem mit SendMessage
SendMessage(btn, BM_CLICK, 0, 0);
so kann das garnicht funktionieren, da nicht ein argument stimmig ist. siehe msdn: ![]() als handle musst du den parent des buttons uebergeben. BN_CLICKED wird durch WM_COMMAND uebertragen und ist der highword wert vom wparam parameter. der loword wert ist dann die id des buttons (siehe GetWindowsLong()). als lparam musst (solltest) du dann das handle des buttons uebergeben. grundsaetzlich musst du schauen was du wie benutzen musst. BN_CLICKED ist eine einfache 0. genau wie WM_NULL. du sendest also erstmal ans falsche fenster (und zwar an den button) eine falsche nachricht, die dem fenster sagt, das es nichts tun soll: The WM_NULL message performs no operation |
Re: Problem mit SendMessage
Da ging es noch um einen Schritt davor. Den habe ich jetzt aber so ähnlich gelöst, wie inherited es mir in dem Threat geraten hat.
Bisher dachte ich da würde diese Möglichkeit nicht bestehen, da ich nicht an die übergebenen Parameter komme - dachte ich... Jetzt wo ich mir den Quelltext noch Mal angesehen habe habe ich gesehen, dass es vllt doch sein könnte. Also ich schau es mir noch Mal an und wenn ich nicht mehr weiter komme dann melde ich mich noch Mal. Vielen Dank für eure Antworten. Danke auch an 1234588. Wenn ich mit idHttp nicht weiterkomme dann werde ich dem Ansatz weiter nachgehen. |
Re: Problem mit SendMessage
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 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