Eikoo Posted August 12, 2014 Share Posted August 12, 2014 Hello I'm not really a programer I'm just trying to make life easier for my small company employees. I have everything working except where this dialog box gets resized and the button moves. This box is just an error that has no meaning and I want the mouse to move to the close button and then click it. I'm trying to create a script where it will universally click the correct spot. The only constants I see are 250 pixels from the left side and 105 from the bottom. This is what i have when the box in its smallest size but it pops up often sometimes the user is doing something and resizes it. Local $aPos = WinGetPos("[ACTIVE]") Opt("MouseCoordMode",0) MouseMove(194, 497, 1) MouseClick("left") Link to comment Share on other sites More sharing options...
Moderators JLogan3o13 Posted August 12, 2014 Moderators Share Posted August 12, 2014 Is this a dialog box you are creating in a GUI, InputBox, etc., or is it a pop up in a 3rd party app? Either way, the conventional method would be to use the AutoIt Window Info tool, in the same directory where you installed AutoIt, and get the Control name or ID of the button. Then look at ControlClick in the help file. That way, no matter where the box is you can click on it. MouseMoves and MouseClicks you will quickly find are unreliable. 232showtime 1 "Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball How to get your question answered on this forum! Link to comment Share on other sites More sharing options...
Eikoo Posted August 12, 2014 Author Share Posted August 12, 2014 I have tried that and nothing is showing up for a button id. Pretty much the only thing it gives me is the location. Link to comment Share on other sites More sharing options...
MikahS Posted August 12, 2014 Share Posted August 12, 2014 (edited) AdlibRegister("getPos") HotKeySet("{END}", "clickMe") Local $aPos getPos() While 1 WEnd Func getPos() $aPos = WinGetPos("[ACTIVE]") EndFunc ;==>getPos Func clickMe() MouseClick("left", $aPos[0] + 194, $aPos[1] + 497, 1) EndFunc EDIT: hitting the end key above the arrow keys will initiate the mouseclick on your control. I'm not sure I got the coordinates correct, but the $aPos[0] ; is the x value and the $aPos[1] ; is the y value hopefully that will help you on your course to a solution. Also the AdLibRegister("getPos") ; runs this every 250 ms -- essentially getting the active window coordinates every 250 ms Edited August 12, 2014 by MikahS Snips & Scripts My Snips: graphCPUTemp ~ getENVvarsMy Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4 Feel free to use any of my code for your own use. Forum FAQ Link to comment Share on other sites More sharing options...
Eikoo Posted August 12, 2014 Author Share Posted August 12, 2014 The button is red 0xDE0000 dunno if this helps Link to comment Share on other sites More sharing options...
Moderators JLogan3o13 Posted August 12, 2014 Moderators Share Posted August 12, 2014 Can you activate the window of the dialog box with WinActivate? If so, even ControlSending an Enter would be more reliable than a MouseClick. 232showtime 1 "Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball How to get your question answered on this forum! Link to comment Share on other sites More sharing options...
MikahS Posted August 12, 2014 Share Posted August 12, 2014 @Eikoo JLogan's solution might be the best for your situation. Snips & Scripts My Snips: graphCPUTemp ~ getENVvarsMy Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4 Feel free to use any of my code for your own use. Forum FAQ Link to comment Share on other sites More sharing options...
Eikoo Posted August 12, 2014 Author Share Posted August 12, 2014 (edited) @MikahS the coordinates are from the top left corner of the box right? JLogan hitting the enter key wont clear the box.. That would make life super easy. Edited August 12, 2014 by Eikoo Link to comment Share on other sites More sharing options...
Moderators JLogan3o13 Posted August 12, 2014 Moderators Share Posted August 12, 2014 You stated there was a button you need to click to close the dialog box. It is somewhat difficult to troubleshoot when we're left in the dark as to what you are seeing. How about posting a screenshot of the dialog box, so we can see what is required to get rid of it? "Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball How to get your question answered on this forum! Link to comment Share on other sites More sharing options...
MikahS Posted August 12, 2014 Share Posted August 12, 2014 (edited) @Eikoo yes, that is correct. So to make sure you have the correct x and y coordinates. just add to the x value from the left to the right *------^----- $aPos[0] + ; the value to move the x value just add to the y value from up to down * | | | * | | $aPos[1] + ; the value to move the y value essentially like you are plotting a point on a graph. Edited August 12, 2014 by MikahS Snips & Scripts My Snips: graphCPUTemp ~ getENVvarsMy Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4 Feel free to use any of my code for your own use. Forum FAQ Link to comment Share on other sites More sharing options...
Eikoo Posted August 12, 2014 Author Share Posted August 12, 2014 ok I was looking at it again and the from the top value x can vary(cause of window resizes) but it I was measuring it from the bottom then it would be 44 pixels(all the time) From the left the y value It would be 250 pixels all the time. I guess I want to know if I can specify how far from the bottom the button is. Link to comment Share on other sites More sharing options...
Eikoo Posted August 12, 2014 Author Share Posted August 12, 2014 (edited) @MikahS and @JLogan3o13 So this is what the coordinates would be? MouseClick("left", $aPos[0] + 250, $aPos[1] + , 44) Edited August 12, 2014 by Eikoo Link to comment Share on other sites More sharing options...
MikahS Posted August 12, 2014 Share Posted August 12, 2014 (edited) I'm not sure you have the x and y right. x on a graph the the bottom line; essentially the top line of the window. the y is the up and down line on a graph; essentially where you want it to click from the top to bottom. Edited August 12, 2014 by MikahS Snips & Scripts My Snips: graphCPUTemp ~ getENVvarsMy Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4 Feel free to use any of my code for your own use. Forum FAQ Link to comment Share on other sites More sharing options...
Eikoo Posted August 12, 2014 Author Share Posted August 12, 2014 (edited) So this then? Sorry I don't really program the most experience I have doing something like this is excel tables... And poking around the help files and using google. I don't understand most of what I read. AdlibRegister("getPos") HotKeySet("{END}", "clickMe") Local $aPos Func getPos() $aPos = WinGetPos("[ACTIVE]") EndFunc ;==>getPos Func clickMe() MouseClick("left", $aPos[0] + 250, $aPos[3] + , 44) EndFunc Sleep( 8000 ) Edited August 12, 2014 by Eikoo Link to comment Share on other sites More sharing options...
Eikoo Posted August 12, 2014 Author Share Posted August 12, 2014 (edited) Hmm maybe this will help you help me. : / I got these values from paint... 250 -----------(Acknowledge) |44 @MikahS Tried that code from above and still didn't seem to move the mouse and click the right spot. I can't use the value from the top cause it will vary when the user resizes the window. Edited August 12, 2014 by Eikoo Link to comment Share on other sites More sharing options...
MikahS Posted August 12, 2014 Share Posted August 12, 2014 (edited) This will take the x coordinate and move 250 to the right; then get the height (our y) and go up 44 <-- that was wrong . Then click 1 time. AdlibRegister("getPos") HotKeySet("{END}", "clickMe") Local $aPos getPos() While 1 WEnd Func getPos() $aPos = WinGetPos("[ACTIVE]") EndFunc ;==>getPos Func clickMe() MouseClick("left", $aPos[0] + 250, $aPos[3] - 44, 1) EndFunc ;==>clickMe Edited August 12, 2014 by MikahS Snips & Scripts My Snips: graphCPUTemp ~ getENVvarsMy Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4 Feel free to use any of my code for your own use. Forum FAQ Link to comment Share on other sites More sharing options...
MikahS Posted August 12, 2014 Share Posted August 12, 2014 (edited) Use a dynamic x and y then. Get the value of the x and y from the window, then figure out everytime they resize the window how much of a difference is needed; so everytime you get the window x and y check if they are the same; if they are not, put them in a variable that will not be changing, such as $xOLD and then find the actual x value of the button by subtracting the new x by the old x or if it is the opposite add the old x value. This can be done in the getPos function using conditionals. Edited August 12, 2014 by MikahS Snips & Scripts My Snips: graphCPUTemp ~ getENVvarsMy Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4 Feel free to use any of my code for your own use. Forum FAQ Link to comment Share on other sites More sharing options...
MikahS Posted August 12, 2014 Share Posted August 12, 2014 Also, this could be alleviated with telling us what kind of window you are using, whether it is an IE window, Firefox window, or one that you have created. It could make it much simpler. Snips & Scripts My Snips: graphCPUTemp ~ getENVvarsMy Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4 Feel free to use any of my code for your own use. Forum FAQ Link to comment Share on other sites More sharing options...
Moderators JLogan3o13 Posted August 12, 2014 Moderators Share Posted August 12, 2014 Also, this could be alleviated with telling us what kind of window you are using, whether it is an IE window, Firefox window, or one that you have created. It could make it much simpler. Hmmm....sounds familiar "Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball How to get your question answered on this forum! Link to comment Share on other sites More sharing options...
MikahS Posted August 12, 2014 Share Posted August 12, 2014 Hmmm....sounds familiar At this point JLogan is correct in saying multiple times that without knowing what the window is, we are completely in the dark, and as a result could not be giving you the correct answers. Snips & Scripts My Snips: graphCPUTemp ~ getENVvarsMy Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4 Feel free to use any of my code for your own use. Forum FAQ 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