注意: 使用 Windows 傳統 [檔案總管] 中的模式不正確的值為傳回 SelectedItems

文章翻譯 文章翻譯
文章編號: 819499 - 檢視此文章適用的產品。
本文已封存。本文係以「現狀」提供且不會再更新。
全部展開 | 全部摺疊

在此頁中

徵狀

當您設定 Windows 檔案總管] 在 [Windows 傳統配色] 模式中顯示資料夾時,IShellFolderViewDual 介面 SelectedItems 方法會傳回不正確集 FolderItems

狀況說明

Microsoft 已確認這是在本文開頭所列之 Microsoft 產品中的有錯誤。

其他相關資訊

重製行為的步驟

  1. 開啟文字編輯器如 「 記事本 」,將下列程式碼貼至新的檔案,然後將檔案儲存成 Sample.cpp
    #include <Windows.h>
    #include <TChar.h>
    #import <SHDocVw.dll>
    #import <Shell32.dll>
    #include <iostream>
    using namespace std;
    
    int _tmain(int argc, TCHAR ** argv)
    {
        CoInitialize(0);
        try
        {    
            SHDocVw::IShellWindowsPtr sw(__uuidof(SHDocVw::ShellWindows));
            for (long i = 0; i < sw->Count; ++i)
            {
                if (SHDocVw::IWebBrowser2Ptr ie = sw->Item(i))
                {
                    cout << _com_util::ConvertBSTRToString(ie->LocationURL) << endl;
                    if (Shell32::IShellFolderViewDualPtr view = ie->Document)
                    {
                       cout << view->SelectedItems()->Count << _T(" selected item(s)") << endl;
                    }
                }
            }
        }
        catch (_com_error const & e)
        {
            cout << e.ErrorMessage() << endl;
        }
        CoUninitialize();
        return 0;
    }
  2. 在命令提示字元執行下列命令編譯該檔案: cl /EHsc Sample.cpp
  3. 關閉目前開啟的所有 Windows 檔案總管] 視窗。
  4. 用滑鼠右鍵按一下 [開始],然後再按一下 [檔案總管] 開啟 [Windows 檔案總管] 視窗。
  5. 在 [工具] 功能表上按一下 資料夾選項
  6. 在 [一般] 索引標籤上選取 [Web 檢視,] 下的 [使用 Windows 傳統資料夾] 選項,,然後按一下 [[確定]
  7. 選取一個資料夾包含許多項目。在右窗格中,選取的某些項目在此資料夾中。
  8. 在命令提示字元執行 Sample.exe 可執行檔 (也在步驟 2 中的產生)。

    輸出顯示的 Count 屬性 FolderItems 執行個體所 IShellFolderViewDual 介面的 SelectedItems 方法所傳回的結果。

    您預期輸出是您在 Windows 總管] 中資料夾從先前的步驟中所選取的項目數目。不過,含有 [所有 數目在 Windows 檔案總管中選取的資料夾中的項目] 輸出。
  9. 當 Windows 檔案總管] 在 網頁檢視 模式時由 SelectedItems 傳回這些資料夾項目會正確地設定為 FolderItem 執行個體所選取的。

    若要確認先前的陳述式在 Windows 檔案總管中在 [工具] 功能表上按一下 [資料夾選項]
  10. 在 [一般] 索引標籤上 Web 內容,] 下按一下 [啟用的 Web 內容在我的桌面] 選項,然後按一下 [確定] 關閉對話方塊]。
  11. 在命令提示字元執行 Sample.exe (在步驟 2 中產生)。

    輸出顯示的 Count 屬性 FolderItems 執行個體所 IShellFolderViewDual 介面的 SelectedItems 方法所傳回的結果。

    輸出是,如預期般,您必須在該資料夾中選取的項目數目。
或者,您可以使用 IShellFolderViewDual 介面的 FocusedItem 方法來取代 SelectedItems 方法的不正確的功能。FocusedItem 方法會傳回目前選取的項目資料夾中,並會限制您的應用程式以 Windows 檔案總管] 中的單一資料夾選取範圍。

?考

有關其他程式設計指南 Shell,請參閱下列 MSDN 文件:
殼層程式設計人員指南
http://msdn2.microsoft.com/en-us/library/bb776778.aspx

屬性

文章編號: 819499 - 上次校閱: 2014年2月26日 - 版次: 3.4
這篇文章中的資訊適用於:
  • Microsoft Windows 2000
關鍵字:?
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbshell kbbug KB819499 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:819499
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com