2015-07-17 3 views
0

Я начинаю исполняемый файл, несколько раз, как этотНахождение несколько окон с тем же названием

Process proc = new Process(); 
proc.StartInfo.FileName = path + "/BuiltGame.exe"; 
proc.Start(); 

Process proc1 = new Process(); 
proc1.StartInfo.FileName = path + "/BuiltGame.exe"; 
proc1.Start(); 

Теперь я хочу, чтобы изменить размер и перемещать окна породили.

настоящее время я использую MoveWindow и FindWindow

[DllImport("user32.dll", SetLastError = true)] 
internal static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint); 
[DllImport("user32.dll", SetLastError = true)] 
internal static extern IntPtr FindWindow(string windowClass, string title); 

Первоначально я думал, что я мог бы просто использовать ручку от порожденного процесса

MoveWindow(proc.Handle, 0, 0, 100, 100, true); 

Но это не сработало, и я пытался использовать FindWindow

IntPtr Handle = FindWindow(null,"MyWindowTitle") 

Который действительно работал и вернулся га ndle из FindWindow является другой один, что от Process.Handle

После этого я попытался использовать

MoveWindow(proc.MainWindowHandle, 0, 0, 100, 100, true); 

Но MainWindowHandle просто 0.

Проблема, что у меня теперь есть то, что я хочу, чтобы начать множественным процессы и получить правильный дескриптор окна из каждого окна, но FindWindow возвращает только первый.

Как мне это сделать?

+0

Вы пробовали 'EnumWindows'? Принятый ответ [здесь] (http://stackoverflow.com/questions/19867402/how-can-i-use-enumwindows-to-find-windows-with-a-specific-caption-title) показывает, как его называть от C#. –

ответ

1

Позвоните EnumWindows, чтобы перечислить окна верхнего уровня. Для каждого такого окна вызовите GetWindowText, чтобы узнать его текст, который затем можно сравнить с целевым значением.

Если вы ищете окна в определенном процессе, используйте GetWindowThreadProcessId.

+0

На самом деле OP, вероятно, хочет использовать 'GetWindowThreadProcessId' для сравнения с целевым процессом, поскольку названия окон будут одинаковыми. –

+0

@Jonathan Это зависит от многого. Да, если вы хотите найти окно из определенного процесса. Но, возможно, вы хотите найти все такие окна. –

+0

* «Проблема, с которой я сейчас сталкиваюсь, заключается в том, что я хочу запустить несколько процессов и получить правильный дескриптор окна из каждого окна, но FindWindow возвращает только первый» * предполагает, что он хочет совместить окна с процессами. –