Я пытаюсь разработать программу, которая откроет 2 файла Guitar Pro и отобразит их на разных экранах моей многоэкранной настройки.Программно программно мышь для мыши
у меня все работает, кроме перемещения 1 окна с экрана 1 на экран 2.
Guitar Pro является немного хитроумный и по какой-то причине будет открывать только файлы в окне 1 ... Я пытался двигаться окно, захватив ручку окна, но это только перемещает основной контейнер и оставляет все дочерние окна на месте. Я решил обмануть его немного и программно переместить курсор мыши нажать и перетащить окно с экрана на экран, но все еще работает в вопросах ...
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern bool SetCursorPos(int x, int y);
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
public void OpenFileFn()
{
Process file1 = new Process();
file1.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
file1.StartInfo.FileName = file;
file1.Start();
Thread.Sleep(500);
Process file2 = new Process();
file2.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
file2.StartInfo.FileName = file;
file2.Start();
file2.WaitForInputIdle();
Thread.Sleep(3000);
int posX = Cursor.Position.X;
int posY = Cursor.Position.Y;
SetCursorPos(-960, 15);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
SetCursorPos(960, 15);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
SetCursorPos(posX, posY);
}
Используя код выше перемещает курсор по горизонтали но не окно ... Если я меняю курсор оси Y, окно перемещается вертикально ...
Любые идеи, почему я могу это исправить? Спасибо заранее ...
Вы могли бы иметь больше удачи с [SetWindowPosition] (http://www.pinvoke.net/default.aspx/user32.setwindowpos) вместо того, чтобы пытаться программно воссоздать перетаскивание мышью. –
Это не похоже на C#. Вы пропустили тег? Или вы пропустили основную часть своего кода? – nvoigt
@nvoigt звучит как WPF, но код не является точно представителем C#. –