如何通过 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 中脱颖而出?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过网络在两个 VB.NET 应用程序之间进行通信

详细教程:在C#/VB.NET中如何创建图片超链接

VB.NET CAD开发求助加载程序后如何设置为当前

如何让我的 VB.net 程序在 Windows XP 上运行?

vb.net 如何让datagridview添加图片列

vb.net怎么添加类