私は少し問題があります。Windowsに隠されたプロセスを表示していますか?
私の以前の質問Slipstreamed SP3 vs. patched SP3に関連して、Internet Explorerのプロセスが開始され、ローカルのディスクから簡単な.htmlファイルをロードするように指示されていることがわかりました。これにはjavascriptが含まれていますより大きなチャット/会議システムの残りの部分。 Internet Explorerは、Lotus Notesクライアントから開始されます。
残念ながら、私たちが見ることができるのは、タスクマネージャでIExplore.exeプロセスがポップアップし、数秒後に再び消えてしまうことです。
我々はディスク上に見つけた地元の.htmlファイルを、開こうとすると、それがアクティブコンテンツを無効にしていることを告げ、私たちの一番上にその情報バーを提供します。しかし、これは本当の問題ではありません。同じ設定でもすべてが動作する別のマシンがあり、手動で.htmlファイルをロードすると、同じエラーが表示されます。
しかし、メモからIExploreを起動したときに別のエラーメッセージが表示されることがありますが、このプロセスはシステムの残りの部分をキックスタートさせるもので、このウィンドウは表示されません。エラーメッセージ/問題です。
私は、おそらく、IExplore.exeが起動するのを待ってからすぐにウィンドウを表示して、エラーメッセージや問題が何であっても見ることができる小さなプログラムを作成してみるべきだと考えました。少なくとも、うまくいけばそれを見ることができるだろう。
これまでのところ、自分のプログラムから隠されたウィンドウでプロセスを開始すると、メインウィンドウのハンドルは0なので、結局ウィンドウを表示することはできません。このIExplore.exeプロセスがLotus Notesから開始され、同じ問題が発生することが予想されます。
私の監視プログラムは、C#で書かれており、基本的にこのループが実行されます。
foreach (var process in Process.GetProcesses())
{
if (process.ProcessName.ToLower() == "iexplore")
result.Add(process);
}
これは、すべてのIexplore.exeプロセス、窓かをピックアップし、IE8で、私は最初の2つのプロセスを取得ウィンドウを開きます。私はこれを何度も繰り返し実行し、以前の実行との違いを処理します。
しかし、プロセスは簡単に開始時にウィンドウハンドル0を持っているので、私はこれにそれを変更:
foreach (var process in Process.GetProcesses())
{
if (process.ProcessName.ToLower() == "iexplore" &&
process.MainWindowHandle != IntPtr.Zero)
{
result.Add(process);
}
}
が、今、それは窓を得た後でも、まったく何をピックアップしていませんウィンドウが表示された後にprocess.MainWindowHandleはゼロ以外のハンドル値を持ちますが、ウィンドウが表示されない場合は0のままです。
:私はこの隠されたのIexplore.exeプロセスを取り、それはすでにウィンドウハンドルを持っていないとき、自分自身を表示することを指示するための方法はありますか?私はそれを疑うが、おそらく誰かが私を間違っていると証明するかもしれない。
ない場合は、私のバックアップ計画は、ウィンドウが表示されるように指定していることを除いて、元にすべてのコマンドライン引数を転送するシムのIexplore.exeプログラムを作成することです。これは解決策でしょうか?
これはまったくデバッグツールです。そのような厄介な解決策は本番に入るわけではありません。今はshimオプションを使って役立つかどうかを確認します。 –