zerobazar Posted November 8, 2007 Share Posted November 8, 2007 It works like a charm, but I must admit that I do not fully understand everything involved there... Would there be a way to achieve the same result by using Auto3Lib? (and that, maybe, would be easier to understand by me?). Regards. Link to comment Share on other sites More sharing options...
MrCreatoR Posted November 8, 2007 Share Posted November 8, 2007 Would there be a way to achieve the same result by using Auto3Lib?Maybe, but what is really matter if it works? DllCallBack will be usefull to you in many other tasks (if you will learn to like/use it ). Spoiler Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1 AutoIt Russian Community My Work... Spoiler Projects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize ProgramUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF Examples: ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating ) * === My topics === * ================================================== ================================================== AutoIt is simple, subtle, elegant. © AutoIt Team Link to comment Share on other sites More sharing options...
zerobazar Posted November 9, 2007 Share Posted November 9, 2007 Fair enough! I will try to learn! In fact I was asking about Auto3Lib because I am a bit lost there also! I tried a few test with Auto3Lib to replicate this context menu on an edit control, without success so far. Well I guess that's an other area where I need to learn... Thanks. Link to comment Share on other sites More sharing options...
wraithdu Posted September 3, 2008 Share Posted September 3, 2008 Updated version of this (I was looking for something like this a while ago). Granted, there's a more complete example in the helpfile under _WinAPI_CallWindowProc(), but I digress. expandcollapse popup#include <GuiConstantsEx.au3> #include <Constants.au3> #include <WinAPI.au3> #include <GuiMenu.au3> Global Const $WM_CONTEXTMENU = 0x007B $Gui = GUICreate("Disable Context Menu Demo") $Edit = GUICtrlCreateEdit("", 20, 20) $DummyMenu = GUICtrlCreateDummy() $ContextMenu = GUICtrlCreateContextMenu($DummyMenu) $CommonMenuItem = GUICtrlCreateMenuItem("Common", $ContextMenu) $FileMenuItem = GUICtrlCreateMenuItem("File", $ContextMenu) GUICtrlCreateMenuItem("", $ContextMenu) $ExitMenuItem = GUICtrlCreateMenuItem("Exit", $ContextMenu) GUISetState() $hProc = DllCallBackRegister("_WindowProc", "int", "hwnd;uint;wparam;lparam") $OriginalWindowProc = _WinSubclass(GUICtrlGetHandle($Edit), DllCallbackGetPtr($hProc)) While 1 $Msg = GUIGetMsg() Select Case $Msg = -3 GUIDelete() DllCallBackFree($hProc) Exit EndSelect WEnd ; Show a menu in a given GUI window which belongs to a given GUI ctrl Func ShowMenu($hWnd, $nContextID) _GUICtrlMenu_TrackPopupMenu(GUICtrlGetHandle($nContextID), $hWnd) EndFunc Func _WindowProc($hWnd, $uiMsg, $wParam, $lParam) ; Disable the context menu and show your own menu Switch $uiMsg Case $WM_CONTEXTMENU ShowMenu($Gui, $ContextMenu) Return 0 EndSwitch Return _WinAPI_CallWindowProc($OriginalWindowProc, $hWnd, $uiMsg, $wParam, $lParam) EndFunc Func _WinSubclass($hWnd, $lpNewWindowProc) Return _WinAPI_SetWindowLong($hWnd, $GWL_WNDPROC, $lpNewWindowProc) EndFunc Link to comment Share on other sites More sharing options...
rasim Posted September 4, 2008 Share Posted September 4, 2008 wraithduFull version Link to comment Share on other sites More sharing options...
wraithdu Posted September 4, 2008 Share Posted September 4, 2008 Nice My original need was a custom Desktop / Explorer context menu. But the mouse click trapping was troublesome at best. In the end I went with a hotkey activated menu. However looking at these scripts the last few days, I've learned a lot about the DllCallback, subclassing, and a better mental picture of how a GUI is constructed (all controls are windows). It's been a good learning experience! 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