如何通过 vb.net 让其他应用程序(计算器)在 winforms 中脱颖而出?
Posted
技术标签:
【中文标题】如何通过 vb.net 让其他应用程序(计算器)在 winforms 中脱颖而出?【英文标题】:How to get other application(calculator) bring to front in winforms via vb.net? 【发布时间】:2020-11-16 19:42:28 【问题描述】:这可能是一个非常常见的问题,但我找不到正确的答案。 如果发现任何内容,请使用原始链接标记此副本。
比如说,我有一个带按钮的 winform。 我想打开另一个应用程序,例如 Windows 计算器。 等等按钮点击,我添加了这个。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim MyApp As System.Diagnostics.Process = New System.Diagnostics.Process
MyApp.StartInfo.FileName = "C:\Windows\system32\calc.exe"
MyApp.Start()
Dim p() As Process = Process.GetProcessesByName("Calculator")
If p.Count > 0 Then
/*Something like bring that calc to front*/
Else
MyApp.Start()
End If
End If
End Sub
现在,如果 calc 在 winform 后面,我想要将 calc 放在前面。
如果没有打开计算,那么它将打开新的,否则它将把前一个放在前面。
【问题讨论】:
***.com/questions/12925748/… 【参考方案1】:计算器专用:
Public Declare Function BringWindowToTop Lib "user32" (ByVal HWnd As IntPtr) As Boolean
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim calc As Process = Process.GetProcesses.FirstOrDefault(Function(p) p.MainWindowTitle = "Calculator")
If Not IsNothing(calc) Then
BringWindowToTop(calc.MainWindowHandle)
Else
Process.Start("C:\Windows\system32\calc.exe")
End If
End Sub
【讨论】:
不,它打开了一个新的计算。不把旧的放在首位。 我相信是因为我们正在寻找“calc”,而 10 中的进程名称至少看起来是计算器。 对...我认为计算器是一种特殊的野兽,因为实际打开的应用程序不是“calc.exe”。用“notepad.exe”试试这个,看看它是否有效。 其实我是想打开 calc. :-|| @Idle_Mind以上是关于如何通过 vb.net 让其他应用程序(计算器)在 winforms 中脱颖而出?的主要内容,如果未能解决你的问题,请参考以下文章