本文章是由機器翻譯。

內部 Windows 7

簡介程式庫

Yochay Kiriaty

本文將告訴您:

  • Windows 7
  • 程式庫
  • 一般檔案對話方塊
  • 殼層的程式設計模型
本文將使用下列技術:
Windows 7

本文根據 Windows 7 鮮版。詳細資料如有變更。

內容

程式庫使用者,在 Windows 7 的詞
程式庫感知應用程式
使用一般的檔案對話方塊
選取並使用 Like 資料夾的程式庫
殼層的程式設計模型
使用命令介面的程式設計模型
使用新的 IShellLibrary API
程式庫] 下,蒙面客
支援完整的程式庫模型
摘要

這是第一個 「 在一系列 Windows 7 的相關文件。一系列著重於新使用者經驗的開發人員可以進入脫穎而出 Windows 7 在其應用程式。本文一的一部分將著重 Windows 7,呼叫程式庫中的新使用者設定檔儲存區概念。下載Windows 7 的發行候選現在,,協助您的本文的資訊。

程式庫使用者,在 Windows 7 的詞

之前我們開始深入到 Windows 7 程式庫 API,我們需要使其更瞭解為什麼庫引入在 Windows 7 以及如何改善使用者管理其內容的經驗。若要進一步瞭解 Windows 7 中的程式庫的概念,我們要查看回時間。舊版 Windows,Windows Vista 和 Windows XP,可包含特殊資料夾儲存像我的文件] 的使用者內容的集。Windows XP 會使用,常數的特殊項目識別碼清單 (CSIDL) 是一個的值,會提供唯一的獨立系統的方式,來識別應用程式,經常使用的特殊資料夾,但它不能有相同的名稱或任何給定系統上的位置的清單。

在 Windows Vista 的時間範圍 CSIDL 會成為新的儲存系統,稱為已知的資料夾識別碼。Windows Vista,CSIDL 特殊資料夾所參考的 GUID 值集合。很重要請注意,CSIDL 系統仍然支援 Windows Vista 和 Windows 的 7 的回溯相容性。您可以在已知的資料夾識別碼清單,找到 [FOLDERID_Documents] 資料夾。此資料夾會表示同時的 [我的文件] 資料夾做為儲存使用者設定檔的一部分和 [FOLDERID_Fonts 做為系統特殊資料夾的一部分。在 Windows 7 的已知的資料夾識別碼清單展開,以支援 Windows 7 程式庫。您可以找到有,除了其他的功用外像在 FOLDERID_DocumentsLibrary,表示文件程式庫的 GUID。在 Windows Vista,這些特殊資料夾已自動索引,讓執行它們的內容上的更快、 更有效率的搜尋作業的使用者。不過,我們可以找到許多使用者儲存區檔案在各種將他們的 PC,在 「 特殊使用者設定檔資料夾,不僅像 c:\My Temp] 資料夾的不同資料夾中的 d:\Birthday2008\pictures,或即使在遠端的儲存區中。儲存檔案之外,使用者設定檔的儲存空間影響索引的阻礙使用者的搜尋經驗。我們通常會發現自己尋找特定檔案的我們只需要幾天前,忘記,我們已儲存它,並再發現,搜尋無法找到它,因為檔案已永遠不會建立索引。

