Razraal Posted July 25, 2016 Posted July 25, 2016 Hey there folks. Task: I want to detect a click (preferably outside the current GUI), however I'm being unable to do so. I've been struggling with this issue for a few hours, so I decided to test it apart from my project, and coded this piece of program: (all the necessary includes) HotKeySet("{ESC}", "exit_program") Func exit_program() Exit EndFunc GUICreate("fu*** sake", 100, 100) GUISetState(@SW_SHOW) While True Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop Case $GUI_EVENT_PRIMARYUP ConsoleWrite("lol"&@LF) EndSwitch WEnd Supposedly I should detect a click with the event $GUI_EVENT_PRIMARYUP (releasing the left button). Problem is it only detects when I click inside my GUI. When I do it outside, the program loses focus and this in turn keeps it from functioning properly (maybe it starts idling for CPU economy, who knows). The most direct solution I thought about was being able to make the GUI always active. However I have no idea how. Any solutions you might think of? Cheers!
InunoTaishou Posted July 26, 2016 Posted July 26, 2016 Try looking into _IsPressed or, if you want to get complicated, you can use a low level mouse hook. What are you trying to detect the mouse click for? Maybe there's a better way to do what you want.
Razraal Posted July 26, 2016 Author Posted July 26, 2016 The existance of a "simpler/better" solution is irrelevant: if we contour the problem by reshaping it into a different one, we're not solving the original one. Problem: I want my program to be able to detect a single left click even when the current and only active GUI has no focus. Sequence of actions: I have a GUI, with focus; I click outside the GUI; Desired action: The click is detected. What happens first: the GUI losing focus or the click being detected? How can I solve this?
Razraal Posted July 26, 2016 Author Posted July 26, 2016 By the way @InunoTaishou thanks for the _IsPressed tip!
InunoTaishou Posted July 26, 2016 Posted July 26, 2016 This is exactly why I asked what you're trying to accomplish, you don't need to detect the click, just when your window loses focus; which you can do with GUIRegisterMsg.
Razraal Posted July 26, 2016 Author Posted July 26, 2016 I managed to achieve what I wanted using _IsPressed function.
Moderators Melba23 Posted July 26, 2016 Moderators Posted July 26, 2016 Razraal, Quote if we contour the problem by reshaping it into a different one, we're not solving the original one. But experience has shown that by reshaping the problem it often becomes more easily solvable - so do not dismiss that approach out of hand. Lateral thinking has a very large place in coding. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
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