unbekannten Button auslösen



  • Hi ...

    @Ocrana:
    Danke für Deine schnelle Antwort.
    Ich habe das Fenster mit Spy++ mir angesehen.
    Der Button den ich benutzen möchte heißt "S&tarten".
    Die ID ist mir jedoch unbekannt.
    Wie kann ich jetzt diesen Button in dem Fenster
    was "Hallo" heißt greifen, geschweigedenn einmal
    betätigen ?

    Betätigen dürfte mit SendMessage() gehen, aber wie
    finde ich jetzt diesen Button in dem "Hallo"-
    Fenster ?

    Danke für Eure Hilfe
    Klaus



  • Hallo,

    ok, Du hast zwei Möglichkeiten:

    1.) DU weisst wie das Fenster heisst und Du weisst die ID des Buttons (über den Spy):

    HWND pDlg, cDlg;
    int iSel;

    iSel = SendMessage(pDlg, CB_FINDSTRING,-1,(LPARAM)"HelloWorld");
    if(!iSel)
    return;

    do
    {
    cDlg=GetDlgItem(pDlg, 0x01) //Angenommen der Button hat die ID 0x01
    }while(!cDlg);

    //Wenn gefunden:
    SendNotifyMessage(cDlg,WM_LBUTTONDOWN,0,0);
    SendNotifyMessage(cDlg,WM_LBUTTONUO,0,0);

    Das wars. Die zweite Methode ist, Du suchst auf dem pDlg noch das CDlg mit dem FINDSTRING Wert.

    Gruß

    Ocrana



  • Hi ....

    Ich habe jetzt den Zeiger auf das Window.
    Ebenfalls habe ich den Zeiger auf den Button im Window.
    Das habe ich so gelöst:

    CWnd *gefundenesfenster=GetForegroundWindow(),
         *derbutton=gefundenesfenster->GetNextDlgTabItem(gefundenesfenster,FALSE);
    

    Jetzt habe ich versucht, mit

    ::SendNotifyMessage(derbutton->m_hWnd,WM_LBUTTONDOWN,0,0);
    ::SendNotifyMessage(derbutton->m_hWnd,WM_LBUTTONUP,0,0);
    

    den Button auszulösen,aber leider ohne Erfolg ......
    Was mache ich falsch ??? 😞

    @Ocrana:
    Kannst Du mir bitte nochmal helfen ?? 🙄

    Gruß
    Klaus



  • @Klaus: Wie so ist dir die ID unbekannt, wenn du es mit Spy++ untersucht hast? 😕



  • Hi ...

    Frage von @Luckie:
    Wieso ist dir die ID unbekannt, wenn du es mit Spy++ untersucht hast?

    Mir ist die ID zwar bekannt gewesen 🙄 , aber es ging mir
    nicht nur um den Button, sondern generell um andere Button´s.
    Deshalb habe ich versucht ohne die ID auszukommen. 🙂
    Ich möchte nicht immer Spy++ verwenden, um die ID
    eines Button´s heraus zu bekommen, sondern das Programm
    von mir soll es von vornherein selbständig machen können.

    Die Lösung ist manchmal so einfach das man garnicht
    auf die Lösung kommt. 🙄
    Ich Danke vor allem nochmal @Ocrana 😃 für die tatkräftige Hilfe.

    Hier meine Lösung dazu:

    /* Fenster wurde zuvor durch mein Programm gestartet und 
    befindet sich im Vordergrund*/
    
    CWnd *gefundenesfenster=GetForegroundWindow()/*Fenster holen*/,
    *derbutton=gefundenesfenster->GetNextDlgTabItem(gefundenesfenster,FALSE)/* Button holen*/;
    
    ......
    
    /*Button auslösen*/
    ::SendNotifyMessage(derbutton->m_hWnd,WM_LBUTTONDOWN,0,0);
    ::SendNotifyMessage(derbutton->m_hWnd,WM_LBUTTONUP,0,0);
    
    ......
    

    Bis dann
    Gruß
    Klaus



  • Hallo,

    versuch mal derbutton->getsafehwnd();

    Gruß

    Ocrana



  • ID <> Handle. Die ID ändert sich nicht. Die mußt du dir nur einmal beim Porgrammieren holen - fertig.



  • Hi ...

    Ich habe vergessen zu schreiben was der Fehler war,
    denn ich finde es sinnvoll das hin zu schreiben
    damit andere den Fehler nicht auch machen.

    Da habe ich leider aber auch keine Ahnung.
    Auf einmal ging es, wieso ?

    keine Ahnung........
    auf einmal ging es ...... 🙄

    @Ocrana:
    Ich werde es mit derbutton->getsafehwnd(); ausprobieren.

    @Luckie:
    Danke für die Erklärung.
    Das mit der ID <> Handle habe ich bisher nicht so gewußt.
    Ich hatte angenommen eine ID wäre eine Zahl die übergeben
    wird. Wie z.B.
    #define IDB_BUTTONSTARTPROG 1000
    oder so ...in der "Ressource.h" ,
    woraus dann Handle folgt.

    Gruß
    Klaus



  • Moin,

    ein Tip, such mal nach Autoit. Das ist dann zwar nicht C++ aber ein kostenloses Tool mit dem man PC's / Programme automatisch steuern kann.

    Gruß, Tom



  • Hi ...

    Danke Dir @Tom für den Tipp.
    Ich möchte aber nicht auf andere Programme angewiesen sein,
    deshalb will ich mir mein Programm selbst für meine Zwecke
    zuschneiden und weiter entwickeln.
    Es ist aber eine gute Anregung (die Hilfe) für Sachen
    die ich vorher noch nicht bedacht hatte.

    Danke
    Gruß
    Klaus


Anmelden zum Antworten