Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过vb.net使winforms中的其他应用程序(计算器)领先?_C#_Vb.net_Winforms - Fatal编程技术网

C# 如何通过vb.net使winforms中的其他应用程序(计算器)领先?

C# 如何通过vb.net使winforms中的其他应用程序(计算器)领先?,c#,vb.net,winforms,C#,Vb.net,Winforms,这可能是一个非常常见的问题,但我找不到合适的答案 如果发现任何链接,请用原始链接标记此副本 比如说,我有一个带按钮的winform。 我想打开另一个应用程序,例如windows计算器。 点击按钮,我添加了这个。 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim MyApp As System.Diagnostics.Process = New System.Diagnost

这可能是一个非常常见的问题,但我找不到合适的答案
如果发现任何链接,请用原始链接标记此副本

比如说,我有一个带按钮的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出现在前面


如果没有打开计算器,则会打开新的,否则会将上一个放在前面。

专门用于计算器:

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

专门针对计算器:

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。没有把旧的放在首位。我相信,因为我们正在寻找“calc”,而10中的进程名称至少看起来是calculator。对……我认为calculator是一个特殊的野兽,因为实际打开的应用程序不是“calc.exe”。用“notepad.exe”试试这个,看看它是否有效。实际上我想打开calc.:-| |@Idle_mindnop,它打开了一个新的calc。而不是将旧的calc带到顶部。我相信,因为我们正在寻找“calc”,而10中的进程名称至少看起来是calculator。对……我认为calculator是一个特殊的野兽,因为实际打开的应用程序不是“calc.exe”。用“notepad.exe”试试这个,看看它是否有效。实际上我想打开calc.:-| |@Idle|u Mind