2015-01-21 120 views
0

我正在一個項目,我決定我應該有以前搜索的東西的歷史(因爲它是一個應用程序,你可以搜索的東西),所以 我一直認爲我可以創建上下文菜單或常規菜單,以某種方式強制點擊按鈕或使用加速鍵激活。autoit3 - 觸發上下文菜單打開按鈕點擊/按

現在,我一直無法弄清楚如何使這項工作。

首先我嘗試了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 
sleep(5) 
$msg=GUIGetMsg() 
if $msg=$but then 
guictrlsetstate($xt, $GUI_FOCUS) 
endif 
wend 

»

回答

0

如果檢查GUICtrlCr下的幫助文件eateContextMenu:

; 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 
+0

不,我想要做的是使上下文菜單以某種方式出現左鍵單擊或按鈕上的按鈕。目前,我使用功能ControlClick來做到這一點 – 2015-01-22 01:44:30

+0

在一個不是你自己的GUI創建的按鈕?所以你真的不想要一個contextmenu,因爲contextmenu是我用過的所有語言中的非主鼠標。你想要的是[自定義彈出gui解決方案](http://www.autoitscript.com/forum/topic/103008-popup-menu-udf/)? – 2015-01-23 04:44:25

+0

是的,這是我一直在尋找的。非常感謝。 – 2015-01-23 06:30:57