autoit3 - 触发上下文菜单,在按钮单击/按下时打开

时间:2015-01-21 09:52:48

标签: autoit

我正在开展一个项目,在这个项目中我决定我应该有以前搜索过的东西的历史(因为它是一个可以搜索东西的应用程序),所以我一直在想我可以创建上下文菜单或定期菜单,我可以以某种方式强制激活按钮点击或使用加速器。

现在,我还没弄清楚如何做到这一点。

首先我尝试了GuiCtrlSetState()功能,这似乎不起作用(我尝试过显示和焦点),然后我尝试了加速器,他们没有做任何事情。

  • 所以我想知道有什么方法可以按下按钮/点击或按键(带加速器)弹出上下文菜单或常规菜单吗?

所以我基本上想要做的是某种弹出窗口,你点击一个按钮或按一个键来触发上下文菜单或常规菜单打开。

我知道我可以上学,并使用新的GUI或只是一个组合框的历史或任何东西,但我有点想要这个,如果有任何方法这样做。

  • 任何帮助,或者做同样事情的另一种方式,

  • 这是测试代码,我试图让测试按钮触发并激活上下文菜单,我尝试了同样的常规 菜单:

#NoTrayIcon
#include <GUIConstantsEx.au3>

GUICreate("test123")
$but = guictrlcreatebutton("test", -1, -1, -1)
$xt  = GUICtrlCreateContextMenu("test context menu")
       GUICtrlCreateMenuItem("test1", $xt)
       GUICtrlCreateMenuItem("test2", $xt)
GUISetState(@SW_MAXIMIZE)

While 1
    $msg = GUIGetMsg()

    If $msg = $but Then
        GUICtrlSetState($xt, $GUI_FOCUS)
    EndIf

    Sleep(5)
WEnd

1 个答案:

答案 0 :(得分:0)

如果您检查GUICtrlCreateContextMenu下的帮助文件:

; right click on gui to bring up context Menu.
; right click on the "ok" button to bring up a controll specific context menu.

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>

Example()

Func Example()
    GUICreate("My GUI Context Menu", 300, 200)

    Local $idContextmenu = GUICtrlCreateContextMenu()

    Local $idNewsubmenu = GUICtrlCreateMenu("new", $idContextmenu)
    Local $idNewsubmenuText = GUICtrlCreateMenuItem("text", $idNewsubmenu)

    Local $idButton = GUICtrlCreateButton("OK", 100, 100, 70, 20)
    Local $idButtoncontext = GUICtrlCreateContextMenu($idButton)
    Local $idMenuAbout = GUICtrlCreateMenuItem("About button", $idButtoncontext)

    Local $idMenuOpen = GUICtrlCreateMenuItem("Open", $idContextmenu)
    Local $idMenuSave = GUICtrlCreateMenuItem("Save", $idContextmenu)
    GUICtrlCreateMenuItem("", $idContextmenu) ; separator

    Local $idMenuInfo = GUICtrlCreateMenuItem("Info", $idContextmenu)

    GUISetState(@SW_SHOW)

    ; Loop until the user exits.
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                ExitLoop
            Case $idButton
                MsgBox($MB_SYSTEMMODAL, "Button Clicked", 'OK')
            Case $idMenuAbout
                MsgBox($MB_SYSTEMMODAL, "Menu Selected", 'About')
            Case $idMenuOpen
                MsgBox($MB_SYSTEMMODAL, "Menu Selected", 'Open')
            Case $idMenuSave
                MsgBox($MB_SYSTEMMODAL, "Menu Selected", 'Save')
            Case $idMenuInfo
                MsgBox($MB_SYSTEMMODAL, "Menu Selected", 'Info')
            Case $idNewsubmenuText
                MsgBox($MB_SYSTEMMODAL, "SubMenu Selected", 'Text')
        EndSwitch
    WEnd
    GUIDelete()
EndFunc   ;==>Example