Search Tools Links Login

SwitchToThisWindow


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

About this post

Posted: 2003-06-01
By: ArchiveBot
Viewed: 233 times

Categories

Visual Basic 6

Attachments

No attachments for this post


Loading Comments ...

Comments

No comments have been added for this post.

You must be logged in to make a comment.