SwitchToThisWindow
Posted: 2003-06-01
By: ArchiveBot
Viewed: 164
Filed Under:
No attachments for this post
Another way of changing the focus to a particular window, using an un-documented API called SwitchToThisWindow.This API works on Windows 3x, Windows 9x/ME and Windows 2000. I have found it much more reliable than Setfocus/SetFocusAPI or SetForegroundWindow
Original Author: Simon Morgan
Inputs
Window caption
Assumptions
I have defined a public function ( GetMessageWindow ) in order to show how the SwitchToThisWindow API works in conjunction with the FindWindow API. The GetMessageWindow function can of course be improved to accept parameters and make it more flexible. For this example I just use it to switch to a standard message box.
Returns
Long - Window handle on success, zero on failure
API Declarations
See code window
Code
' Library imports
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function SwitchToThisWindow Lib "user32" (ByVal hWnd As Long, ByVal hWindowState As Long) As Long
' Function to locate and focus on a MsgBox
Public Function GetMessageWindow() As Long
Dim hMessageBox As Long
' First get the message box's handle
hMessageBox& = FindWindow("#32770", vbNullString)
If hMessageBox Then
' Set focus on the message box
GetMessageWindow& = SwitchToThisWindow
(hMessageBox, vbNormalFocus)
Else
GetMessageWindow& = 0
End If
End Function
' Calling the GetMessageWindow function
RetVal& = GetMessageWindow()
If RetVal& Then
' Do something like SendKeys{Enter}
End If
Comments on this post
No comments have been added for this post.
You must be logged in to make a comment.