使用 Windows 7,概念的程式庫會嘗試解決問題的使用者儲存全透過個人電腦的內容,讓它們能夠完全控制其文件庫] 資料夾結構。也就是說在 Windows 7 使用者可以定義要在文件庫中包含的資料夾。這實際上,為 true Windows 7 中的任何程式庫。我們可以說的程式庫是使用者定義的集合,是使用者內容的邏輯表示的資料夾。藉由在程式庫中包含資料夾,使用者告訴 Windows 他或她的重要資料的位置。系統將索引啟用快速搜尋] 和 [Windows 檔案總管中的功能根據檔案的屬性和中繼資料更豐富檢視排列這些資料夾。[圖 1 顯示數個資料夾的整合到單一的程式庫檢視,並在 Windows 7 中會顯示豐富的搜尋和 pivots 的 Windows 檔案總管。

[圖 1 整合到單一的程式庫的數個資料夾的檢視

程式庫會是 Windows 殼層的不可或缺一部分。這項整合是非常重要,因為它可讓使用者相同的方式瀏覽他們的檔案,它們一樣表示沒有任何新的行為,需要瞭解使用者資料夾中的。按一下文件庫時,只會顯示一個特定的排列方式中所有文件。此外,因為,程式庫已整合至 Windows 殼層中,使用者可以執行搜尋作業,並使用屬性和中繼資料篩選結果,例如日期圖片拍攝,在的歌曲的內容類型和項目的普及。也就是說使用程式庫使用者取得要享受彈性和索引的檔案儲存。

程式庫感知應用程式

我們要注意大部分的應用程式應該正常工作,Windows 7 的程式庫時, 是進入 Windows 7 程式庫環境,以提供更豐富的使用者經驗的機會。其中一個可能不知道會發生什麼事如果應用程式不支援程式庫。假設的應用程式,做為其功能的一部分需要將檔案儲存至磁碟。應用程式會提示使用選項來選取檔案的位置使用者儲存。由於這是,使用者通常會他或她需要處理文件時,使用者可能會儲存 「 位置 」 選擇他或她在文件庫。

不過,如果應用程式無法辨識文件程式庫不是一般資料夾,應用程式會嘗試將檔案儲存直接到文件庫中,如果,它只是另一個資料夾,在磁碟上。這表示資料的問題因為現在,我們已經知道程式庫會 non–file 系統位置,並因此無法被視為一般的資料夾。應用程式需要察覺的因為它們處理的程式庫。幸好,Windows 7 所包含的更新的殼層 API 」、 「 程式庫 API 和 「 更新讓開發人員適當地處理程式庫的一般檔案對話方塊。

程式庫的應用程式應包含處理的使用者無意間嘗試,如果資料夾儲存至程式庫的檔案或載入程式庫的內容,請選取程式庫的情況下的機制。此外,大部分的應用程式可讓與檔案系統互動,做為應用程式經驗的一部分使用者。應用程式應該會提供具有相同的熟悉的進入點的使用者,和 Windows 7 程式庫所提供的 UI 中。藉由包含資料夾,在程式庫使用者 designate 儲存其重要資料的位置,告訴我們這內容它們在意。應用程式應該升級這些位置,藉由在應用程式中支援程式庫。

開發人員,有與 Windows 7,可協助應用程式成為程式庫的幾個整合點。開發人員應該會檢視下列三個整合點,並根據他們的需要選取。

  1. 在大部分的基本的整合點是直接使用一般檔案對話方塊 (CFD) 選取檔案及資料夾,並直接到程式庫所儲存。
  2. 第二個整合點提供應用程式選項以在 Windows 7 脫穎而出,藉由啟用應用程式選取,並使用程式庫的內容。
  3. 最後一個整合點會提供更多的進階整合選項支援完整的程式庫程式設計模型。

使用一般的檔案對話方塊

好消息是 Windows 7 程式庫的第一個類別市民在 CFD,並允許使用者瀏覽和搜尋程式庫中。它們甚至可以選擇儲存為特定程式庫不是只是其中一個資料夾從媒體櫃,但而程式庫本身內的位置了 !因為 Windows 7 程式庫儲存備份,使用者可以儲存並將檔案複製到任何資料夾他們有權限的程式庫中所包含。儲存檔案哪裡當使用者將複製的位置]和 [儲存檔案直接以程式庫,每個程式庫具有預設值。預設的情況下,這個位置就會是包含在預設的庫之已知資料夾] 或 [加入自訂的程式庫的第一個資料夾。

但是 (有一定是這個警告 !),強烈建議您使用 Windows Vista] 和 [不舊版的 「 CFD 版本中引進之新 CFD 介面。是非常重要要注意使用舊版的 CFD API 尚未變更自 Windows Vista 和 Windows XP,應用程式相容性原因的。不過,[CFD 舊版本,不直接支援程式庫,或完整的新使用者經驗提供在 Windows 7。[圖 2 顯示了舊版] 及 [新的 CFD 並排。

fig02a.gif

fig02b.gif

[圖 2] 的新的一般檔案對話方塊的舊和新檢視

在舊版的 CFD 即使程式庫會呈現正確的功能窗格,他們需要的額外的按一下將儲存到 [包含] 資料夾,而不只是程式庫本身的其中一個。使用者無法直接從 [CFD 搜尋或也經驗豐富的預覽處理常式,無法選取多個檔案,在資料夾,因為舊版的 CFD 不支援傳回多個檔案,從其他資料夾的位置。相較之下,這會是 Windows 7 程式庫所支援的案例。

您最好使用適當的 API 顯示 [CFD 的正確版本。顯示使用.NET 在 CFD 時,開發人員可以使用 [System.Windows.Forms.FileDialog 或 Microsoft.Win32.FileDialog 命名空間。後者使用後的 CFD 的舊版本.NET 開發人員應該永遠使用 WinForms 命名空間來顯示新的 CFD。[圖 3 ,以提示使用者程式碼片段] 顯示要選擇儲存所顯示一般的位置,將儲存檔案對話方塊啟用使用者選取資料夾或程式庫。

[圖 3 SaveFileDialog 檔案

System.Windows.Forms.SaveFileDialog _fd = new System.Windows.Forms.  SaveFileDialog();
_fd.Title = "Please choose a location to save your file";
_fd.FileName = "[Get Folder…]";
_fd.Filter = "Library|no.files";
if (_fd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
    string dir_path = System.IO.Path.GetDirectoryName(_fd.FileName);
    if (dir_path != null && dir_path.Length > 0)
    { 
        lblResult.Content = dir_path; 
    }
}

原生程式碼的開發人員應該會使用新 IFileDialog 原生 API 的家族: IFileDialog,IFileOpenDialog,IFileSaveDialog,IFileDialogCustomize,IFileDialogEvents,IFileDialogControlEvents。 這些取代舊版 API 從舊的 Windows 版本: GetOpenFileName,GetSaveFileName。

[圖 4 示範如何使用新系列 IFileDialog 原生 API,提示使用者使用 [儲存] 對話方塊,將儲存到資料的資料夾 / 程式庫。

[圖 4 IFileDialog 原生 API

*ppsi = NULL;
IFileSaveDialog *pfod;
hr = CoCreateInstance(
CLSID_FileSaveDialog, 
NULL, 
CLSCTX_INPROC, 
IID_PPV_ARGS(&pfod));
if (SUCCEEDED(hr))
{
  hr = pfod->SetOptions(FOS_PICKFOLDERS);
  if (SUCCEEDED(hr))
  {
  hr = pfod->Show(hWndParent);
           if (SUCCEEDED(hr))
           {
           hr = pfod->GetResult(ppsi);
           }
    }
    pfod->Release();
}

殼層原生 API 會是以 COM 為基礎。 使用任何 COM 物件之前,我們需要藉由呼叫 CoCreateInstance 初始化 COM 物件。 後初始化,* pfod IFileSaveDialog 變數,我們會設定選取資料夾的 FOS_PICKFOLDERS 旗標傳遞至 [IFileOpenDialog.SetOptions() 對話方塊選項。 這個程式碼告訴讓使用者選取資料夾,而不是檔案的 [開啟] 對話方塊,並允許選擇儲存資料庫使用者位置。 在選擇的程式庫的情況下,CFD 然後會傳回預設儲存位置資料夾,與選擇的程式庫相關聯。

[圖 3] 和 [ 圖 4 非常簡單並沒有引入任何新的程式碼。 不過,很重要,將在升級應用程式執行在 Windows 7 和支援的 Windows 7 程式庫之間的一致性。 在 CFD 被為了提供一致的經驗,包括程式庫,新的 Windows 檔案總管。 所有 Windows 7 Explorer 改良有已都執行透過以 [CFD。 在大部分的情況下,這是在理想的方式,讓使用者瀏覽和互動的程式庫在應用程式內部。

選取並使用 Like 資料夾的程式庫

假設對使用者顯示圖片的幻燈片應用程式的情況。 利用程式庫使用者基本上告訴系統他或她很重要的圖片會儲存在圖片庫。 應用程式可以只要直接指向顯示整個集合的使用者的圖片與圖片的程式庫。 此外,從的觀點的開發人員,使用程式庫系統可以不需要維護不同的組態檔或例如,圖片的資料庫,因為開發人員可以依賴系統程式庫。 之前我們深入殼層的程式庫程式設計 API 先我們需要瞭解.殼層的程式設計模型的相關的一些概念。

殼層的程式設計模型

在殼層項目 (IShellItem) 通常稱為某個項目會是殼層 UI 的貨幣] 和 [其程式設計模型。 項目會是個別、 獨立的 (Self-Contained) 的內容來源。 例如,用來控制 CFDs 介面方法的幾個很會使用殼層項目來參考資料夾,而非檔案系統路徑。 這是很重要的因為在 CFD 可以通訊同時檔案系統資料夾] 及 [其他虛擬資料夾在殼層例如 [控制台] 或 [在電腦] 資料夾中找到的資訊。

其他重要的殼層的 COM 介面是:

  • IShellLink 介面會表示連結,通常是檔案、 資料夾或可執行檔
  • IShellFolder 介面會表示 Shell 資料夾物件從 Shell 命名空間。 使用 [IShellFolder,您可以周遊資料夾的內容],擷取的資料夾中的項目顯示名稱、 剖析顯示名稱相對於在的資料夾和取得的項目識別碼清單

Windows 7 引進了新的殼層 API 呼叫 IShellLibrary,您可以從 IShellItem 為了工作,並在 Windows 7 支援程式庫中查詢。

現在,我們已經定義殼層進行程式設計模型的不同元件,我們就可以看到程式庫如何符合此模型。 由於程式庫不是檔案系統位置,您不能使用檔案 system–specific FindFirstFile 類似的 API。 而,您有兩個主要的選項,使用程式庫的內容。

使用命令介面的程式設計模型

您可以使用 [IShellItem] 和 [IShellFolder 的介面和 Helper 函式來列舉內容的程式庫,就如同它們是一般的資料夾一樣。 這表示應用程式可以使用程式庫的內容,而不使用新的程式庫 API 與很少變更其現有的基礎碼。

[圖 5 介紹使用 IShellFolder 介面,列舉整個圖片庫的內容。

[圖 5 IShellFolder 介面

IShellItem *psi;
HRESULT hr =  SHGetKnownFolderItem(FOLDERID_PicturesLibrary, KF_FLAG_CREATE, NULL, IID_PPV_ARGS(&psi));
if(SUCCEEDED(hr))
{
    IShellFolder *psf;
    hr = psi->BindToHandler(NULL, BHID_SFObject | , IID_PPV_ARGS(&psf));
    if(SUCCEEDED(hr))
         {
               IEnumIDList *penumIDList;
               psf->EnumObjects(NULL, SHCONTF_FOLDERS | SHCONTF_NONFOLDERS , IID_PPV_ARGS(&penumIDList));
               //use penumIDList to enumerate the content of the folder
          }
}

這裡您可以看到,使用 Helper 函式 SHGetKnownFolderItem 我們可以藉由傳遞,FOLDERID_PicturesLibrary 中擷取程式庫的正確位置。 這是代表已知的資料夾,這在我們的案例是圖片庫的 GUID。 成功的呼叫將會填滿 [IShellItem * 具有正確的資訊有關的程式庫的 psi 介面會表示為一個殼層項目。 程式碼的其餘會是標準的殼層設計,我們使用,BindToHandler 繫結 Shell 資料夾 (轉型) 的先前取得的殼層項目。 接下來,我們列舉 Shell 資料夾可在程式庫的情況下可能是檔案或資料夾中的不同項目。 在 SHGetKnownFolderItem 是殼層 Helper 函式,也是較大的群組可以在 Windows 7 RC SDK 中的 Shlobj.h 標頭檔中找到的 Helper 函式的一部分。 請注意,SHCONTF_FOLDERS | SHCONTF_NONFOLDERS 我們所傳遞的旗標。 這會告訴,Shell 資料夾我們要傳回的所有檔案及資料夾,在程式庫中。 我們無法傳遞 SHCONTF_NAVIGATION_ENUM 以取得程式庫位置,而非程式庫內容。

使用新的 IShellLibrary API

您可以達到相同的功能中顯示 [圖 5 使用中所示的新 Windows 7 IShellLibrary API [圖 6 .

[圖 6 IShellLibrary API

IShellLibrary *pslLibrary;
HRESULT hr = SHLoadLibraryFromKnownFolder(FOLDERID_PicturesLibrary, STGM_READ, IID_PPV_ARGS(&pslLibrary));
if(SUCCEEDED(hr))
{
       IShellItemArray *psiaFolders;
       hr = pslLibrary->GetFolders(LFF_STORAGEITEMS, IID_PPV_ARGS(&psiaFolders)); 
       IEnumShellItems *penumShellItems;
       psiaFolders->EnumItems(&penumShellItems);
       //work with penumShellItem to enumerate the items in the library
}

這裡您可以看到我們會使用另一個 Helper 函數 SHLoadLibraryFromKnownFolder,來建立 IShellLibrary 物件。 從這個物件中,我們可以呼叫傳回的 IShellitemArray GetFolders 方法。 稍後會使用這個傳回以取得列舉值,要周遊整個程式庫的內容。

在最後一個範例中中,,我們使用 Helper 函式 SHLoadLibraryFromKnowFolder。 如上所述這個 Helper 函式中,並 Windows 7 的程式庫與相關的其他人可以找到 Shlobj.h 標頭檔中 Windows 7 RC SDK 中。 以下是很重要的程式庫 Helper 函式的清單:

  • SHAddFolderPathToLibrary (資料夾新增至程式庫)
  • SHCreateLibrary (建立 IShellLibrary 物件)
  • SHLoadLibraryFromItem (建立和從指定的程式庫定義檔案中載入 IShellLibrary 物件)
  • SHLoadLibraryFromKnownFolder (建立和載入指定的 KNOWNFOLDERID IShellLibrary 物件)
  • SHLoadLibraryFromParsingName (建立和載入指定路徑的 IShellLibrary 物件)
  • SHRemoveFolderPathFromLibrary (從程式庫移除資料夾)
  • SHResolveFolderPathInLibrary (嘗試解析程式庫的資料夾已重新命名或移動的目標位置)
  • SHSaveLibraryInFolderPath (將 IShellLibrary 物件儲存至磁碟)

讓我們先檢閱下列的程式碼 ( [圖 7 ),使用這些 Helper 函式的幾個建立新的程式庫,將資料夾與該的程式庫產生關聯,並 「 儲存 」 程式庫程式庫的資料夾中。

[圖 7 IShellLibrary 使用 SHCreateLibrary Helper 函式

IShellLibrary *pIShelLibrary;
HRESULT hr = SHCreateLibrary(IID_PPV_ARGS(&pIShelLibrary));
if (SUCCEEDED(hr))
{
      IShellItem *pIShellItem;
      SHAddFolderPathToLibrary(pIShelLibrary, L"C:\\Users\\Public\\Documents");
      hr = pIShelLibrary->SaveInKnownFolder(FOLDERID_Libraries, L"My New Library", LSF_MAKEUNIQUENAME, 
            &pIShellItem);
      pIShellItem->Release();
      pIShelLibrary->Release();
}

這裡您可以看到我們會建立新的 IShellLibrary 物件,以便使用 SHCreateLibrary Helper 函式。 接下來我們將 「 公用文件 」 資料夾加入至程式庫物件。 然後我們會將儲存在程式庫資料夾的其餘部分之的程式庫中新的程式庫,並提供其名稱 [我的新程式庫。

[圖 7 ,我們使用 IShellLibrary 介面的 SaveInKnownFolder 方法儲存新我們剛才建立的程式庫。 大多數的 IShellLibrary 介面中的方法都是自我闡明的。 不過,讓我們來檢視部分需要我們注意:

  • 認可方法會認可程式庫的變更到現有的程式庫檔案。 這表示當您以程式設計方式變更程式庫時,您需要呼叫認可方法,以儲存變更。
  • SetIcon 方法會採用的資源 DLL 名稱和圖示索引為程式庫圖示。
  • 在 SetFolderType 接收的輸入參數已知的資料夾類型範本的 GUID。 此 GUID 會定義可以是下列之一的程式庫的型別: 泛型的圖片音樂,視訊和文件。 設定型別的資料夾範本會變更程式庫的 [Windows 檔案總管] 檢視,並讓搜尋] 和 [特定的型別程式庫的重要的檢視選項。

程式庫] 下,蒙面客

[圖 7 ] 所示,程式碼會在程式庫的資料夾中建立新的程式庫檔案。 在 Windows 7 程式庫,儲存為.library-微秒為單位的檔案副的 XML 定義檔案中。 在檔案名稱是在實際的名稱,程式庫。 例如,是可以由稱為 documents.library-微秒為單位的 XML 檔案中表示文件程式庫。 程式庫的描述,會儲存在 %appdata%\Microsoft\Windows\Libraries 資料夾 (也稱為 FOLDERID_Libraries) 的磁碟上。

讓我們深入到文件庫定義檔結構描述。 XML 結構很自我闡明,但讓我們來說明一些項目。 如 [圖 8 ] 所示,在檔案頂端我們可以找到程式庫標頭 」 資訊:

[圖 8] 文件庫定義檔結構描述

<libraryDescription xmlns="https://schemas.microsoft.com/windows/2009/  library">
  <name>@shell32.dll,-34575</name>
  <ownerSID>S-1-5-21-2127521184-1604012920-1887927527-4897363</ownerSID>
  <version>4</version>
  <isLibraryPinned>true</isLibraryPinned>
  <iconReference>imageres.dll,-1002</iconReference>
  <templateInfo>
    <folderType>{7D49D726-3C21-4F05-99AA-FDC2C9474656}</folderType>
  </templateInfo>

XML 項目根目錄將是您,其中包含子項目,定義如下的媒體櫃的 libraryDescription:

  • <ownersid> 會定義建立此程式庫隔離程式庫中,並防止其他的使用者的使用者資料的使用者的安全性 ID。
  • <islibrarypinned> 」 是一項布林 (Boolean) 的項目,定義了如果程式庫已固定,Windows 檔案總管] 中的 [左方導覽] 窗格,並不是工作列]。
  • <version> 會定義內容的反映的程式庫的定義檔已變更的次數這個程式庫版本。
  • <templateinfo> 會是一個選擇性的容器項目,可讓作者指定資料夾類型 (文件、 圖片、 視訊),控制在 Windows 檔案總管中檢視的排列方式。
  • <iconreference> 會定義圖示資源,使用標準的 Windows Shell 資源樣式。 例如:

<iconreference> C:\Windows\system32\imageres.dll,-65 </iconreference>。

這個圖示會顯示在 Windows 檔案總管中的程式庫。

使用者,無法變更預設程式庫圖示透過 Windows 檔案總管,也可以將它們指派圖示至新的自訂使用者定義程式庫。 不過,這可以完成使用我們將涵蓋在未來的組件,此系列的 API,以程式設計方式。

金鑰部分會是 XML 的,程式庫表示,在下列程式碼所示的位置的清單:

<searchConnectorDescriptionList>
    <searchConnectorDescription publisher="Microsoft" product="Windows">
      <description>@shell32.dll,-34577</description>
      <isDefaultSaveLocation>true</isDefaultSaveLocation>
      <isSupported>true</isSupported>
      <simpleLocation>
        <url>knownfolder:{FDD39AD0-238F-46AF-ADB4-6C85480369C7}</url>
      <serialized>MBAAAE…. </serialized>
      </simpleLocation>
    </searchConnectorDescription>
  • <searchconnectordescriptionlist> 會包含一或多個搜尋連接器對應至程式庫中包含的實體位置。
  • <searchconnectordescription> 會包含 simpleLocation 項目描述程式庫中包含的一個位置。
  • <url> 會定義這個位置的 URL。人們可讀性只,這無法用來開發人員因為它是可能已過期。
  • <serialized> 會是實際的序列化的 ShellLink 物件程式庫中的一個位置的表示。

最後一個注意事項: 應用程式應該不會嘗試存取或編輯媒體櫃的描述檔。而,應用程式應該永遠使用殼層進行程式設計模型或 IShellLibrary API 來使用,並管理程式庫內容。

支援完整的程式庫模型

使用者可以加入、 移除,並重新排列位置,以及變更預設的儲存位置,透過媒體櫃管理 UI。這會在 [圖 9 ,顯示可直接從 [Windows 檔案總管]。

fig09.gif

[圖 9] 程式庫管理 UI

此外,透過 IShellLibrary 介面,可以修改程式庫的位置。程式庫結構的任何變更會反映在程式庫的定義檔案,然後保存直接至基礎.library-ms 檔中。您可以通知的這類變更藉由監視.library-ms 檔案的任何變更。假設您的應用程式會依賴一個的程式庫的內容,或您的應用程式目前正顯示特定的程式庫的內容。您要通知後,程式庫的內容變更。使用原生 SHChangeNotifyRegister Shell Helper 函式或使用 Managed System.IO 命名空間中找到的 FileSystemWatcher,希望程式庫定義檔案的變更通知的應用程式可以這樣做。使用這些介面已超出本文範圍,因為這些不是新的 API,而且會記載。

另一個要考慮的選項是應用程式需要管理使用者像加入新的資料夾的圖片至圖片存放庫的資料夾中。如果使用圖片庫您可以在應用程式中使用程式庫管理對話方塊顯示相同的對話方塊 Windows 7 會提供使用者管理其程式庫。這樣做您可以將一個的一致的外觀和行為,增加到您的使用者。如果選擇使用程式庫管理對話方塊介面程式庫會變更為,如果您會修改程式庫內容直接在 Windows 檔案總管中。這個對話方塊將不會傳回任何資訊至您的應用程式。萬一您顯示特定的程式庫的內容時,您必須註冊以便接收更新中,如上面所述的通知。

摘要

在這的篇文章中,您已引入的概念和 Windows 7 中的程式庫的程式設計模型。您可以檢閱做為 Windows 7 使用者經驗的一部分,播放程式庫的重要角色。然後您需要一個深-俯衝到媒體櫃,瞭解程式庫,並將探索其支援的基礎架構。然後您會看到不同的機會開發人員對,使他們的應用程式庫的注意。最後,您去透過不同的可用程式設計模型和 API 的簡短導覽。

Yochay Kiriaty 是一個技術在 Microsoft,著重於 Windows 7。他在軟體開發中有超過的十年的經驗。他具有寫入,並教導學術電腦科學系課程且的現用的參與者至 Windows 的部落格.

Alon Fliess 會是 「 CTO Sela 群組。Sela 有 18 年追蹤記錄中成功的 IT 訓練,並且為以色列 ’s 領導人,在高品質的訓練中辨識出 IT 專業人員。Alon 會有電腦技術,深入瞭解,並保留在 bsc 程度,在 [電子和電腦工程從 Technion,在以色列制定的技術。Alon 已進行程式設計,並教導過去 22 年而且在許多 Microsoft 技術特別是 Windows 的內部,C ++ Win32 的程式設計和使用 C# 或 C 的.Net 的專家 ++/ CLI。