- es wird der Menüpunkt unter der Maus ermittelt
- es wird der Handle zur Menüstruktur ermittelt
- anschliessend wird vom Handle zur Menüstruktur aus rekursiv gesucht,
bis der Menüpunkt samt Pfad ermittelt wurde
Nach dem starten des Programms muss natürlich die Maus über einen
Menüpunkt gefahren werden (z.B. einfach das Menü vom Editor öffnen)
Code: Alles auswählen
lpPoint.Point
#MN_GETHMENU = $1E1
NewList lstSearchSubmenu.s()
Procedure SearchSubmenu(hmenu, hcurrmenu.l)
count = GetMenuItemCount_(hmenu)
For mnucount=0 To count -1
hsubmenu = GetSubmenu_(hmenu, mnucount)
If hsubmenu <> 0
If hsubmenu = hcurrmenu.l
mnuString.s = Space(255)
GetMenuString_(hmenu, mnucount, @mnuString, Len(mnuString), #MF_BYPOSITION)
InsertElement(lstSearchSubmenu.s())
lstSearchSubmenu.s() = mnuString
ProcedureReturn #True
Else
erg = SearchSubmenu(hsubmenu, hcurrmenu.l)
If erg = #True
mnuString.s = Space(255)
GetMenuString_(hmenu, mnucount, @mnuString, Len(mnuString), #MF_BYPOSITION)
InsertElement(lstSearchSubmenu.s())
lstSearchSubmenu.s() = mnuString
ProcedureReturn erg
EndIf
EndIf
EndIf
Next
EndProcedure
While 1=1
GetCursorPos_(lpPoint)
hwnd = WindowFromPoint_(lpPoint\X, lpPoint\Y)
Submenucount = 0
phwnd = GetParent_(hwnd) ;Fenster-Handle
hmenu = GetMenu_(phwnd)
hcurrmenu.l = SendMessage_(hwnd, #MN_GETHMENU, 0,0)
menuPos = MenuItemFromPoint_(hwnd, hcurrmenu.l, lpPoint\X, lpPoint\Y)
If oldmenuPos <> menuPos
SearchSubmenu(hmenu, hcurrmenu.l)
mnuString.s = Space(255)
GetMenuString_(hcurrmenu.l, menuPos, @mnuString, Len(mnuString), #MF_BYPOSITION)
LastElement(lstSearchSubmenu.s())
AddElement(lstSearchSubmenu.s())
lstSearchSubmenu.s() = mnuString
Debug "------------"
ForEach lstSearchSubmenu.s()
Debug lstSearchSubmenu.s()
Next
ClearList(lstSearchSubmenu.s())
oldmenuPos = menuPos
EndIf
Submenucount = 0
Wend