AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit SendMessage

Ein Thema von any_key · begonnen am 12. Apr 2008 · letzter Beitrag vom 12. Apr 2008
Antwort Antwort
any_key

Registriert seit: 7. Okt 2005
96 Beiträge
 
Delphi 7 Personal
 
#1

Problem mit SendMessage

  Alt 12. Apr 2008, 10:53
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:
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;
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.
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
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#2

Re: Problem mit SendMessage

  Alt 12. Apr 2008, 11:02
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.
  Mit Zitat antworten Zitat
any_key

Registriert seit: 7. Okt 2005
96 Beiträge
 
Delphi 7 Personal
 
#3

Re: Problem mit SendMessage

  Alt 12. Apr 2008, 11:23
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
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#4

Re: Problem mit SendMessage

  Alt 12. Apr 2008, 11:46
Hallo,

Wie heisst denn das Programm?
Thomas
  Mit Zitat antworten Zitat
any_key

Registriert seit: 7. Okt 2005
96 Beiträge
 
Delphi 7 Personal
 
#5

Re: Problem mit SendMessage

  Alt 12. Apr 2008, 11:58
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.
  Mit Zitat antworten Zitat
Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Problem mit SendMessage

  Alt 12. Apr 2008, 12:06
Hallo,
Du hast diese Frage doch schon selbst hier gestellt..da kam doch eine Antwort.Webbrowser Mausklick an Position
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat
1234588

Registriert seit: 14. Jan 2007
Ort: Stuttgart
164 Beiträge
 
#7

Re: Problem mit SendMessage

  Alt 12. Apr 2008, 12:15
SendMessage(btn, BM_CLICK, 0, 0);
so kann das garnicht funktionieren, da nicht ein argument stimmig ist.
siehe msdn:
http://msdn2.microsoft.com/en-us/lib...25(VS.85).aspx

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
  Mit Zitat antworten Zitat
any_key

Registriert seit: 7. Okt 2005
96 Beiträge
 
Delphi 7 Personal
 
#8

Re: Problem mit SendMessage

  Alt 12. Apr 2008, 12:20
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.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#9

Re: Problem mit SendMessage

  Alt 12. Apr 2008, 12:24
Zitat von any_key:
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
Setze den Dialog zuerst in den Vordergrund und verwende anstatt SendMessage() mal SendNotifyMessage()
Thomas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:13 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