Aximp.exe (Windows Forms ActiveX 控制項匯入工具)
ActiveX 控制項匯入工具可以將 ActiveX 控制項在 COM 類型程式庫中的類型定義,轉換成 Windows Form 控制項。
Windows Form 只能裝載 Windows Form 控制項,也就是衍生自 Control 的類別。 Aximp.exe 會產生 ActiveX 控制項的包裝函式類別,可以在 Windows Form 上裝載。 這可讓您使用相同的設計階段支援和程式設計方法論,以適用於其他 Windows Form 控制項。
若要裝載 ActiveX 控制項,您必須產生衍生自 AxHost 的包裝函式控制項。 這個包裝函式控制項包含基礎 ActiveX 控制項的執行個體。 它知道如何與 ActiveX 控制項進行通訊,但是會顯示為 Windows Form 控制項。 這個產生的控制項會裝載 ActiveX 控制項並公開其屬性、方法和事件,如同這些產生的控制項。
此工具會自動與 Visual Studio 一起安裝。 若要執行此工具,請使用 Visual Studio 開發人員命令提示字元或 Visual Studio Developer PowerShell。
在命令提示字元上鍵入下列字行:
語法
aximp [options]{file.dll | file.ocx}
備註
Argument | 描述 |
---|---|
file | 原始程式檔的名稱,包含要轉換的 ActiveX 控制項。 檔案引數必須有 .dll 或 .ocx 副檔名。 |
選項 | 描述 |
---|---|
/delaysign |
指定 Aximp.exe 使用延遲簽署來簽署產生的控制項。 您必須使用 /keycontainer: 、/keyfile: 或 /publickey: 選項來指定此選項。 如需延遲簽署程序的詳細資訊,請參閱延遲簽署組件。 |
/help |
顯示工具的命令語法和選項。 |
/keycontainer: containerName |
使用 containerName 所指定之金鑰容器中的公開/私密金鑰組,以強式名稱簽署產生的控制項。 |
/keyfile: 檔案名稱 |
使用 filename 中找到的發行者正式公開/私密金鑰組,以強式名稱簽署產生的控制項。 |
/nologo |
隱藏 Microsoft 程式啟始資訊顯示。 |
/out: 檔案名稱 |
指定要建立的組件名稱。 |
/publickey: 檔案名稱 |
使用由 filename 所指定之檔案中找到的公開金鑰,以強式名稱簽署產生的控制項。 |
/rcw: 檔案名稱 |
使用指定的執行階段可呼叫包裝函式,而不是產生新的執行階段可呼叫包裝函式。 您可以指定多個執行個體。 目前的目錄用於相對路徑。 如需詳細資訊,請參閱執行階段可呼叫包裝函式。 |
/silent |
隱藏顯示成功訊息。 |
/source |
產生 Windows Form 包裝函式的 C# 原始程式碼。 |
/verbose |
指定詳細資訊模式;顯示其他進度資訊。 |
/? |
顯示工具的命令語法和選項。 |
Aximp.exe 會一次轉換整個 ActiveX 控制項類型程式庫並產生一組組件,其中包含通用語言執行平台中繼資料,並控制原始類型程式庫中定義之類型的實作。 根據下列模式為產生的檔案命名:
COM 類型的 Common Language Runtime Proxy: progid.dll
適用於 ActiveX 控制項的 Windows Forms Proxy (其中 Ax 代表 ActiveX):Axprogid.dll
注意
如果 ActiveX 控制項的成員名稱符合 .NET Framework 中定義的名稱,則 Aximp.exe 在建立 AxHost 衍生類別時就會在成員名稱前面加上 "Ctl"。 例如,如果您的 ActiveX 控制項有一個名為 "Layout" 的成員,它在 AxHost 衍生類別中就會被重新命名為 "CtlLayout",因為 Layout 事件是在 .NET Framework 中定義的。
您可以使用 Ildasm.exe (IL 反組譯工具) 這類工具,檢查這些產生的檔案。
不支援使用 Aximp.exe 來產生 ActiveX WebBrowser 控制項 (shdocvw.dll) 的 .NET 組件。
當您在 shdocvw.dll 上執行 Aximp.exe 時,必定會在執行這個工具的目錄中建立另一個名為 shdocvw.dll 的檔案。 如果您將此產生的檔案放在 Documents 目錄中,可能會導致 Windows 檔案總管發生問題。 當計算機重新啟動時,Windows 會在 system32 目錄之前查看 Documents 目錄,以尋找shdocvw.dll複本。 它會使用在 [檔] 中找到的複本,並嘗試載入Managed包裝函式。 Windows 檔案總管無法正常運作,因為它依賴 system32 目錄中shdocvw.dll版本的轉譯引擎。 如果發生此問題,請刪除 Documents 目錄中shdocvw.dll的複本,然後重新啟動電腦。
範例
下列命令會產生 Media Player 控制項 msdxm.ocx
的 MediaPlayer.dll 和 AxMediaPlayer.dll。
aximp c:\systemroot\system32\msdxm.ocx