[erledigt] delphi button von anderem Programm aktivieren



  • Hallo,

    Ich möchte in einem anderen Programm, welches mit Delphi geschrieben ist einen Button fernsteuern (klicken).
    In einem Resourceneditor sehe ich, dass in dem entsprechenden Form dem Button-Ereignis OnClick eine Routine zugewiesen wird.
    Wie kann ich von außen dieses Ereignis auslösen?

    Edit:
    werden die auch über Windows-Messages abgebildet, oder ist das ein ganz anderer mechanismus?



  • Ich würde das mal mit SendMessage probieren

    SendMessage(hWndSendTo,WM_COMMAND,MAKEWPARAM(IDC_NR_DES_BUTTONS,0),(LPARAM)0);



  • wie komme ich an die Command-Identifier?
    das ganze ist wie gesagt ein delphi-program.

    Gibt es irgend ein tolles tool, mitdem man die WindowMessages einer Anwendung monitorn und filtern kann?
    Ich hab auf Anhieb bei Google nix finden können.



  • kuck mal hier
    http://www.codeproject.com/KB/threads/winspy.aspx
    der unter download sollte nur das tool selbst enthalten



  • das kenn ich, damit kann man steuerelemente scannen.
    Was ich meine ist ein Tool, in dem man zB eine Anwendung auswählt und dann alle Window-Messages zu dieser Anwendung abfangen kann und in der Oberfläche vernünftig filtern kann.

    Prinzipiell sollte das Abfangen kein größeres Problem sein, aber das Aufbereiten und darstellen ist auch ne menge Arbeit.
    Ich kann mir auch nicht vorstellen, dass es sowas noch nicht gibt.



  • weis jetzt nicht wo dein problem liegt,
    du schreibst

    ...einen Button fernsteuern (klicken)...

    mit dem tool bekommst du die ID Nr des Buttons raus welchen du fernsteuern willst.

    setze die ID nr unter SendMessage für IDC_NR_DES_BUTTONS ein. wenn du ein gültiges Handle auf den Dialog hast, wird die Message an den dialog geschickt und der Klick auf den Button wird ausgelöst.



  • benutz einfach Microsoft Spy++, da kannste auch Messages loggen (Strg+M)

    greetz KN4CK3R



  • ich bekommden button eben nicht damit. das ding ist vom Typ TSpeedButton.
    Deswegen war meine hoffnung, das man aus den Messages vielleicht was rausbekommt.

    Edit:
    Was nicht so noch alles im VS verzeichnis schlummert.
    Danke für den Tip mit dem MS Spy++, ich werd mal probieren



  • Ich habs jetzt hinbekommen.
    Ich habe mich mit findWindow und FindwindowEx zu dem Control durchgehangelt, welches den entsrechenden Button enthält.
    Anschließend sende ich einen Mausklick an dieses Control mit der Position an der der Button sitzt.

    Das Funktioniert natürlich auch nur mit Containern mit nicht dynamischen Layout, aber hier klappts.

    Ich habe jetzt Winspector gefunden, das ist ein wenig komfortabler als Spy++ und genau so etwas, wie ich gesucht habe.


Anmelden zum Antworten