Приложение, которое я запускаю, должно вызвать отдельное приложение для сканирования. Я вызываю другое приложение, запуская новый System.Diagnostics.Process
. Как только я получаю этот процесс, я вызываю метод, чтобы сосредоточить внимание на этом приложении. Я пробовал два разных способа сфокусировать это внешнее приложение, но ни один из них не работает. Может ли кто-нибудь помочь?
Вот код:
using System.Runtime.InteropServices;
[DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hWnd, uint windowStyle);
[DllImport("user32.dll")]
private static extern bool SetWindowPos(IntPtr hWnd,
IntPtr hWndInsertAfter, int x, int y, int cx, int cy, uint uFlags);
[DllImport("user32.dll")]
private static extern bool SetForegroundWindow(IntPtr hWnd);
private static void GiveSpecifiedAppTheFocus(int processID)
{
try
{
Process p = Process.GetProcessById(processID);
ShowWindow(p.MainWindowHandle, 1);
SetWindowPos(p.MainWindowHandle, new IntPtr(-1), 0, 0, 0, 0, 3);
//SetForegroundWindow(p.MainWindowHandle);
}
catch
{
throw;
}
}
Первый сценарий использует методы ShowWindow
и SetWindowPos
, другой метод использует метод SetForegroundWindow
. Ни один не будет работать ...
Я использую неправильные методы или у меня ошибка в коде, который я использую? Спасибо всем!