2009-10-06 7 views
16

Process 클래스를 사용하여 응용 프로그램을 시작한 후 해당 창을 최상위로 만들고 싶습니다. 현재 내 앱이 최상위 창이므로 다른 앱을 실행해도 표시되지 않습니다. 한 가지 기억해야 할 것은 프로세스를 시작하기 전에 내 응용 프로그램에 대해 topmost = false를 설정할 수 있다는 것입니다.이 문제는 사용자에게 표시하기 전에 프로세스를로드하는 데 충분한 시간을주고 싶습니다. 다른 응용 프로그램을 최상위로 전환 할 때 더 많은 제어가 가능합니다.창 핸들을 사용하여 윈도우를 최상위로 만듭니다.

답변

48

는이 작업을 accopmlish하는 P/Invoke with SetWindowPos를 사용해야합니다 : 그것에 대해

[DllImport("user32.dll")] 
static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags); 

static readonly IntPtr HWND_TOPMOST = new IntPtr(-1); 
const UInt32 SWP_NOSIZE = 0x0001; 
const UInt32 SWP_NOMOVE = 0x0002; 
const UInt32 SWP_SHOWWINDOW = 0x0040; 

// Call this way: 
SetWindowPos(theWindowHandle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); 
+0

감사합니다, 트릭을 할해야합니다! 64 비트 시스템에서도 user32가 유효합니까? –

+0

예. 64 비트 시스템에서도 작동합니다. –

관련 문제