Menubar auswerten



  • Hallo zusammen,

    Ich wollte gerade eine Menubar in einem externen Programm via WinApi auswerten.
    Nur das Problem ist, ich finde keine passende Funktion dazu.

    Wenn ich mittels EnumChildWindows alle ChildWindows des Hauptfenster durchlaufe (auch rekursiv) finde ich kein Menubar Eintrag.

    Vielleicht mache ich die Auswertung auch einfach falsch.
    (Ich überprüfe mit GetWindowText & strcmp ob ein bestimmter Eintrag vorkommt).

    Hier der EnumChildProc -Ausschnitt:

    BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam)
    {
        char buffer[256];
        if (GetWindowText(hwnd, buffer, 256) == 0)
        {
            //cout << GetLastError() << endl;
        }
    
        if (strcmp(buffer, "Edit") == 0)
        {
            cout << buffer << endl;
        }
        EnumChildWindows(hwnd, EnumChildProc, 0);
    
        return true;
    }
    

    gruss



  • So schnell gehts..
    Ich hatte wohl den falschen Abschnitt im MSDN offen. 🙂
    http://msdn.microsoft.com/en-us/library/ff468865(v=VS.85).aspx hier sind alle benötigten Funktionen aufgelistet. 🙂

    gruss



  • Also doch nochmal ich. 🙂

    Ich verstehe die GetMenu() Funktion so, dass sie mit das Menuhandle von dem Fenster zurück geben sollte.
    Also bspw bei Notepad die Menubar zu oberst mit "File, Edit, Help, ...".

    Nur, scheint dem nicht so.
    Ich bekomme zwar ein Handle zurück - nur wohin?
    Wenn ich das Menu auf Richtigkeit überprüfen will, gebe ich die Anzahl MenuItems zurück: GetMenuItemCount().
    Bekomme dann aber als Antwort -1. -> invalid.

    Deswegen gehen dann auch die folgenden Befehle nicht wie GetSubMenu().

    Benutze ich den GetMenu() Befehl falsch?

    HMENU mainMenuItem = GetMenu(WindowHandle);
            HMENU firstLayer = GetSubMenu(mainMenuItem, XPos);
    cout << GetMenuItemCount(mainMenuItem) << endl;
    

    Gruess



  • Hat das Programm zufälligerweise ein floating menu? Damit funktioniert GetMenu() nämlich nicht.



  • Hallo,

    Nein.
    Das Menu sieht genau so aus wie das von Notepad (ist ja afaik kein floating Menu 🙂 )

    grz


  • Mod

    Was sagt GetLastError wenn Du GetMenuItemCount ausführst und -1 erhältst?


Anmelden zum Antworten