0

我正在尝试从我的主应用程序的子窗体启动和 .exe,但问题是当我打开另一个 .exe 并完成它的工作(扫描指纹)并退出时,我的应用程序被最小化,所以我试试这个:

    [DllImport("user32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    static extern bool SetForegroundWindow(IntPtr hWnd); 


    void method {
    ..........more code...........
     using (Process proc = new Process())
                    {
                        proc.StartInfo.FileName = "WindowsFormsApplication3.exe";
                        proc.Start();
                        SetForegroundWindow(proc.MainWindowHandle);
                    }
    ............code here..............
    }

但它不起作用,我的主要应用程序失去了焦点,我找到了很多解决方案,但其中任何一个都对我有用,另一个 .exe 是我也在做的应用程序。

4

1 回答 1

1

如果你想激活指纹窗口,你的代码是对的!但是在SetForegroundWindow之前添加一个等待...像这样:

while (string.IsNullOrEmpty(proc.MainWindowTitle))
{
    System.Threading.Thread.Sleep(100);
    proc.Refresh();
}

而且,如果您想激活调用者表单(主应用程序),则不需要 SetForegroundWindow!你可以写:

while (string.IsNullOrEmpty(proc.MainWindowTitle))
{
    System.Threading.Thread.Sleep(100);
    proc.Refresh();
}
// Then active caller form...
this.Activate();

无论如何,您需要等到显示指纹窗口...

于 2016-03-02T07:39:11.783 回答