2009-09-14 6 views

답변

3

사용이 가득 될 때까지 루프 잠을 할 수 있습니다 있도록 응용 프로그램을 실행할 때 그것은 아마 0

process.MainWindowHandle; 

.

+1

안녕하세요. 내게는 핸들이 항상 0이고 무한 반복 후에도 다른 값으로 이동하지 않습니다. 다음 코드를 사용합니다 : proc.StartInfo.FileName = @ "C : \ Documents and Settings \ SUM \ Desktop \ PortableApps \ Notepad ++ Portable \ Notepad ++ Portable.exe"; proc.StartInfo.Arguments = String.Empty; proc.Start(); IntPtr appHwnd = proc.MainWindowHandle; while (appHwnd == IntPtr.Zero) { Thread.Sleep (100); appHwnd = proc.MainWindowHandle; } 무엇이 잘못 되었나요? – Marcel

+0

이 (http://www.xtremedotnettalk.com/showpost.php?s=b115a21c0601804f80c9a2680db9c38f&p=461829&postcount=4)에 따르면 응용 프로그램이 대화 상자를 표시하거나 플래시를 먼저 초기화하기 때문에 0 일 수도 있습니다. – Marcel

2

또한 정확한

+0

좋은 정보, 나는 그것을 염두에 두겠다. –

3

이 최근 화제가 아니라 답변이 불완전의 정보를 확인하는 과정에서 새로 고침()를 호출 할 수있다.

나는 Process.MainWindowHandle 솔루션에 동의하고 값을 기다리지 만 절전 모드에서는 기다리지 않습니다.

프로세스를 시작한 후 주 창 핸들을 사용하려는 경우 WaitForInputIdle 메서드를 사용하여 프로세스 시작을 허용하고 주 창 핸들이 만들어 졌는지 확인하십시오.

Process.WaitForInputIdle

이 과부하 때문에, 사용자 인터페이스 프로세스 만 적용되며

메시지 루프.

+0

나는 이것이 실제로 주석이어야한다고 생각한다. –

+0

몇 가지 이유로 죄송합니다.이 함수는 예외를 throw합니다 (단 하나만 있습니다). 잠자기 및 새로 고침으로 해결할 것입니다 – Sam

+0

아마도 내 앱에만 오류가 있거나 없습니다. – Sam

관련 문제