yep, thanks. But what I wanted to do is knowing if the sendmessage
method would really be more reliable, as I think.
I tend to do things the more low level possible, to aquire time and
also to avoid big calculations.
Marlon

2008/10/14, Jamal Mazrui <[EMAIL PROTECTED]>:
> Suppose oWindow is a Window object for the window to be clicked.  The
> Windows API technique might be as follows:
>
> Const BM_CLICK = 245
>
> oWindow.SendMessage BM_CLICK, 0
>
> Jamal
>
> On Tue, 14
> Oct 2008, Marlon Brandão de Sousa wrote:
>
>> Date: Tue, 14 Oct 2008 18:27:38 -0300
>> From: Marlon Brandão de Sousa <[EMAIL PROTECTED]>
>> Reply-To: gw-scripting@gwmicro.com
>> To: gw-scripting@gwmicro.com
>> Subject: Re: Automating the mouse
>>
>> Well .. I just can't figure out why one would spend lots of resources
>> cauculating a center of a screen of a window, moving the mouse pointer
>> there and clicking it if one just could get the handle of the desired
>> window and sending to it a windows message. It seen more reliable and
>> pretty more optimized...
>> I however am not writting this to shoot anyone ... I am writting this
>> to ask if I am right in the above statement, cinse I am not used to
>> script window eyes.
>> Thanks,
>> Marlon
>>
>> 2008/10/13, Ron Parker <[EMAIL PROTECTED]>:
>> >
>> > You should almost never need the handle of a window if you're working
>> > solely with VBScript.  There's almost certainly a better way to do what
>> > you're doing.
>> >
>> > It sounds like you're somehow finding a Control object, then getting
>> > Control.Window.Handle, and then trying to find the Window with that
>> > handle?  That'll just get you a reference to the same object you got
>> > from Control.Window; it seems like a rather roundabout way to get back
>> > to where you started from.
>> >
>> > Besides, if you have a Control object, you can use Control.Position,
>> > Control.Width, and Control.Height to get the point at the center.  So,
>> > if you have a Control object in the "mycontrol" variable, this should
>> > work:
>> >
>> > Set sp = mycontrol.Position.ScreenPoint
>> > sp.X = sp.X + mycontrol.Width / 2
>> > sp.Y = sp.Y + mycontrol.Height / 2
>> >
>> > Mouse.Position = sp
>> >
>> >
>> >
>> > Tim Burgess wrote:
>> >> Aaron,
>> >>
>> >> My concern about the filter approach is that it doesn't seem very
>> >> specific.
>> >> Given the parameters you describe, the chances of the filter returning
>> >> more
>> >> than one hit seems substantial - this is why I use control ID values a
>> >> lot,
>> >> when I know I'm dealing with a well-behaved application anyway.
>> >>
>> >> Having said all that, you've given me the solution I need by inference.
>> >> If
>> >> I grab the handle of my desired window based on its control ID (I've
>> >> got
>> >> that routine working well now), I can then use that handle to find the
>> >> rectangle coordinates as per your suggestion - thanks.
>> >>
>> >> I might also try the messaging approach suggested by Marlon ad see if
>> >> either
>> >> method has any significant benefits/drawbacks.
>> >>
>> >> Best wishes.
>> >>
>> >> Tim Burgess
>> >> Raised Bar Ltd
>> >> Phone:  +44 (0)1827 719822
>> >>
>> >> Don't forget to vote for improved access to music and music technology
>> >> at
>> >>
>> >> http://www.raisedbar.net/petition.htm
>> >>
>> >> -----Original Message-----
>> >> From: Aaron Smith [mailto:[EMAIL PROTECTED]
>> >> Sent: 11 October 2008 18:58
>> >> To: gw-scripting@gwmicro.com
>> >> Subject: Re: Automating the mouse
>> >>
>> >> The Windows object has several Filter methods that let you find a
>> >> specific
>> >> window. If you know the window's class name and module name, you can
>> >> use
>> >> the
>> >> FilterByClassAndModule. If you don't know the class name, you can use
>> >> FilterByName or FilterByTitle (although Title is going to be a little
>> >> slower
>> >> than the others).
>> >>
>> >> Once you have a window, you can get its rectangle, and the move the
>> >> mouse
>> >> to
>> >> the top left corner. Alternatively, you can calculate the middle of the
>> >> window's rectangle, and move the mouse there. Then do your mouse click.
>> >>
>> >> Assuming that you do in fact know the class name and the module name,
>> >> and
>> >> the window you're looking for is a child of the active window, I would
>> >> do
>> >> the following:
>> >>
>> >> Dim myFilteredWins : Set myFilteredWins =
>> >> ActiveWindow.FilterByClassAndModule(myClass, myModule)
>> >>
>> >> If myFilteredWins.Count = 1 Then
>> >>   ' Found one match
>> >>   Dim myWin : Set myWin = myFilteredWins(1)
>> >>   ' Get the window's rectangle
>> >>   Dim myWinRect : Set myWinRect = myWin.Rectangle
>> >>   ' The pointer needs a screen point, so get the
>> >>   ' screen rectangle of myWinRect
>> >>   Dim myScreenRect : Set myScreenRect = myWinRect.ScreenRectangle
>> >>   ' Now move the mouse
>> >>   Mouse.Position = ScreenPoint(myScreenRect.Left, myScreenRect.Top)
>> >>   Mouse.Click mbLeft, 1
>> >> End If
>> >>
>> >> There's not much bulletproofing there, but you get the idea. You could
>> >> also
>> >> store the current mouse position before moving it, and then restoring
>> >> it
>> >> after the click. There are lots of possibilities.
>> >>
>> >> Aaron
>> >>
>> >> Tim Burgess wrote:
>> >>
>> >>> Hi,
>> >>>
>> >>> I need to locate a sub-window, move the mouse onto it then perform a
>> >>> single left click.  I have the following code:
>> >>>
>> >>> Dim cCursor, hWnd
>> >>>
>> >>> ' Save the current active cursor
>> >>> cCursor = ActiveCursorType
>> >>> ActiveCursorType = ctMousePointer
>> >>> Find( hWnd)
>> >>> Mouse.Click(  mbLeft, 1)
>> >>> ' Go back to the cursor the user was using ActiveCursorType = cCursor
>> >>>
>> >>> I realise that the Find method isn't going to do what I want, i.e.
>> >>> position the active cursor (the mouse in this case) on the window, if
>> >>> found, but I can't see a way of achieving this result.
>> >>>
>> >>> Best wishes.
>> >>>
>> >>> Tim Burgess
>> >>> Raised Bar Ltd
>> >>> PO Box 4442
>> >>> Atherstone
>> >>> Warwickshire
>> >>> CV9 9AT
>> >>>
>> >>> Phone:  +44 (0)1827 719822
>> >>> Email:  [EMAIL PROTECTED]
>> >>> Web:  http://www.raisedbar.net
>> >>>
>> >>> Don't forget to vote for improved access to music and music technology
>> >>> at
>> >>>
>> >>> http://www.raisedbar.net/petition.htm
>> >>>
>> >>>
>> >>>
>> >>
>> >> --
>> >> To insure that you receive proper support, please include all past
>> >> correspondence (where applicable), and any relevant information
>> >> pertinent
>> >> to
>> >> your situation when submitting a problem report to the GW Micro
>> >> Technical
>> >> Support Team.
>> >>
>> >> Aaron Smith
>> >> GW Micro
>> >> Phone: 260/489-3671
>> >> Fax: 260/489-2608
>> >> WWW: http://www.gwmicro.com
>> >> FTP: ftp://ftp.gwmicro.com
>> >> Technical Support & Web Development
>> >>
>> >>
>> >
>> >
>>
>>
>> --
>> When you say "I wrote a program that crashed Windows," people just
>> stare at you blankly and say "Hey, I got those with the system, for
>> free."
>> Linus Torvalds
>>
>


-- 
When you say "I wrote a program that crashed Windows," people just
stare at you blankly and say "Hey, I got those with the system, for
free."
Linus Torvalds

Reply via email to