将焦点更改为VB.NET中的另一个窗口

时间:2010-11-03 14:23:20

标签: windows vb.net .net-2.0

我使用的是VB.NET,需要激活某个窗口。这可能吗?如果是这样,怎么样?

2 个答案:

答案 0 :(得分:4)

您需要使用Win32 API来执行此操作。

首先,通过调用FindWindow获取其句柄,找到您想要显示的窗口,然后使用SetForegroundWindow API将其置于前台。

PInvoke包含这些方法的声明。

答案 1 :(得分:0)

有2种解决方案,一种使用Window API,另一种使用纯VB.Net

  1. 您可以使用SetForegroundWindow(iHandle)

使用FindWindow获取窗口句柄的示例

Public Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hwnd As Integer) As Integer
Public Declare Auto Function FindWindow Lib "user32.dll" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer

Dim hWnd As Integer
hWnd = FindWindow(strClassName, strWindowCaption)

If hWnd > 0 Then
    SetForegroundWindow(hWnd)
End If
  1. 您可以使用AppActivate(iProcessId)

使用GetActiveAppProcess()的示例在挂钩程序中获取输入窗口活动进程

    Dim hWnd As IntPtr
    Dim inputProcess = GetActiveAppProcess()

    hWnd = GetActiveAppProcess().MainWindowHandle
    AppActivate(inputProcess.Id)

    'you can also use SetForegroundWindow
    'SetForegroundWindow(inputProcess..MainWindowHandle)

    SendKeys.Send("^v")