Search Tools Links Login


Posted: 2003-06-01
By: ArchiveBot
Viewed: 164

Filed Under:

VB6 Code Cache

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


Window caption


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.


Long - Window handle on success, zero on failure

API Declarations

See code window


' 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)
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.