2012-11-19 2 views
4

저는 C#을 처음 접했고 문제가 있습니다. 나는 동적으로 통해 만든 윈도우 (, 이동, 크기 조정) 조작 할 :프로세스로 생성 된 조작 윈도우

Process app = new Process(); 
app.StartInfo.FileName = "notepad.exe"; //just an example, 
app.Start();        //it will be more than just notepad 

내가 app.MainWindowHandle하여 핸들을 얻을 수 있음을 이해를하지만 Control.FromHandle(app.MainWindowHandle)하여 양식을 얻을 수 없습니다. 따라서이 메모장의 새 위치 나 크기를 설정할 수 없습니다.

어떻게하면 창을 조작 할 수 있습니까? 미리 감사드립니다!

+1

해당 창을 만들지 않았습니다. 메모장에서 만들었습니다. 당신이 정말로하고있는 것은 다른 누군가가 만든 창을 조작하는 것입니다. 이것은 일반적으로 눈살을 찌푸리게됩니다. (다른 사람의 옷을 입는 것과 같습니다.) –

답변

4

메모장은 .NET Form이 아닌 Win32 응용 프로그램입니다. 그래서 당신은 Control을 얻을 수 없습니다 - 그것은 통제가 아닙니다!

윈도우 핸들로 수행 할 수있는 작업은 Win32 윈도우를 조작 할 수있는 Win32 함수에 전달하는 것입니다. 창 위치를 설정하는 데는 SetWindowPos과 같은 호스트가 많이 있습니다 (C#에서 사용하려면 this SO question 참조).

Window functions on MSDN에 대한 자세한 참조를 참조하고 PInvoke.net을 참조로 사용하여 C#에서 Win32 메서드를 호출합니다.

관련 문제