Context Menu

  • Geht das??

    ohne gui im egtl nicht. aber wieso baust dus nicht so um, dann kannst du genauso deine hotkeys verwenden:

    Spoiler anzeigen
    [autoit]

    #include <GuiMenu.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet("{F10}", "Menue")

    [/autoit] [autoit][/autoit] [autoit]

    $Handle = GUICreate("")

    [/autoit] [autoit][/autoit] [autoit]

    Global Enum $idOpen = 1000, $idSave, $idInfo, $idExit
    Local $hMenu

    [/autoit] [autoit][/autoit] [autoit]

    $hMenu = _GUICtrlMenu_CreatePopup ()
    _GUICtrlMenu_InsertMenuItem ($hMenu, 0, "Open", $idOpen)
    _GUICtrlMenu_InsertMenuItem ($hMenu, 1, "Save", $idSave)
    _GUICtrlMenu_InsertMenuItem ($hMenu, 2, "", 0)
    _GUICtrlMenu_InsertMenuItem ($hMenu, 3, "Info", $idInfo)
    _GUICtrlMenu_InsertMenuItem ($hMenu, 4, "EXIT", $idExit)

    [/autoit] [autoit][/autoit] [autoit]

    Func OnAutoItExit()
    _GUICtrlMenu_DestroyMenu ($hMenu)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ; Register message handlers
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(10)
    Wend

    [/autoit] [autoit][/autoit] [autoit]

    ; Handle WM_COMMAND messages
    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Switch $iwParam
    Case $idOpen
    _WinAPI_ShowMsg ("Open")
    Case $idSave
    _WinAPI_ShowMsg ("Save")
    Case $idInfo
    _WinAPI_ShowMsg ("Info")
    Case $idExit
    Exit
    EndSwitch
    EndFunc ;==>WM_COMMAND

    [/autoit] [autoit][/autoit] [autoit]

    Func Menue()
    _GUICtrlMenu_TrackPopupMenu ($hMenu, $Handle)
    EndFunc

    [/autoit]
  • Auch eine Möglichkeit (ziemlich die selbe).

    Spoiler anzeigen
    [autoit]

    Opt('GUIOnEventMode', 1)

    [/autoit] [autoit][/autoit] [autoit]

    Global $hGui = GUICreate("Dummy Gui", 0, 0, -1, -1)
    GUISetOnEvent(-3, '_Exit')

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet("1", "_NewMenu")
    HotKeySet("2", "_NewMenu")
    HotKeySet("{ESC}", "_Exit")

    [/autoit] [autoit][/autoit] [autoit]

    $DateiContext = GUICtrlCreateContextMenu(GUICtrlCreateDummy())
    $OptionsOpen = GUICtrlCreateMenuItem("Ö&ffnen", $DateiContext)
    $OptionsClose = GUICtrlCreateMenuItem("S&chließen", $DateiContext)
    GUICtrlCreateMenuItem("", $DateiContext)
    $OptionsExit = GUICtrlCreateMenuItem("B&eenden", $DateiContext)
    GUICtrlSetOnEvent(-1, '_Exit')

    [/autoit] [autoit][/autoit] [autoit]

    $HelpContext = GUICtrlCreateContextMenu(GUICtrlCreateDummy())
    $HelpWWW = GUICtrlCreateMenuItem("&Website", $HelpContext)
    GUICtrlSetOnEvent(-1, '_Website')
    GUICtrlCreateMenuItem("", $HelpContext)
    $HelpAbout = GUICtrlCreateMenuItem("Ü&ber...", $HelpContext)
    GUICtrlSetOnEvent(-1, '_About')

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(10000)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _NewMenu()
    If @HotKeyPressed = "1" Then
    TrackPopupMenu($hGui, GUICtrlGetHandle($DateiContext), 20, 20)
    Else
    TrackPopupMenu($hGui, GUICtrlGetHandle($HelpContext), 100, 100)
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _About()
    MsgBox(64, "About...", "Beispiel für ein eigenes Menü")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Website()
    MsgBox(64, "Website...", "www.autoit.de")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func TrackPopupMenu($hWnd, $hMenu, $x, $y)
    DllCall("user32.dll", "int", "TrackPopupMenuEx", "hwnd", $hMenu, "int", 0, "int", $x, "int", $y, "hwnd", $hWnd, "ptr", 0)
    EndFunc ;==>TrackPopupMenu

    [/autoit]
  • So gehts auch (wollt noch meinen Senf abgeben :D)

    m öffnet das Menü.

    Spoiler anzeigen
    [autoit]

    #include <GuiMenu.au3>
    #include <GuiConstantsEx.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('MustDeclareVars', 1)
    HotKeySet("{m}", "CONTEXTMENU")
    Global Enum $idOpen = 1000, $idSave, $idInfo
    Global $hGUI
    _Main()

    [/autoit] [autoit][/autoit] [autoit]

    Func _Main()

    [/autoit] [autoit][/autoit] [autoit]

    ; Create GUI
    $hGUI = GUICreate("Menu", 1, 1, 0, 0, $WS_POPUP)
    WinSetTrans($hGUI, "", 1)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    ; Register message handlers
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

    [/autoit] [autoit][/autoit] [autoit]

    ; Loop until user exits
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    EndFunc ;==>_Main

    [/autoit] [autoit][/autoit] [autoit]

    ; Handle WM_COMMAND messages
    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Switch $iwParam
    Case $idOpen
    _WinAPI_ShowMsg("Open")
    Case $idSave
    _WinAPI_ShowMsg("Save")
    Case $idInfo
    _WinAPI_ShowMsg("Info")
    EndSwitch
    EndFunc ;==>WM_COMMAND

    [/autoit] [autoit][/autoit] [autoit]

    ; Handle WM_CONTEXTMENU messages
    Func CONTEXTMENU()
    Local $hMenu

    [/autoit] [autoit][/autoit] [autoit]

    $hMenu = _GUICtrlMenu_CreatePopup()
    _GUICtrlMenu_InsertMenuItem($hMenu, 0, "Open", $idOpen)
    _GUICtrlMenu_InsertMenuItem($hMenu, 1, "Save", $idSave)
    _GUICtrlMenu_InsertMenuItem($hMenu, 3, "", 0)
    _GUICtrlMenu_InsertMenuItem($hMenu, 3, "Info", $idInfo)
    _GUICtrlMenu_TrackPopupMenu($hMenu, $hGUI)
    _GUICtrlMenu_DestroyMenu($hMenu)
    Return True
    EndFunc ;==>CONTEXTMENU

    [/autoit]