Ich hab hier Problem, ich hoffe ihr könnt mir helfen.
Google und probiere schon locker seit ca 15 Stunden rum, hab kein Nerv
mehr -.-
Also der Code sendet ein Klick zu nem Menu von nem anderen Prog (komischerweise geht der
bei keinem einzigen Prog das in PB geschrieben wurde, sende ich an Tools wie paint,notepad,notepad2 die nicht in pb geschrieben wurden funzt es wenigstens wenn kein Untermenü Eintrag angeklickt werden soll)
getestet hab ich es mit notepad,paint & notepad2
Das Problem ist, daß ich es einfach nicht hinkriege, einen Eintrag von einem Untermenü
anzusprechen.
z.B
Code: Alles auswählen
File
-------
New
Open
Save
Save as -> as bla1
as bla2
as bla3
Close
Exit
was ich an Werten probiert hab, es funzt einfach nicht.
Alles andere, daß nicht in einem Untermenü ist, wird ausgeführt.
Benutze StickyWindow und ein F5 Keyevent, damit ich schnell das Window Handle
vom Fenster über das die Maus grade ist, kriege.
Einfach mal mit Paint testen, funzt (Toolbox wird ausgeblendet/eingeblendet, wenn Window Handle von Paint benutzt wird) soweit, bis auf "Ansicht"->"Zoom"->alle Einträge unter Zoom
Code: Alles auswählen
Enumeration
#MainWin
#Bla_T
#DAMN_WORK_NOW
EndEnumeration
Global Pause
Structure Point64
StructureUnion
p.POINT
q.q
EndStructureUnion
EndStructure
Procedure ShowHandle(nevermind)
hndl = 0
cursor.Point64
Repeat
GetCursorPos_(cursor.Point64)
hndl = WindowFromPoint_( cursor\q )
If Pause = 0
SetGadgetText(#Bla_T,"Handle-ID: "+Str(hndl))
Else
SetGadgetText(#Bla_T,GetGadgetText(#Bla_T)+" FREEZED")
SetClipboardText(Str(hndl))
Debug "WINDOW HANDLE="+GetClipboardText()
beep_(600,100)
Repeat
Delay(2)
Until Pause=0
EndIf
Delay(100)
ForEver
EndProcedure
Procedure ClearKeyBuffers(nevermind)
Repeat
If GetActiveWindow() <> #MainWin
nothing=GetAsyncKeyState_(#VK_F5)
EndIf
Delay(2)
ForEver
EndProcedure
If OpenWindow(#MainWin,0,0,200,300,"Send from me",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
StickyWindow(#MainWin,1)
TextGadget(#Bla_T,10,100,200,20,"")
ButtonGadget(#DAMN_WORK_NOW,10,40,100,20,"Debug Menu ID")
CreateThread(@ClearKeyBuffers(),0)
CreateThread(@ShowHandle(),#Null)
Repeat
F5=GetAsyncKeyState_(#VK_F5)
If F5
Delay(100) : If Pause : Pause=0 : Else : Pause=1 : EndIf
EndIf
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case #DAMN_WORK_NOW
handle = Val(GetClipboardText())
Debug "Handle="+Str(handle)
main_menu_handle = GetMenu_(handle)
Debug "Menu Handle="+Str(main_menu_handle)
menu_id = GetSubMenu_(main_menu_handle,2) ;0 = First Menu from Left Site
Debug "Menu ID="+Str(menu_id)
max_items=GetMenuItemCount_(menu_id)
Debug "Menu Items="+Str(max_items)
zefix = -200 ; keine Ahnung wie ich das automatisch füllen soll !
menu_item_id = GetMenuItemID_(menu_id,zefix) ; Bringt mir gar nichts !
SendMessage_(handle,#WM_COMMAND,menu_item_id,main_menu_handle) ; geht nicht, siehe Zeile drüber !
Debug "Menu Item ID="+Str(menu_item_id)
SendMessage_(handle,#WM_COMMAND,0,main_menu_handle) ; FUNZT IN PAINT WEIL KEIN UNTERMENU
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndIf