jacq Posted May 25, 2013 Share Posted May 25, 2013 (edited) Welcome How can I disable pressing the right button on the gui input or make it possible but with functions paste only. The paste option would be best. expandcollapse popup#include <GUIConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> Opt("GUICoordMode",2) Opt("GUIResizeMode", 1) Opt("GUIOnEventMode", 1) $Parent1 = GUICreate("Program", 550, 260, -1, -1) ; width, height, position on screen from left $Text= GUICtrlCreateLabel("Nazwa", 30, 20, 400, 20) $name = GUICtrlCreateInput("", -400, 5, 300, 20) GUISetOnEvent($GUI_EVENT_CLOSE, "Events") GUISetOnEvent($GUI_EVENT_SECONDARYDOWN, "Events") GUISetState(@SW_SHOW) While 1 Sleep(10) Wend Func verPressed() Run("winver") EndFunc While 1 Sleep(10) Wend Func Events() Select Case @GUI_CTRLID = $GUI_EVENT_CLOSE Exit Case @GUI_CTRLID = $GUI_EVENT_MINIMIZE MsgBox(0, "Window Minimized", "ID=" & @GUI_CTRLID & " WinHandle=" & @GUI_WINHANDLE) Case @GUI_CTRLID = $GUI_EVENT_RESTORE MsgBox(0, "Window Restored", "ID=" & @GUI_CTRLID & " WinHandle=" & @GUI_WINHANDLE) Case @GUI_CTRLID = $GUI_EVENT_SECONDARYDOWN MsgBox(64, "Click", "Right click not allowed") EndSelect EndFunc I found this code and tried to add it to my code, but still I have errors. expandcollapse popup#include <GuiConstants.au3> #Include <Misc.au3> $Gui = GUICreate("Right Click Test", 400, 400) ;- ///// Credit an Edit and Input box to show contextual menus for ////// $edit = GUICtrlCreateEdit("Test Information", 0, 0, 400, 200) $input = GUICtrlCreateInput("Test Input", 0, 220, 120, 25) ;- //// Create a dummy Context Menu //////// $DummyMenu = GUICtrlCreateDummy() $ContextMenu = GUICtrlCreateContextMenu($DummyMenu) ;- //// Add the 'Disabled' item to the menu ////// GUICtrlCreateMenuItem("Disabled", $ContextMenu) ;- //// Open the DLL responsible for keyclicks/controls/etc //// $dll = DllOpen("user32.dll") GUISetState() While 1 $Msg = GUIGetMsg() ;- //// If the right 'menu' context key is pressed then show the disabled context menu //// if _IsPressed("5D", $dll) Then Context($Gui, $ContextMenu) EndIf Select Case $Msg = $gui_event_close DllClose($dll) Exit ;- //// If the Right Mouse Button is clicked, show the disabled context menu //// Case $Msg = -9 Context($Gui, $ContextMenu) EndSelect WEnd ;- //// This is the context menu function to be able to show the menu //// Func Context($hWnd, $nContextID) Local $hMenu = GUICtrlGetHandle($nContextID) ;- /// Get current mouse position //// $arPos = MouseGetPos() ;- /// Break up mouse positions into variables //// Local $x = $arPos[0] Local $y = $arPos[1] ;- //// Call the dll file opened above to show the custom context menu at the current mouse position //// DllCall($dll, "int", "TrackPopupMenuEx", "hwnd", $hMenu, "int", 0, "int", $x, "int", $y, "hwnd", $hWnd, "ptr", 0) EndFunc ;==>ShowMenu Edited May 25, 2013 by jacq Link to comment Share on other sites More sharing options...
Solution johnmcloud Posted May 25, 2013 Solution Share Posted May 25, 2013 Try this: expandcollapse popup#include <WindowsConstants.au3> #include <GuiConstantsEx.au3> #include <Constants.au3> #include <GuiMenu.au3> #include <WinAPI.au3> Global Enum $idPaste = 1000 $hGUI = GUICreate("Test", 300, 200) $Input = GUICtrlCreateInput("Input Test", 16, 16, 100, 25) $hMenu = _GUICtrlMenu_CreatePopup() _GUICtrlMenu_AddMenuItem($hMenu, "Paste", $idPaste) GUISetState() $wProcHandle = DllCallbackRegister("_WindowProc", "ptr", "hwnd;uint;wparam;lparam") $wProcOld = _WinAPI_SetWindowLong(GUICtrlGetHandle($Input), $GWL_WNDPROC, DllCallbackGetPtr($wProcHandle)) While 1 $msg = GUIGetMsg() Switch $msg Case $GUI_EVENT_CLOSE ExitLoop EndSwitch WEnd GUIDelete($hGUI) DllCallbackFree($wProcHandle) Func _WindowProc($hWnd, $msg, $wParam, $lParam) Switch $hWnd Case GUICtrlGetHandle($Input) Switch $msg Case $WM_CONTEXTMENU _GUICtrlMenu_TrackPopupMenu($hMenu, $wParam) Return 0 Case $WM_COMMAND Switch $wParam Case $idPaste MsgBox(0, 0, "Put Func Here") EndSwitch EndSwitch EndSwitch Local $aRet = DllCall("user32.dll", "int", "CallWindowProc", "ptr", $wProcOld, "hwnd", $hWnd, "uint", $msg, "wparam", $wParam, "lparam", $lParam) Return $aRet[0] EndFunc ;==>_WindowProc Link to comment Share on other sites More sharing options...
jacq Posted May 25, 2013 Author Share Posted May 25, 2013 Thanks this code is cool Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now