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