Handle etc ermitteln



  • so komisch das auch klingt, ja.
    ich hab den Source 1:1 hier reingepostet.

    So hab das nochmal getestet bevor ich was Falsches sage.
    Er gibt wie gesagt immer die "Button"-MessageBox aus. (auch wenn ich zb sfasdfas eingebe)

    Lg

    EDIT:

    Ok wenn ich die Schleife weglasse, kommt die "Button-Meldung" nicht mehr.
    Problem: Jetzt kommt sie gar nicht mehr.

    EDIT: Auch wenn ich zb diesen Schnipsel einsetze:

    HWND hWndButton[10]; 
    for (int i=0;i<=9;i++)
          {
        hWndButton[i] = FindWindowEx(hWndDirectUI, NULL,  NULL,  NULL);
           } 
    
    for (int i=0;i<=9;i++)
    	{
        SendMessage(hWndButton[i], WM_LBUTTONDOWN, 0, 0); 
    
        SendMessage(hWndButton[i], WM_LBUTTONUP, 0, 0); 
            }
    

    sprich alle gefundenen Buttons durchgehe, und die dann auch anklicke passiert nichts.



  • Öhm kann sich einer mal bitte die mühe machen und nachgucken was da für childs sind? es scheint mir als hätte muhi da im Moment nicht mehr sooo den Durchblick ...
    Er verschlimmbessert den Code ja nur noch 😃 So wie ich ihn gepostet hab war er eigentlich i.O.



  • 😃 😃 😃 😃 😃 😃 😃 😃

    1. Man kann automatisch einloggen als Option angeben, aber das nur am Rande^^
    2. Das Fenster, in dem der Anmelden-"Button" ist, hat keine Childfenster... D.h. der Button wurde nicht mit CreateWindow o.ä. erzeugt, sondern wird in der WM_PAINT vom Hauptfenster mitgezeichnet 🤡

    Ergo: Du kannst kein Handle auf den Button bekommen, weil er kein Fenster ist :p



  • LOL?

    K vielen Dank, hmm dh die einzige Möglichkeit den Button zu betätigen ist mit einem Maus-Klick?

    Zu 1.: K das mitm Auto-Einloggen wusste ich eh thx

    MFG



  • muhi schrieb:

    K vielen Dank, hmm dh die einzige Möglichkeit den Button zu betätigen ist mit einem Maus-Klick?

    Wenn das wirklich so ist, muss Du es mit einem Klick machen 😃 ... .
    Falls die Frage kommt: Guckst Du <Hier>



  • 😃 , k thx ich glaube ab hier schaff ichs alleine weiter.

    Nur noch eins(hoffentlich gg):Das Problem ist, dass der Messenger ja keine fixe Startposition hat.
    Mit deiner Funktion is es ja einfach einen Mausklick zu machen;aber ist das Fenster eig auch zu identifizieren sprich ansprechbar? (sprich: gibt es eine Funktion die mir die Koordinaten übergibt?)

    Mfg



  • GetWindowRect ?! Vllt. ?! Oder was meinst Du ?



  • Ganz genau! Danke!

    Hab ich richtig verstanden?

    Egal wie das Fenster verschoben ist, ich brauch nur das Fenster finden und dann?

    EDIT: Ah ok habs verstanden, da ich ja dann die Eckpunkte hab kann ich ja dann auch die Position des "Buttons" bestimmen oder?

    lg



  • Ja, Mausklick ist wohl das einzig mögliche. Könntest du nen Screenshot von dem Fenster machen und die Position des "Button" raussuchen.
    In deinem Programm holst dir dann das Rechteck des Fesnters (GetWindowRect) und berechnest, an welchem Punkt auf dem Bildschirm du klicken musst.
    Dann klickst du halt mit SendInput.

    Edit: Hab hier nen Link gefunden, wo du glaubich Spy++ runterladen kannst. Damit kannst du schnell rausfinden, wie die Klasse des Buttons ist oder ob es so einen Button überhaupt gibt 😉
    http://www.techwarelabs.com/downloads/?action=file&id=169



  • Oder sowas hier: http://www.windows-spy.com/

    Kannst du dir nicht direkt mit GetWindowRect die Position des Buttons in Bildschirm-Koordinaten holen?!



  • Hmm erstmal thx für die Links.

    Nein mit der Funktion kann ich mir nur die Position berechen sprich ich hol mir die Koordinate des Eckpunktest und berechene damit wo ich klicken muss.
    Höhrt sich eig sehr einfach an ich probiers gleich mal^^.

    lg



  • Hi,

    ich hab jetzt die Funktion eingebaut,eigentlich kein Problem.
    Ich hab mir die Propertionen geholt nur leider sind die bei der Y-Achse immer unterschiedlich. (manchmal 1,4 oft aber auch) 2,3

    Mit welcher Funktion kann ich ein Fenster in den Vollbildmodus versetzen?

    lg



  • Sry ich meinte im Vorpost Proportionen.



  • MoveWindow(hWnd, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), TRUE);
    


  • Muhi89 schrieb:

    Mit welcher Funktion kann ich ein Fenster in den Vollbildmodus versetzen?

    Würde ich (je nach Anwendungszweck) eher nicht machen. Ich kann zwar nur raten, warum du auf den Button klicken willst, aber wenn ein User das sieht, wird er zweifellos verwirrt sein 😃



  • Hi, danke für die Funktion.

    @Badesstrand: Ich dachte ein virtueller Klick bedeutet, dass man den Cursor nicht dorthinebewegt sondern nur ne Message geschickt wird??
    Soll das heissen man sieht den Cursor an der Stelle?

    Mfg



  • Ne, ich meine nur, dass es mich relativ irritieren würde, wenn sich das MSN-Fenster plötzlich maximieren würde 😃



  • LOL 😃 , ja nur ne andere Möglichkeit gibts leider nicht da die Proportionen nicht konstant sind.



  • Versteh ich nicht ganz, wie ist das zu verstehen? Hat das Fenster jedesmal eine andere Größe wenn es aufgemacht wird oder wie? Oder ist der Button jedesmal an einer anderen Stelle?



  • Hi,

    erm der User könnte das Fenster praktisch in zig verschiedenen Formaten oder Positionen am Bildschirm haben.

    Jetzt geht es ums Format.

    bei der x koordinate ist es leicht

    ich nehme die Strecke left bis right und dividiere sie durch 2.
    Bei der y Koordinate hab ich mich lang gespielt und dann eine Durchschnittsproportion errechnet (Bottom/Button in Koordinaten).
    Leider weicht es oft sehr stark ab

    Lg


Anmelden zum Antworten