API32 - Menü Text vom aktiven Fenster auslesen
Verfasst: 30.04.2006 17:06
Hi zusammen,
ich kann mit folgenden Code die Menüeinträge des aktiven Fensters
auslesen. Jedoch bekomme ich es nicht hin die existierenden Untermenüs
eines Menüpunktes auszulesen.
z.B. PureBasic Editor
Im erstem Menüpunkt "File" existiert ein Menüeintrag "Recent Files".
Für diesen Eintrag erhalte ich über die API nur den ID Wert "-1" und kann
somit das Untermenü nicht weiter auslesen
Hätte hierzu jemand eine Idee, wie ich das hinbekommen kann oder
ob es einen API Aufruf gibt mit dem ich das Problem lösen kann?
Wäre super, wenn Ihr mir hier weiterhelfen könntet.
Danke + Gruß,
Daniel
ich kann mit folgenden Code die Menüeinträge des aktiven Fensters
auslesen. Jedoch bekomme ich es nicht hin die existierenden Untermenüs
eines Menüpunktes auszulesen.
z.B. PureBasic Editor
Im erstem Menüpunkt "File" existiert ein Menüeintrag "Recent Files".
Für diesen Eintrag erhalte ich über die API nur den ID Wert "-1" und kann
somit das Untermenü nicht weiter auslesen

Hätte hierzu jemand eine Idee, wie ich das hinbekommen kann oder
ob es einen API Aufruf gibt mit dem ich das Problem lösen kann?
Wäre super, wenn Ihr mir hier weiterhelfen könntet.
Danke + Gruß,
Daniel
Code: Alles auswählen
Declare getWHandle()
MessageRequester("API32 - Menu Infos", "You can abort program with ESC key.")
Repeat
; Stop recording
If GetAsyncKeyState_(#VK_ESCAPE)
Quit = 1
EndIf
; Save Left Button
If GetAsyncKeyState_(#VK_LBUTTON)
If LB = 0
LB = 1
EndIf
Else
If LB = 1
getWHandle()
LB = 0
EndIf
EndIf
Until Quit = 1
Procedure getWHandle()
count = 0
exit = 0
buffer.s = ""
length = 1024
; get active window id
hWnd = GetForegroundWindow_()
; get menu id from active window
hMenu = GetMenu_(hWnd)
; example with purebasic menu
While exit = 0
; get all menu ids
hMenuSub = GetSubMenu_(hMenu, count)
; 0 = end of menubar
If hMenuSub > 0
Debug "--- Menu " + Str(count) + " ---"
; how many entries exist in submenu
leng = GetMenuItemCount_(hMenuSub)
; get all submenu ids
For i = 0 To leng
id = GetMenuItemID_(hMenuSub, i)
If id <> -1
GetMenuString_(hMenuSub, id, @buffer, @length, 0)
If buffer <> ""
Debug Str(id) + ": " + buffer
Else
Debug id
EndIf
Else
Debug id
EndIf
Next
count = count + 1
Else
exit = 1
EndIf
Wend
Debug "--- END ---"
EndProcedure