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







