Я пытаюсь переместить процесс на 2-й экран с помощью функции MoveWindow:
while (!process.HasExited)
{
IntPtr id = process.MainWindowHandle;
if (id != IntPtr.Zero)
{
var result = MoveWindow(id,
Convert.ToInt32(secondScreen.WorkingArea.X),
Convert.ToInt32(secondScreen.WorkingArea.Y),
Convert.ToInt32(secondScreen.WorkingArea.Width),
Convert.ToInt32(secondScreen.WorkingArea.Height),
true);
Thread.Sleep(500);
if (result == true)
{
break;
}
}
[DllImport("user32.dll", SetLastError = true)]
public static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);
Поэтому у меня проблема в том, что иногда этот код работает, а иногда нет.
Причина в том, что MoveWindow
возвращает true
, и я выхожу из этого while
l oop, используя break;
, но MoveWindow
не перемещает его на 2-й экран правильно.
Так что, если я уберу break;
, он будет работать все время, но у меня будет while
l oop, работающий все время, и это не то, что я хочу.
Вы знаете, как я мог решить эту проблему?