none
Process.MainWindowHandle 找不到值,有特別原因嗎? RRS feed

  • 問題

  • 請問

                Process p = new Process();
                // Redirect the output stream of the child process.
                p.StartInfo.UseShellExecute = false;
                p.StartInfo.RedirectStandardOutput = true;
                p.StartInfo.FileName = "eTxnProg.exe";
                p.Start();
                p.WaitForInputIdle();

                myIntPtr = p.MainWindowHandle;

    當中,eTxnProg.Exe 是用 C# 寫好的程式,並且為 Win Form App

    但在執行後,p.MainWindowHandle = 0 ,查 MSDN 後,發現

    『只有在有圖形介面時,處理序才會有與之相關的主視窗。如果相關處理序沒有主視窗,MainWindowHandle 值為零。如果才剛啟動處理序,而且想要使用它的主視窗控制代碼,請考慮使用 WaitForInputIdle 方法讓處理序完成啟動,以確保主視窗控制代碼已經建立起來。否則,會擲回例外狀況。』

    但所謂的有圖形介面是指?? 程式己經是 Win Form 了啊?

    另外,若改為範例中的 NotePad.Exe 是抓得到值的。請問有人知道為什麼嗎?

    感謝

    2006年8月3日 上午 09:00

解答

  • 意思是說,至少需要等到畫面顯示在視窗上才抓得到 hWnd。

    你可以先試著加入 Sleep 睡個幾秒鐘,看看你程式要顯示在畫面上多久,就睡多久,再來抓看看。

    2006年8月3日 上午 10:05