2016-06-15 4 views
0

私はインターネットエクスプローラプロセスを開始しています。問題はp.MainWindowHandleで常にゼロを返すことです。 私の目的は、mainwindowHandlerを取得し、ちょうど開始された特定のウィンドウを最小限に抑えることです。同じコードがクロムブラウザで動作しています。インターネットエクスプローラでは機能しません。 私のコードは以下の通りです。IntPtr常にゼロC#

Process p = Process.Start("IEXPLORE.EXE", "www.google.com"); 
ShowWindow(p.MainWindowHandle, 2); 

ShowWindowは、メソッドのサイズ変更ウィンドウです。他の多くの理由の中で

+2

重複http://stackoverflow.com/questions/ 16185217/c-sharp-process-mainwindowhandle-always-returns-intptr-zeroショートカット:MainWindowHandleを参照する前にRefresh()メソッドを呼び出します。 – CathalMF

+2

最小化されたウィンドウでプロセスを作成する場合は、 ProcessStartInfo.WindowStyle'](https://msdn.microsoft.com/library/system.diagnostics.processstartinfo.windowstyle)を参照してください。実際、MSDNのサンプルでは 'iexplore.exe'が使用されています。 –

+0

私はリフレッシュメソッドを呼び出しましたが、それでも問題はあります。 –

答えて

0

(質問へのコメントを参照してください)、あなたはメインウィンドウを作成にプロセスのを待つにあります

// Process is IDisposable, wrap it into using 
    using (Process p = Process.Start("IEXPLORE.EXE", "www.google.com")) { 
    ... 
    // wait till the process creates the main window 
    p.WaitForInputIdle(); 

    // Main window (if any) has been created, so we can ask for its handle 
    ShowWindow(p.MainWindowHandle, 2); 
    } 
+1

しかし、実際には、これをしないでください。ユーザーに特定のブラウザを使用させることを強いる理由は決してありません。ユーザーがデフォルトブラウザを制御できるようにします。単にProcess.StartをURLと共に使用してください。 –

+0

実際に私はインターネットエクスプローラに開かれたURLを作業するユーザーを強制する必要があります –

関連する問題