我已经创建了一个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,否则将在基于窗口的窗口中创建)