使过程集中于C#(ASP.net)

时间:2018-08-06 00:58:36

标签: c# asp.net-mvc iis-express

我已经创建了一个Web应用程序,它将使用以下命令调用基于窗口的应用程序:

    #region Process
    public static string shell_exec(string path, string args)
    {
        var p = new ProcessStartInfo();
        // Redirect the output stream of the child process.
        p.UseShellExecute = false;
        p.LoadUserProfile = true;
        p.RedirectStandardOutput = true;
        p.FileName = path;
        p.Arguments = args;
        p.WindowStyle = ProcessWindowStyle.Normal;
        var pc = Process.Start(p);
        WindowHelper.BringProcessToFront(pc);
        string output = pc.StandardOutput.ReadToEnd();
        pc.WaitForExit();
        return output;
    }
    #endregion

这是使用IIS Express服务器发布的,process.start()会调用该应用程序,并显示在最顶部(显然是因为我将属性topmost设置为true),而不是显示在任务栏中(didn无法激活加载事件或没有重点关注) 我也使用了bringprocesstofront函数,但是什么也没做:

    const int SW_RESTORE = 9;

    [System.Runtime.InteropServices.DllImport("User32.dll")]
    private static extern bool SetForegroundWindow(IntPtr handle);
    [System.Runtime.InteropServices.DllImport("User32.dll")]
    private static extern bool ShowWindow(IntPtr handle, int nCmdShow);
    [System.Runtime.InteropServices.DllImport("User32.dll")]
    private static extern bool IsIconic(IntPtr handle);
    public static void BringProcessToFront(Process process)
    {
        IntPtr handle = process.MainWindowHandle;
        if (IsIconic(handle))
        {
            ShowWindow(handle, SW_RESTORE);
        }

        SetForegroundWindow(handle);
    }

我在代码中缺少什么吗?

调用的外部过程是一个应用程序,它将注册人的指纹(使用DPFP数字角色,除非基于web或javascript,否则将在基于窗口的窗口中创建)

0 个答案:

没有答案