2013-08-12 12 views
-2

我在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); 
+0

從文檔的範圍:「殼牌Windows集合包括文件瀏覽器窗口和網頁瀏覽器的Windows Internet Explorer和第三方網絡瀏覽器)」。如果你得到的基數爲4,加上1個「shell」窗口,你自己打開(4 + 1 = 5,4 + 3 = 7),這肯定意味着操作系統確實計算了一些你自己沒有計算的窗口。這可能是您的特定目標(這是...?)的問題 - 例如*不是一種可靠的方法來計算你所稱的「炮彈」。 – Tibo

+0

@Tibo但我沒有打開任何東西。根本沒有網絡瀏覽器或第三方網頁瀏覽器。我的目標是找到一個Windows資源管理器shell窗口。這真的很奇怪。相同的代碼在另一臺計算機上完美工作。 – Michael

回答

0

結果正確的,它是有效的指標爲IShellWindows::Item(index)

+0

但我沒有打開任何東西。根本沒有網絡瀏覽器或第三方網頁瀏覽器。我的目標是找到一個Windows資源管理器shell窗口。我只打開2或3個Windows資源管理器窗口。在另一臺電腦上,它工作正常。 lCount獲取正確數量的打開的資源管理器窗口。而你的意思是:Item(index)?? – Michael

+0

那麼?如果返回的計數是7,這意味着如果用7個不同的索引調用它,「IShellWindows :: Item」會返回7個不同的值。 – MSalters

+0

你知道如何使用IShellWindows :: Item嗎?我有另一個代碼是錯誤的,我真的不知道如何解決它!請幫忙!這裏是該職位:http://stackoverflow.com/questions/18183359/dont-know-how-to-use-ishellwindowsitem-correctly – Michael