Вывести несколько процессов на передние окна
Поэтому в настоящее время у меня есть приложение для нескольких мониторов на электронном движке, которое открывает другое окно с отдельным контентом на каждом мониторе. Он использует 2 отдельных процесса с одинаковыми именами для отображения этих окон "home".
Затем приложение можно использовать для запуска разных окон. Один из них называется "игра". Эта игра открывает окно стиля управления на главном мониторе, а затем актуальную игру на втором мониторе. Оба эти разных процесса называются "играми".
В настоящее время у нас есть небольшое консольное приложение на C#, которое можно вызвать и передать строку, чтобы попытаться вывести эти приложения на передний план, как показано ниже:
class Program
{
[DllImport("user32.dll")]
private static extern IntPtr SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll")]
private static extern IntPtr GetForegroundWindow();
static void Main(string[] args)
{
BringToFront(args[0]);
}
private static void BringToFront(string title)
{
// Get a handle to the Calculator application.
Process[] processes = Process.GetProcessesByName(title);
if (processes.Length > 1)
{
foreach(Process process in processes)
{
IntPtr mainWindowHandle = process.MainWindowHandle;
if (mainWindowHandle == GetForegroundWindow()) return;
SetForegroundWindow(mainWindowHandle);
}
}
}
}
Проблема в том, что это только когда-то выводит 1 окно впереди, а не оба. Я исследовал это и обнаружил, что это происходит из-за правил, окружающих SetForegroundWindow, и, если я не ошибаюсь, когда мы устанавливаем первое окно переднего плана, нам тогда не разрешают устанавливать любые другие как консольное приложение / процесс, который вызвал консольное приложение больше не процесс переднего плана.
Есть ли способ сделать вывод 2 отдельных окон на передний план с помощью консольного приложения aC#?