文章編號: 122787 - 上次校閱: 2005年7月11日 - 版次: 2.4

範例: FileAsso.exe 示範如何使用檔案關聯

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

結論

Windows 提供的檔案關聯,讓應用程式可以註冊它支援的文件類型。這是很有幫助,因為它可讓使用者按兩下或選取文件中檔案管理員 」 來編輯它,或列印它。ShellExecute() API 也支援檔案關聯。 檔案關聯也會讓使用者使用單一執行個體的應用程式透過檔案管理員開啟多份文件。

ShellExecute() 在 Windows 95 中有更多的好處。

其他相關資訊

下列檔案是可以從 Microsoft 下載中心 」 下載:
FileAsso.exe (http://download.microsoft.com/download/platformsdk/sample19/1/w9xnt4/en-us/fileasso.exe)
如需有關如何下載 Microsoft 支援檔案的詳細資訊,按一下 [下列面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
119591? (http://support.microsoft.com/kb/119591/EN-US/ ) 如何從線上服務取得 Microsoft 支援檔案
Microsoft 已掃描這個檔案有無病毒。Microsoft 使用已張貼檔案的日期中的 [可用的最新病毒偵測軟體。檔案儲存在安全性強化的伺服器上,以避免任何未經授權的更改至檔案。 下列資訊適用於 開啟舊檔 以及 檔案列印。為了方便閱讀,本文將討論開啟檔案] 來解釋檔案關聯的運作方式。

當使用者按兩下文件時,檔案管理員 」 會呼叫 ShellExecute() 與檔案名稱。ShellExecute() 檢查註冊資料庫將該檔案的副檔名與特定的應用程式相關聯的項目。如果項目存在,且未指定 DDE 指令,ShellExecute() 會啟動所指定應用程式在登錄中。如果登錄指定使用 DDE 指令,ShellExecute() 會嘗試建立與使用該應用程式主題該應用程式的 DDE 交談。如果應用程式回應 DDE 連線,ShellExecute() 會如同在登錄中指定傳送 DDE 執行命令。它是由應用程式定義上此交談的細節特別服務及主題名稱來連線到,而且也正確 DDE 執行命令語法來使用。不過,如果嘗試建立對話失敗,ShellExecute() 啟動應用程式在登錄中指定,並且嘗試建立 DDE 連線一次。

沒有一個多個選項,當應用程式不在執行時,這似乎是適當的檔案列印。此選項在 ShellExecute() 會傳送一個不同的 Execute 陳述式中,應用程式需要開啟及列印文件。完成 [列印時就結束。

有一個應用程式來開啟透過檔案關聯的單一應用程式執行個體透過多個文件的兩個步驟。做為範例假定 [MyApp 是應用程式,且 AssocSupport 是主題]。大部分的應用程式作為 MyApp 他們的應用程式名稱和系統為主題。
  1. 在應用程式啟動時,註冊是 DDE 伺服器應用程式名稱及主題 (例如 MyApp,與 AssocSupport)。 應用程式也必須有支援 DDE 執行陳述式。執行陳述式可能是任何格式 ; 最小,它應該是:

    <action><filename><options>

    這裡 <action>是任何指定的巨集指令例如開啟舊檔] 或 [列印的唯一識別。<filename>是應該操作的檔案。最後,<options>可以是任何需要傳遞上的選項。

    典型的執行陳述式會依照這種格式:

    [<action>(<filename>)]

    Microsoft Word 會使用,例如:

    [Open("%1")] 應用程式有支援必要的功能執行的陳述式。
  2. 檔案管理員] 或 [regedit 透過 Windows NT 可以來完成檔案關聯。

使用 [檔案管理員] 設定檔案關聯

當建立檔案類型,使用 檔案管理員 的關聯 關聯 從 [檔案] 功能表選擇 []。[關聯] 對話方塊會顯示現有的檔案關聯性的清單。這個對話方塊可讓您新增新的檔案類型 (或關聯檔案)、 修改現有的檔案類型或刪除現有的檔案類型。[新增檔案類型] 按鈕可讓使用者新增新的檔案副檔名的關聯。步驟如下:
  1. 新增 檔案類型 名稱。例如其命名為 「 Microsoft Word 6.0 文件"
  2. 選擇動作 ([開啟] 或 [列印])。比方說選取 [使用 DDE] 核取方塊。
  3. 新增目錄路徑和應用程式名稱。比方說輸入 WINWORD 為應用程式。
  4. 選取 [使用 DDE] 選項。
  5. 將應用程式設定為 DDE 伺服器名稱。
  6. 將 [主題設定為 DDE 伺服器。該主題,例如輸入 系統
  7. 設定 DDE 訊息 <action><filename><options>能與應用程式執行的陳述式相同。但是 <filename>,<options>應該由任何命令列引數是會被取代。例如使用:

    DDE 訊息: [FileOpen("%1")]

在 Windows NT 中使用 Regedit 以設定檔案關聯

注意: Regedit 是只在 Windows NT,Windows 3.1 版中不可以使用。

使用者也可以將產生關聯的檔案與應用程式藉由使用 regedit。 從 [編輯] 功能表,選擇 [加入檔案類型] 或 [修改檔案類型] (如果您要修改現有的檔案類型)]。對話方塊類似檔案管理員關聯] 對話方塊隨即出現。如所述的 「 檔案管理員 」,請遵循相同的步驟。在 Windows 3.1,版一旦定義透過這個方法的檔案類型移 「 檔案管理員 」 建立關聯] 對話方塊,並將檔案類型附加至副檔名]。

使用程式來設定檔案關聯

您也可以用程式設計方式設定該關聯。設定您的應用程式在其他機器上時,這會很有用。您可以透過安裝程式提供這項功能。第一的方法 (較簡單的方法) 是使用 regedit 來合併從檔案所做的變更。 此語法是:
   regedit <filename>.reg
				
<filename>.reg 的一個範例是:
   REGEDIT
   HKEY_CLASSES_ROOT\.riy = FMA000_File_assoc 
   HKEY_CLASSES_ROOT\FMA000_File_assoc = File_assoc 
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\open\command = fileasso.EXE 
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\open\ddeexec = [Open(%1)]
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\open\ddeexec\application
         = Myserver
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\open\ddeexec\topic = system
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\print\command = fileasso.EXE
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\print\ddeexec = [Open(%1)]
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\print\ddeexec\application 
         = MYServer
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\print\ddeexec\topic = System
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\print\ddeexec\ifexec =
   [Test(%1)]
				
該程式中您也可以新增機碼登錄藉由使用登錄 API。開發人員必須在註冊資料庫中加入下列機碼:
   // Your extensions.
   HKEY_CLASSES_ROOT\.riy = FMA000_File_assoc

   //File type name.
   HKEY_CLASSES_ROOT\FMA000_File_assoc = File_assoc

   // Command to execute when application is not running or dde is not
   // present and Open command is issued.
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\open\command = fileasso.EXE

   // DDE execute statement for Open.
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\open\ddeexec = [Open(%1)]

   // The server name your application responds to.
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\open\ddeexec\application =
   Myserver

   // Topic name your application responds to.
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\open\ddeexec\topic = system

   // Command to execute when application is not running or dde is not
   // present and print command is issued.
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\print\command = fileasso.EXE

   // DDE execute statement for Print.
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\print\ddeexec = [Open(%1)]

   // The server name your application responds to.
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\print\ddeexec\application =
   MYServer

   // Topic name your application responds to.
   HKEY_CLASSES_ROOT\FMA000_File assoc\shell\print\ddeexec\topic = System

   // DDE execute statement for print if the application is not already
   // running. This gives the options for a an application to Run, Print
   // and Exit.
   HKEY_CLASSES_ROOT\FMA000_File assoc\shell\print\ddeexec\ifexec =
   [Test(%1)]
				

?考

Windows SDK 程式師參考,磁碟區 1 章節 7 Shell 庫] 或 [線上叢書 》。

視窗 3.1 SDK 說明註冊資料庫的檔案 Shell 程式庫函數。

Win32 程式師參考,磁碟區 2 章 52 登錄及初始化檔案或線上叢書 》。

Win32 SDK 說明檔登錄和初始化

檔案管理員說明檔案。

REGEDIT.HLP

REGEDT32.HLP

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