nacerbaaziz Posted February 14, 2019 Posted February 14, 2019 (edited) Hello my friends Can we create a single context menu on more than one item? For example, a context menu includes standardized options on more than one control, such as buttons or check boxes to Create a context menu on one item am using this function GUICtrlCreateContextMenu ($ HWND) How to link it with more than one element please? or if we can't do that, please give me a solution so i tried to add an context menus to all the controls but the script will be long, for that if their are any solutions i hope to give it to me thanks in advanced Edited February 14, 2019 by nacerbaaziz
Nine Posted February 14, 2019 Posted February 14, 2019 3 hours ago, nacerbaaziz said: Can we create a single context menu on more than one item? Yes 3 hours ago, nacerbaaziz said: How to link it with more than one element please? Possible 3 hours ago, nacerbaaziz said: thanks np, glad I could help “They did not know it was impossible, so they did it” ― Mark Twain Spoiler Block all input without UAC Save/Retrieve Images to/from Text Monitor Management (VCP commands) Tool to search in text (au3) files Date Range Picker Virtual Desktop Manager Sudoku Game 2020 Overlapped Named Pipe IPC HotString 2.0 - Hot keys with string x64 Bitwise Operations Multi-keyboards HotKeySet Recursive Array Display Fast and simple WCD IPC Multiple Folders Selector Printer Manager GIF Animation (cached) Debug Messages Monitor UDF Screen Scraping Round Corner GUI UDF Multi-Threading Made Easy Interface Object based on Tag
nacerbaaziz Posted February 14, 2019 Author Posted February 14, 2019 thanks my friend can you help me to do that? please give me the solution
Nine Posted February 14, 2019 Posted February 14, 2019 53 minutes ago, nacerbaaziz said: can you help me to do that? maybe 54 minutes ago, nacerbaaziz said: please give me the solution read help file “They did not know it was impossible, so they did it” ― Mark Twain Spoiler Block all input without UAC Save/Retrieve Images to/from Text Monitor Management (VCP commands) Tool to search in text (au3) files Date Range Picker Virtual Desktop Manager Sudoku Game 2020 Overlapped Named Pipe IPC HotString 2.0 - Hot keys with string x64 Bitwise Operations Multi-keyboards HotKeySet Recursive Array Display Fast and simple WCD IPC Multiple Folders Selector Printer Manager GIF Animation (cached) Debug Messages Monitor UDF Screen Scraping Round Corner GUI UDF Multi-Threading Made Easy Interface Object based on Tag
LarsJ Posted February 15, 2019 Posted February 15, 2019 The UDF functions are much more powerful than the built-in functions. Look at _GUICtrlMenu_TrackPopupMenu (). Add a new post if you need more help. Controls, File Explorer, ROT objects, UI Automation, Windows Message MonitorCompiled code: Accessing AutoIt variables, DotNet.au3 UDF, Using C# and VB codeShell menus: The Context menu, The Favorites menu. Shell related: Control Panel, System Image ListsGraphics related: Rubik's Cube, OpenGL without external libraries, Navigating in an image, Non-rectangular selectionsListView controls: Colors and fonts, Multi-line header, Multi-line items, Checkboxes and icons, Incremental searchListView controls: Virtual ListViews, Editing cells, Data display functions
careca Posted February 15, 2019 Posted February 15, 2019 This is a way to create the same context menu for multiple items. Essentially create the controls on an array, then loop through them and create the context for each one that way. ; 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) ;============================================================================= Global $Controls[3] $Controls[0] = GUICtrlCreateButton('1', 10, 10, 50, 20) $Controls[1] = GUICtrlCreateButton('2', 10, 40, 50, 20) $Controls[2] = GUICtrlCreateButton('3', 10, 70, 50, 20) ;============================================================================= GUISetState(@SW_SHOW) ;============================================================================= For $c = 0 To UBound($Controls)-1 Local $idContextmenu = GUICtrlCreateContextMenu($Controls[$c]) Local $idNewsubmenu = GUICtrlCreateMenu("new", $idContextmenu) Local $idNewsubmenuText = GUICtrlCreateMenuItem("text", $idNewsubmenu) Local $idMenuInfo = GUICtrlCreateMenuItem("Info", $idContextmenu) ConsoleWrite($Controls[$c] &@CRLF) Next ;============================================================================= While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop EndSwitch WEnd GUIDelete() EndFunc ;==>Example Spoiler Renamer - Rename files and folders, remove portions of text from the filename etc. GPO Tool - Export/Import Group policy settings. MirrorDir - Synchronize/Backup/Mirror Folders BeatsPlayer - Music player. Params Tool - Right click an exe to see it's parameters or execute them. String Trigger - Triggers pasting text or applications or internet links on specific strings. Inconspicuous - Hide files in plain sight, not fully encrypted. Regedit Control - Registry browsing history, quickly jump into any saved key. Time4Shutdown - Write the time for shutdown in minutes. Power Profiles Tool - Set a profile as active, delete, duplicate, export and import. Finished Task Shutdown - Shuts down pc when specified window/Wndl/process closes. NetworkSpeedShutdown - Shuts down pc if download speed goes under "X" Kb/s. IUIAutomation - Topic with framework and examples Au3Record.exe
nacerbaaziz Posted February 15, 2019 Author Posted February 15, 2019 hi brothers please i tried this but i did not succeed can you show me my error note this is just a section from an big script please help me to add the context menu into $label and $label0 global $label0 = GUICtrlCreateLabel(str("title"), 150, 90, 250, 20, $WS_TABSTOP) GUICtrlSetResizing (-1, 1) GUICtrlSetBkColor(-1, 0x461B7E) GUICtrlSetFont(-1, 14, 400, 0, "Arial", 0) GUICtrlSetOnEvent(-1, "order") GUICtrlSetState(-1, $GUI_focus) GUIStartGroup("") Global $listFile2 = GUICtrlCreateIcon("", -1, 10, 130, 32, 32) GUICtrlSetResizing (-1, 1) GUICtrlSetOnEvent(-1, "order") _Resource_SetToCtrlID(-1, 'files', $RT_ICON, Default, True) GUICtrlSetBkColor(-1, 0x461B7E) GUICtrlSetColor(-1, 0x461B7E) Global $Label = GUICtrlCreateLabel(str("noopened"), 50, 130, 420, 40, $WS_TABSTOP + $WS_GROUP, $WS_EX_ACCEPTFILES) ;GUICtrlSetState(-1, $GUI_DROPACCEPTED) GUICtrlSetResizing (-1, 1) GUICtrlSetBkColor(-1, 0x461B7E) GUICtrlSetFont(-1, 11, 400, 0, "Arial", 0) GUICtrlSetOnEvent(-1, "order") GUICtrlSetCursor(-1, -1) GUIStartGroup("") Global $Label1 = GUICtrlCreateLabel("", 100, 180, 200, 60) GUICtrlSetResizing (-1, 1) GUICtrlSetState(-1, $GUI_disable + $GUI_NOFOCUS + $GUI_hide) GUICtrlSetBkColor(-1, 0x461B7E) GUICtrlSetFont(-1, 11, 400, 0, "Arial", 0) Global $LabelMenu = GUICtrlCreateContextMenu($Label0) GUICtrlSetOnEvent(-1, "order") Global $LabelOpen = GUICtrlCreateMenuItem(str("opentofolder") & "... (control+f)", $LabelMenu) GUICtrlSetOnEvent(-1, "order") GUICtrlSetState(-1, $GUI_disable) Global $Labelinfo = GUICtrlCreateMenuItem(str("fileInfo") & "...", $LabelMenu) GUICtrlSetOnEvent(-1, "order") GUICtrlSetState(-1, $GUI_disable) Global $LabelCopyPath = GUICtrlCreateMenuItem(str("copyPath"), $LabelMenu) GUICtrlSetOnEvent(-1, "order") GUICtrlSetState(-1, $GUI_disable) Global $labelCopy = GUICtrlCreateMenuItem(str("copy") & "... (control+shift+C)", $LabelMenu) GUICtrlSetOnEvent(-1, "order") GUICtrlSetState(-1, $GUI_disable) Global $LabelPaste = GUICtrlCreateMenuItem(str("paste") & "... (control+v", $LabelMenu) GUICtrlSetOnEvent(-1, "order") Global $labelRemove = GUICtrlCreateMenuItem(str("PLRemove") & "... (del)", $LabelMenu) GUICtrlSetOnEvent(-1, "order") GUICtrlSetState(-1, $GUI_disable) Global $labelDel = GUICtrlCreateMenuItem(str("delete") & "... (shift+del)", $LabelMenu) GUICtrlSetOnEvent(-1, "order") GUICtrlSetState(-1, $GUI_disable) Global $LabelRename = GUICtrlCreateMenuItem(str("rename") & "... (shift+f2)", $LabelMenu) GUICtrlSetOnEvent(-1, "order") GUICtrlSetState(-1, $GUI_disable) Global $LabelProperties = GUICtrlCreateMenuItem(str("Properties") & "... (alt+enter)", $LabelMenu) GUICtrlSetOnEvent(-1, "order") GUICtrlSetState(-1, $GUI_disable) _GUICtrlMenu_TrackPopupMenu($LabelMenu, $label, -1, -1, 1, 1, 1, 0)
careca Posted February 15, 2019 Posted February 15, 2019 (edited) Could you post a reproducible script? One where i dont have to put all the necessary includes and so on? Also, could you enclose your code with the <code> frame/tool? It's right next to the smiley face. Edited February 15, 2019 by careca Spoiler Renamer - Rename files and folders, remove portions of text from the filename etc. GPO Tool - Export/Import Group policy settings. MirrorDir - Synchronize/Backup/Mirror Folders BeatsPlayer - Music player. Params Tool - Right click an exe to see it's parameters or execute them. String Trigger - Triggers pasting text or applications or internet links on specific strings. Inconspicuous - Hide files in plain sight, not fully encrypted. Regedit Control - Registry browsing history, quickly jump into any saved key. Time4Shutdown - Write the time for shutdown in minutes. Power Profiles Tool - Set a profile as active, delete, duplicate, export and import. Finished Task Shutdown - Shuts down pc when specified window/Wndl/process closes. NetworkSpeedShutdown - Shuts down pc if download speed goes under "X" Kb/s. IUIAutomation - Topic with framework and examples Au3Record.exe
nacerbaaziz Posted February 15, 2019 Author Posted February 15, 2019 hi the section that i put here is just for give you an Idea about what i want to do i have created an big window whitch have multy GUICtrls such as buttons and labels and check boxes and more and i have a context menu that have items, and i want to link this context menu with more then one control e.g 2 labels i dont know the right way to do that, please help me by a simple example or gid me to do it. am sorry about my bed english
careca Posted February 15, 2019 Posted February 15, 2019 Are you just ignoring my example? you know, the example right on top of your code. Spoiler Renamer - Rename files and folders, remove portions of text from the filename etc. GPO Tool - Export/Import Group policy settings. MirrorDir - Synchronize/Backup/Mirror Folders BeatsPlayer - Music player. Params Tool - Right click an exe to see it's parameters or execute them. String Trigger - Triggers pasting text or applications or internet links on specific strings. Inconspicuous - Hide files in plain sight, not fully encrypted. Regedit Control - Registry browsing history, quickly jump into any saved key. Time4Shutdown - Write the time for shutdown in minutes. Power Profiles Tool - Set a profile as active, delete, duplicate, export and import. Finished Task Shutdown - Shuts down pc when specified window/Wndl/process closes. NetworkSpeedShutdown - Shuts down pc if download speed goes under "X" Kb/s. IUIAutomation - Topic with framework and examples Au3Record.exe
nacerbaaziz Posted February 15, 2019 Author Posted February 15, 2019 (edited) dear @careca I never ignore your example. but on this code just the items on the last Context menu can use it because the vars are the same if you have an other suggestions please give it to me #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <MsgBoxConstants.au3> Example() Func Example() GUICreate("My GUI Context Menu", 300, 200) Global $Controls[3] $Controls[0] = GUICtrlCreateButton('1', 10, 10, 50, 20) $Controls[1] = GUICtrlCreateButton('2', 10, 40, 50, 20) $Controls[2] = GUICtrlCreateButton('3', 10, 70, 50, 20) GUISetState(@SW_SHOW) For $c = 0 To UBound($Controls)-1 Local $idContextmenu = GUICtrlCreateContextMenu($Controls[$c]) Local $idNewsubmenu = GUICtrlCreateMenu("new", $idContextmenu) Local $idNewsubmenuText = GUICtrlCreateMenuItem("text", $idNewsubmenu) Local $idMenuInfo = GUICtrlCreateMenuItem("Info", $idContextmenu) Next While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop case $idMenuInfo msgBox(0, "", "") EndSwitch WEnd GUIDelete() EndFunc Edited February 15, 2019 by nacerbaaziz Tidied the code and AutoIt3 syntax for codebox
Developers Jos Posted February 15, 2019 Developers Posted February 15, 2019 @nacerbaaziz, Please Tidy your code and use AutoIt3 in stead of plain text in the CodeBox when posting sourcecode. Thanks Jos nacerbaaziz 1 SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past.
careca Posted February 15, 2019 Posted February 15, 2019 40 minutes ago, nacerbaaziz said: ...on this code just the items on the last Context menu can use it because the vars are the same Can you clarify what you mean? Maybe i didn't understand it correctly, i got the idea that what you want to do is create the same context menu for many items. This is what it does, puts a context menu in the 3 buttons. I dont know what you want to do later on, but you can differentiate between the buttons. Spoiler Renamer - Rename files and folders, remove portions of text from the filename etc. GPO Tool - Export/Import Group policy settings. MirrorDir - Synchronize/Backup/Mirror Folders BeatsPlayer - Music player. Params Tool - Right click an exe to see it's parameters or execute them. String Trigger - Triggers pasting text or applications or internet links on specific strings. Inconspicuous - Hide files in plain sight, not fully encrypted. Regedit Control - Registry browsing history, quickly jump into any saved key. Time4Shutdown - Write the time for shutdown in minutes. Power Profiles Tool - Set a profile as active, delete, duplicate, export and import. Finished Task Shutdown - Shuts down pc when specified window/Wndl/process closes. NetworkSpeedShutdown - Shuts down pc if download speed goes under "X" Kb/s. IUIAutomation - Topic with framework and examples Au3Record.exe
nacerbaaziz Posted February 15, 2019 Author Posted February 15, 2019 here is a simple example i want to show the same context menu when press right click on the all labels please help me local $hGUI, $HMenu, $ID_Open, $ID_save, $ID_cut, $ID_Label0, $ID_label $hGUI = GUICreate("menu", 400, 400) $label0 = GUICtrlCreateLabel("right click to get options", 100, 50, 200, 30) $label = GUICtrlCreateLabel("right click to get the same options", 100, 110, 200, 30) $hMenu = GUICtrlCreateContextMenu($label0) $ID_Open = GUICtrlCreateMenuItem("&open", $hmenu) $ID_save = GUICtrlCreateMenuItem("save the &file....", $hmenu) $ID_cut = GUICtrlCreateMenuItem("move the &file....", $hmenu) GUISetState(@sw_show, $hGUI) while 1 switch GUIGetMSG() case -3 exit case $id_Open _openFunc() case $id_save saveFunc() case $id_Cut moveFunc() endSwitch Wend func OpenFunc() ;orders.... endFunc func saveFunc() ;orders.... endFunc func MoveFunc() ;orders.... endFunc
Developers Jos Posted February 15, 2019 Developers Posted February 15, 2019 39 minutes ago, nacerbaaziz said: here is a simple example 50%... Correct color coding but totally unreadable as the script isn't tidied. You need to learn to properly format code to make it soooo much easier to read and understand! Jos SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past.
nacerbaaziz Posted February 15, 2019 Author Posted February 15, 2019 hi dear my problem is with the code editor dialog it isn't accessible with my screen reader for that it hard for me to put the code in the correct way
Developers Jos Posted February 15, 2019 Developers Posted February 15, 2019 Use SciTE and it is easy.... I simply move on when I see unreadable code. your choice though... Jos SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past.
pixelsearch Posted February 15, 2019 Posted February 15, 2019 Hi nacerbaaziz, Here is a way to do it. You can add as many controls ID's as you wish in " >>>>>> The 'OR' line <<<<<<" expandcollapse popup$hGUI = GUICreate("Menu", 400, 300) $id_Label_1 = GUICtrlCreateLabel("Right click to get options in menu", 100, 50, 165) $id_Label_2 = GUICtrlCreateLabel("Right click to get the same options", 100, 110, 165) $id_Label_hard_to_find = GUICtrlCreateLabel("", 1, 1, 1, 1) $id_Context = GUICtrlCreateContextMenu($id_Label_hard_to_find) $id_Open = GUICtrlCreateMenuItem("&Open", $id_Context) $id_Save = GUICtrlCreateMenuItem("Save the &file....", $id_Context) $id_Cut = GUICtrlCreateMenuItem("Move the &file....", $id_Context) $hMenu = GUICtrlGetHandle($id_Context) GUISetState() While 1 $aInfo = GUIGetCursorInfo() If Not @error And $aInfo[3] = 1 And _ ($aInfo[4] = $id_Label_1 Or $aInfo[4] = $id_Label_2) Then ; >>>>>> The 'OR' line <<<<<< $mPos = MouseGetPos() DllCall("user32.dll", "int", "TrackPopupMenuEx", "hwnd", $hMenu, _ "int", 0, "int", $mPos[0], "int", $mPos[1], "hwnd", $hGUI, "ptr", 0) EndIf Switch GUIGetMSG() Case -3 Exit Case $id_Open OpenFunc() Case $id_Save SaveFunc() Case $id_Cut MoveFunc() EndSwitch Wend Func OpenFunc() Msgbox(0, "OpenFunc", "Here we are #1") EndFunc Func SaveFunc() Msgbox(0, "SaveFunc", "Here we are #2") EndFunc Func MoveFunc() Msgbox(0, "MoveFunc", "Here we are #3") EndFunc Good luck "I think you are searching a bug where there is no bug... don't listen to bad advice."
nacerbaaziz Posted February 15, 2019 Author Posted February 15, 2019 (edited) @pixelsearch thank you for your example dear this way unfortunately don't work with the screens readers, because Usually the screen readers have a virtual cursor. and its work with the focus items only i'am waiting for other solutions. please help me because am now making an audio player for the blinds users, for that i need to this option. with my greetings Edited February 15, 2019 by nacerbaaziz
LarsJ Posted February 15, 2019 Posted February 15, 2019 careca, If you had tested your own code you would have seen that it does not work for buttons 1 and 2. You do not save ControlIds for the corresponding context menu items and are therefore unable to detect when the menu items are clicked. Controls, File Explorer, ROT objects, UI Automation, Windows Message MonitorCompiled code: Accessing AutoIt variables, DotNet.au3 UDF, Using C# and VB codeShell menus: The Context menu, The Favorites menu. Shell related: Control Panel, System Image ListsGraphics related: Rubik's Cube, OpenGL without external libraries, Navigating in an image, Non-rectangular selectionsListView controls: Colors and fonts, Multi-line header, Multi-line items, Checkboxes and icons, Incremental searchListView controls: Virtual ListViews, Editing cells, Data display functions
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