C# Возвращение фокуса на родительскую форму из другого приложения
Я пытаюсь запустить и.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 - приложение, которое я тоже делаю.
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();
В любом случае, вам нужно подождать, пока не появится окно с отпечатками пальцев...