如何根据进程名称VB将焦点设置在其他应用程序上

时间:2012-01-09 08:20:44

标签: vb.net process focus

如何根据VB2010中的进程名称将注意力集中在其他应用程序上?

我现在可以做的是使用FindWindow将重点放在基于Windows名称的其他应用程序上,然后使用SetForegroundWindow。以下是我目前的情况

        Dim theHandle As IntPtr
        theHandle = FindWindow(Nothing, "Gmail: Email from Google")
        If theHandle <> IntPtr.Zero Then
        SetForegroundWindow(theHandle)

问题是FindWindow需要确切的Windows名称才能工作,我并不总是知道确切的名称。 (因为我的程序打开了用户输入的不同网站,所以我无法控制他们打开的网站)。那么无论如何我可以使用流程名称来设置焦点吗? (在这种情况下firefox.exe)欢迎任何其他建议。

由于

2 个答案:

答案 0 :(得分:1)

您可以使用System.Diagnostics.Process按名称查找流程,然后找到窗口标题:

For Each app As Process In Process.GetProcessesByName("firefox")
    Dim theHandle As IntPtr = FindWindow(Nothing, app.MainWindowTitle)
    If theHandle <> IntPtr.Zero Then
        SetForegroundWindow(theHandle)
    End If
Next

使用静态GetProcessesByName方法,然后使用MainWindowTitle属性。对于此示例,您需要Import System.Diagnostics来导入正确的命名空间。

答案 1 :(得分:0)

ActivateApp(System.Diagnostics.Process.GetCurrentProcess.Id)
SendKeys.SendWait("~")

然后使用:

{{1}}