我在XP系統上使用VC6。下面的代碼運行完美,沒有錯誤,沒有錯誤。但它沒有得到正確數量的windows shell! hr的返回值是0,即S_OK。我很困惑!我只打開了一個windows shell,但是lCount得到了5.我打開了3個windows shell,lCount得到了7個。任何人都可以在這裏給我一個提示嗎?IShellWindows :: get_Count沒有得到正確數量的windows shell
IShellWindows *pisw = NULL;
hr = ::CoCreateInstance(CLSID_ShellWindows, NULL, CLSCTX_ALL, IID_IShellWindows, (void**)&psw);
long lCount = 0;
hr = pisw->get_Count(&lCount);
從文檔的範圍:「殼牌Windows集合包括文件瀏覽器窗口和網頁瀏覽器的Windows Internet Explorer和第三方網絡瀏覽器)」。如果你得到的基數爲4,加上1個「shell」窗口,你自己打開(4 + 1 = 5,4 + 3 = 7),這肯定意味着操作系統確實計算了一些你自己沒有計算的窗口。這可能是您的特定目標(這是...?)的問題 - 例如*不是一種可靠的方法來計算你所稱的「炮彈」。 – Tibo
@Tibo但我沒有打開任何東西。根本沒有網絡瀏覽器或第三方網頁瀏覽器。我的目標是找到一個Windows資源管理器shell窗口。這真的很奇怪。相同的代碼在另一臺計算機上完美工作。 – Michael