Code : Tout sélectionner
#include <WindowsConstants.au3>
#include <Misc.au3>
Opt("GUIOnEventMode", 1)
Local $iniFile = @ScriptDir & "\formulaire.ini"
Local $aKeys, $aItems[1][2]
; ############## Creation d'un fenetre invisible qui permet de creer le menu contextuel ##################
$hGUI = GUICreate("MyContextMenu", 0, 0, 0, 0, 0, BitOr($WS_EX_TOOLWINDOW, $WS_EX_LAYERED) )
; #########################################################################################################
Local $contextmenu = GUICtrlCreateContextMenu()
Local $HContext = GUICtrlGetHandle($contextmenu)
Local $aSection = IniReadSectionNames($iniFile)
For $i = 1 To $aSection[0]
$menu = GUICtrlCreateMenu($aSection[$i], $contextmenu)
$aKeys = IniReadSection($iniFile, $aSection[$i])
For $j = 1 To $aKeys[0][0]
Redim $aItems[UBound($aItems) + 1][2]
$aItems[UBound($aItems) - 1][0] = GUICtrlCreateMenuItem($aKeys[$j][0], $menu)
$aItems[UBound($aItems) - 1][1] = $aKeys[$j][0]
GUICtrlSetOnEvent(-1, "_RetrieveMenuItem")
Next
$aItems[0][0] = UBound($aItems) - 1
Next
; Ajout d'un item pour quitter (a supprimer en fonction du besoin)
GUICtrlCreateMenuItem("", $contextmenu)
GUICtrlCreateMenuItem("Exit", $contextmenu)
GUICtrlSetOnEvent(-1, "_Exit")
GUISetState()
While 1
If _IsPressed("01") And _IsPressed("11") And _IsPressed("12") Then _MenuShow()
Sleep(10)
WEnd
Func _RetrieveMenuItem()
For $i = 1 To $aItems[0][0]
If @GUI_CtrlId = $aItems[$i][0] Then
MsgBox(0, "", "clic sur " & $aItems[$i][1] & " (ID = " & @GUI_CtrlId & ")" & @CRLF)
EndIf
Next
EndFunc
Func _MenuShow()
Local $x = MouseGetPos(0), $y = MouseGetPos(1)
DllCall("user32.dll", "int", "TrackPopupMenuEx", "hwnd", $HContext, "int", 0, "int", $x, "int", $y, "hwnd", $hGUI, "ptr", 0)
EndFunc
Func _Exit()
Exit
EndFunc