如何根据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)欢迎任何其他建议。
由于
答案 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}}