AutID Posted January 8, 2014 Share Posted January 8, 2014 Hello, I want to make my window loose focus because when it is activate control click coords are wrong. This is what i did but i was wondering if there is a better wayFunc _SetFocus() Local $var = WinList() For $i = 1 To $var[0][0] If Not StringInStr($var[$i][0], "My window") And $var[$i][0] <> "" And IsVisible($var[$i][1]) Then ConsoleWrite("Title=" & $var[$i][0] & @LF) WinActivate($var[$i][0]) ExitLoop EndIf Next EndFunc Func IsVisible($handle) If BitAND(WinGetState($handle), 2) Then Return 1 Else Return 0 EndIf EndFunc Cheers https://iblockify.wordpress.com/ Link to comment Share on other sites More sharing options...
Realm Posted January 8, 2014 Share Posted January 8, 2014 (edited) Hello AutID, Instead of finding a work around for your problem, wouldn't it be wiser to locate the problem at hand and find a solution for it? I can't imaging a focused window changing its control coordinates, or at least never experienced it myself. I would evaluate what is causing that problem and try to find a solution for it. Realm Edited January 8, 2014 by Realm My Contributions: Unix Timestamp: Calculate Unix time, or seconds since Epoch, accounting for your local timezone and daylight savings time. RegEdit Jumper: A Small & Simple interface based on Yashied's Reg Jumper Function, for searching Hives in your registry. Link to comment Share on other sites More sharing options...
Kidney Posted January 8, 2014 Share Posted January 8, 2014 WinSetState("Window Title", "", @SW_MINIMIZE) Link to comment Share on other sites More sharing options...
AutID Posted January 9, 2014 Author Share Posted January 9, 2014 Hello AutID, Instead of finding a work around for your problem, wouldn't it be wiser to locate the problem at hand and find a solution for it? I can't imaging a focused window changing its control coordinates, or at least never experienced it myself. I would evaluate what is causing that problem and try to find a solution for it. Realm ;~ _SetFocus() ControlClick("[CLASS:SciTEWindow]", "", "", "right", 1, 120, 150) Func _SetFocus() Local $var = WinList() For $i = 1 To $var[0][0] If Not StringInStr($var[$i][0], "[CLASS:SciTEWindow]") And $var[$i][0] <> "" And IsVisible($var[$i][1]) Then ConsoleWrite("Title=" & $var[$i][0] & @LF) WinActivate($var[$i][0]) ExitLoop EndIf Next EndFunc Func IsVisible($handle) If BitAND(WinGetState($handle), 2) Then Return 1 Else Return 0 EndIf EndFunc Try this on your scite. Comment out _SetFocus function and try it again. You should see the coords changing. WinSetState("Window Title", "", @SW_MINIMIZE) Thank you but this is not an option. https://iblockify.wordpress.com/ Link to comment Share on other sites More sharing options...
AutID Posted January 10, 2014 Author Share Posted January 10, 2014 So any other opinions??? https://iblockify.wordpress.com/ Link to comment Share on other sites More sharing options...
BrewManNH Posted January 10, 2014 Share Posted January 10, 2014 You're not clicking a control, maybe try it with an actual control instead of just having it right click somewhere in the window. Not sure why it clicks in different locations, but all I can tell you is that the last 2 parameters of the ControlClick command only click within the bounds of a control, not screen coordinates or client coordinates, unless the help file is wrong. If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator Link to comment Share on other sites More sharing options...
Morthawt Posted January 10, 2014 Share Posted January 10, 2014 I would get the details for the start bar and bring that into focus. Not the start menu, but use the info tool to get the info for a blank area of the start bar. Once that is activated your current window will no longer be the active window. Free and easy Autoit scripting video tutorials (plus more videos always coming!) General video tutorials, especially correct and safe TeamSpeak permissions tutorials. Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted January 10, 2014 Moderators Share Posted January 10, 2014 AutID ,When I run your little script above I do get the context menu appearing in a different place depending on whether the SciTE GUI has focus or not. But I believe I can explain why. You are not defining the control in your ControlClick call - in that case AutoIt ususally defaults to currently active control, which for SciTE is the main edit pane. When the GUI does not have focus, none of the controls are active and so AutoIt defaults to the client area. When I measure the position of the context menu in both cases, the difference between the 2 positions is exactly the height taken by the toolbar (and tabs if present).All clear? 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 Link to comment Share on other sites More sharing options...
AutID Posted January 14, 2014 Author Share Posted January 14, 2014 AutID , When I run your little script above I do get the context menu appearing in a different place depending on whether the SciTE GUI has focus or not. But I believe I can explain why. You are not defining the control in your ControlClick call - in that case AutoIt ususally defaults to currently active control, which for SciTE is the main edit pane. When the GUI does not have focus, none of the controls are active and so AutoIt defaults to the client area. When I measure the position of the context menu in both cases, the difference between the 2 positions is exactly the height taken by the toolbar (and tabs if present). All clear? M23 Sorry for the late reply, i just saw that someone had answered. And what if there is not a controlid to definy in the controlclick. A solution is to calculate the difference and controlclick depending the state of the window. If active or not. https://iblockify.wordpress.com/ Link to comment Share on other sites More sharing options...
BrewManNH Posted January 14, 2014 Share Posted January 14, 2014 In this case you could just use MouseClick If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator Link to comment Share on other sites More sharing options...
AutID Posted January 15, 2014 Author Share Posted January 15, 2014 Mousemove works correctly even if the window is not active but besides that it traps the mouse until click, it can't click on background windows. Calculation depending on window's state is a good solution https://iblockify.wordpress.com/ 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