【问题标题】:How to get other application(calculator) bring to front in winforms via vb.net?如何通过 vb.net 让其他应用程序(计算器)在 winforms 中脱颖而出?
【发布时间】: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 放在前面。

如果没有打开计算,那么它将打开新的,否则它将把前一个放在前面。

【问题讨论】:

标签: c# vb.net winforms


【解决方案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
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-17
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 2012-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多