我遇到了一些問題。在Windows上顯示隱藏進程?
與我之前關於Slipstreamed SP3 vs. patched SP3的問題相關,我們得出結論,有一個Internet Explorer進程正在啓動,指示從本地磁盤加載一個簡單的.html文件,其中包含javascript,它打開其餘的更大的聊天/會議系統。 Internet Explorer從Lotus Notes客戶端啓動。
不幸的是,我們只能看到在任務管理器中彈出的IExplore.exe進程,幾秒鐘後又消失了。
如果我們嘗試打開我們在磁盤上找到的本地.html文件,它會向我們提供頂部的信息欄,告訴我們它禁用了活動內容。然而,這並不是真正的問題。我們有另一臺機器具有相同的設置,但一切正常,手動加載.html文件也給我們提供了相同的錯誤。
但是,當IExplore從筆記開始時,可能會顯示另一個錯誤消息,但由於此過程只是啓動系統的其餘部分,並且此窗口已隱藏,所以我們無法看到它,是,錯誤消息/問題。因此,我想,也許我應該嘗試創建一個等待IExplore.exe啓動的小程序,然後立即顯示窗口,以便我們可以看到錯誤消息或任何問題。至少,希望我們能夠看到這一點。
到目前爲止,除了如果我從我自己的程序啓動一個進程,並帶有一個隱藏窗口,主窗口句柄爲0,並且因此我無法顯示窗口。我期望從Lotus Notes啓動的IExplore.exe進程具有相同的問題。
我的監控程序用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程序,它將所有命令行參數轉發到原始的參數,除了它指定要顯示該窗口。這是一個解決方案嗎?
這完全是一個調試工具,沒有辦法像這樣糟糕的解決方案將投入生產,所以現在我們只是要去墊片選項,看看是否有幫助。 – 2009-05-19 18:29:34