• Link to X
  • Link to Facebook
  • Link to Youtube
  • Link to Rss this site
  • 部落格
  • 支援
    • 常見問題集
    • 說明 (HTML)
    • 使用手册 (PDF)
    • 論壇
    • 資源庫
    • 更新/重發註冊金鑰
    • 聯繫我們
  • 關於
    • 關於 Emurasoft
    • 員工簡介
    • 其他產品
    • 獎項
    • 隱私權聲明
    • Emurasoft 客戶中心
  • 🌐 繁體中文
    • English
    • 日本語
    • 한국어
    • Deutsch
    • 简体中文
  • 下載
  • 購買
  • 功能
  • Menu Menu

如何創建 EmEditor 外掛

在 EmEditor 中,您可以用巨集,外部工具以及程式碼片段自動化所有的操作。然而,一些使用者,特別是程式設計師,可能還是喜歡自己編寫外掛程式。自己編寫外掛程式的優點有:

  • 您可以用 Win 32 API 編寫 C++ 。
  • 您可以編寫 GUI (Graphic User Interface,圖形使用者介面) 元素,例如對話方塊。
  • 您可以在 EmEditor 中使用自訂列和視窗,自訂工具列,還有輸出列。

另一方面,外掛的編寫需要使用到 Microsoft Visual C++ ,是一個難度比較大的編程語言。但是,如果您已經習慣使用 C++ 或是 Win32 的話,編寫外掛程式對您來說應該是得心應手的一件事。

Hello World 示例

如果您還沒有安裝Visual C++ 2012, 您可以在下面的鏈接中下載并安裝Visual Studio Express 2012 for Windows Desktop:

  • Visual Studio Express 2012 (Windows 桌面)

您可以下載這個 Hello World!! 示例:

  • Hello World 外掛示例源代碼 (Version 11)

在下載這個檔案之后,請把它提取到一個資料夾,然后用 Visual C++ 打開 Hello.sln 解決方案檔案,您將會在這個 Hello 項目中看到下面的一系列檔案。

File name用途需要編輯嗎?
etlframe.hETL (EmEditor Template Library) 標頭檔否
hello.hHello World 外掛實作檔是
plugin.hEmEditor 外掛標頭檔否
resource.hHello World 外掛資源檔案是
stdafx.h先行編譯標頭檔也许
bitmap1.bmp工具列按鈕點陣圖 (16 colors, 16×16 pixels)是
hello.rcHello World 外掛資源是
hello.cppHello World 外掛實作檔也許
hello.def定義檔否

在這些檔案中,需要編輯的檔案是 hello.h,hello.rc,resource.h,還有 bitmap1.bmp。如果您想要添加標頭檔的話,您也可以修改 hello.cpp 和 stdafx.h。其余的檔案中,plugin.h 和 etlframe.h 是由 Emurasoft 公司提供的標頭檔并不需要修改。 請到下面的鏈接中下載最新版本的標頭檔:

  • plugin.h
  • etlframe.h

另外,hello.def 是定義 EmEditor 可導出功能的檔案,這個檔案也不需要修改。

首先,先不做任何更改,用 Visual C++ 打開這個項目并生成一個檔案。然后您將會看見出現了一個 Hello.dll 檔案。把這個檔案復制到 EmEditor 安裝目錄下的PlugIns (外掛)子資料夾中。通常,檔案的路徑是:C:Program FilesEmEditorPlugIns。接著,打開 EmEditor,您將會看到外掛工具列上出現一個黃色的圓圈按鈕。當您按下這個按鈕, EmEditor 編輯器中就會顯示 Hello World!! 的文字。

接下來,讓我們來更改這個示例,讓這個外掛能打開輸出列并在輸出列上顯示 Hello World!! 的文字。

最重要的函數:OnCommand

在 hello.h 檔案中最最重要的函數就是 OnCommand。當使用者從功能表上選擇這個外掛或點擊這個外掛按鈕時,就需要用到 OnCommand。通過更改這個函數內容,您可以改變這個外掛的行為。在這個例子中,請先刪除已存在的 Editor_InsertW 函數,然后添加下面的 Editor_OutputString 函數。

// Editor_InsertW( hwndView, L"Hello World!!n", true );
Editor_OutputString( hwndView, L"Hello World!!n", FLAG_OPEN_OUTPUT );

上面所示以 Editor_ 開頭的函數被定義在 plug-in.h 檔案中。當您用 EmEditor 打開 hello.h 后,請把游標移到以 Editor_ 開頭的函數,然后按一下 F1 在說明中查看該函數的描述。

在 hello.h 檔案中,還有一個重要的函數,就是 QueryStatus。當 EmEditor 顯示一個菜單或者它需要進行更新來刷新工具欄按鈕時,就會使用到 QueryStatus 函數。當外掛被啟用時,這個函數會還原 TRUE 值。

*pbChecked = TRUE

另外,這個函數還能檢查外掛功能表項目和工具列按鈕是否會在被點選的情況下出現。

OnEvents 函數會在一個檔案被打開,一個文檔被更新,或者其它各種事件發生時被使用。這一系列的事件的具體描述可以在 EmEditor 中的說明 — 外掛參考 — 事件中找到。在這些事件中,我們將改變 EVENT_CHANGE 事件使輸出列上能顯示 “Text Changed!!” 文本。要達到這個效果,我們首先要添加以下3行:

if( nEvent & EVENT_CHANGE ){
    Editor_OutputString( hwndView, L"Text changed!!n", FLAG_OPEN_OUTPUT );
}

修改資源

接下來,我們要打開 hello.rc 檔案。這個檔案定義了各種字串,包括 IDS_MENU_TEXT,這個字串讓您能更改外掛的名稱。讓我們把外掛名字改為 “Hello Test!“。

STRINGTABLE
BEGIN
    IDS_MENU_TEXT "Hello Test!"
    IDS_VERSION "1"
    IDS_SURE_TO_UNINSTALL "Are you sure you want to uninstall this Plug-in?"
END

另外,bitmap1.bmp 可以取代并保存您最喜歡的圖片。在這個例子中,我們會把它改成一個紅色的圓圈。

完成!您可以用Visual C++生成示例項目,您自訂的 Hello.dll 外掛就會被創建。您也可以把這個新的外掛復制到 PlugIns 子資料夾中,打開EmEditor,然后點擊外掛按鈕。”Hello World!!” 文字就會在輸出列中出現了。您也可以嘗試在文字編輯器中輸入新的文字,然后您就會在輸出列上看到您自己的定義的文字了。

自訂外掛備注

在上面的例子中,我們修改了 Hello 示例外掛。然而,當您想要創建一個新的外掛時,以下幾點您需要注意。首先要先準備一個定義檔案,像 hello.def,這個檔案定義了 DLL 檔案必須導出的函數。另外,hello.def 檔案一定要在 Linker – Input 中被標明是 Module Definition File (模組定義檔) 。而且,__stdcall 一定要在 C/C++ – Advanced 中被標明是 Calling Convention (呼叫慣例)。在 C/C++ – Code Generation 中,請選擇 Multithread (多執行緒) 而不是Multithread DLL。為使程式更最佳化,請選擇支持小代碼。這樣,外掛會程式會變小并減少對執行階段程式庫的依賴。

標準外掛原始程式碼

EmEditor中一些外掛的原始程式碼可以在下面的連結中下載:

  • Version 11 HTMLBar, OpenDocuments, Outline, Search, WordCount plug-in source code

您也可以參考下列的外掛原始程式碼:

  • HTMLBar (HTML 工具列)
  • OpenDocuments (打開的文檔)
  • OutlineText (大綱)
  • Search (搜尋)
  • WordCount (計數)

在所有這些原始程式碼中,HTMLBar 是一個非常好的設置自訂工具列的參照。別的外掛也能夠幫助您創建自訂工具列。請參考這些原始程式碼來創建您自己的外掛。

我已經解釋了怎么創建 EmEditor 外掛。我們在這里所舉的例子只是一個非常簡單的例子。但是,您可以創建更加實用,有效,適合您自己的外掛!

← 計數外掛 可編輯的巨集 →

  • 文字編輯
    • 格式化選區
    • 適用於 HTML、CSS、JSON、XML 的語法檢查器
    • 亮顯語法
    • 組態
    • 多選區編輯
      • 相黏垂直模式下的編輯
    • 比較檔案
    • 規則運算式
    • 支持語言伺服器協議
  • 支持大數據檔案
    • 16 TB 大的檔案
    • 大檔案控制器
    • 分割/合併檔案
    • 優化排序
    • 輕巧,單一處理,多執行緒設计
  • 使用者經驗
    • 啟動視窗
    • 量身定制的介面
    • 索引標籤式設計
    • 快速啟動
    • 工作空間記憶體
    • 標記
  • 擴充性
    • AI 輔助寫作
    • 外掛
      • 檔案總管外掛
      • HTML 工具列外掛
      • 打開的文檔外掛
      • 專案外掛
      • 搜尋外掛
      • 程式碼片段外掛
        • 如何使用 Zen Coding
      • 網頁預覽外掛
      • 字詞自動完成外掛
      • 計數外掛
      • 如何創建 EmEditor 外掛
    • 可編輯的巨集
    • 外部工具
    • 大綱
  • 多功能性
    • Windows 11/10 相容性
    • 支持 Unicode
    • 可攜性選項
    • 多個檔案的編碼方式轉換
    • 快速的64位元建置
  • 更多功能
    • Markdown 設計檢視
    • 字元碼值
    • 跳躍
    • CSV 模式
    • 巢狀 CSV
    • 篩選工具列
    • 顯示 HTML/XML 字元參考的工具提示
    • 二進位編輯
    • 括號/引號自動完成
    • 僅編輯選定區域模式
    • 拖放
    • 拼字檢查
    • 編號
    • 剪貼簿記錄
    • 書籤
    • 快速啟動
    • 錯誤處理常式與損毀修復
    • 傳訊 (外掛)
    • 支持萬用字元
    • 固定於清單
    • 儲存至受保護的資料夾
    • 抓取文字
    • 比對標籤醒目顯示功能
    • 尋找和取代
    • 批次取代
    • 狀態視窗
    • 全螢幕檢視
  • 版本紀錄
    • Version 26.2 新增功能
    • Version 26.1 新增功能
    • Version 26.0 新增功能
    • Version 25.4 新增功能
    • Version 25.3 新增功能
    • Version 25.2 新增功能
    • Version 25.1 新增功能
    • Version 25.0 新增功能
    • Version 24.5 新增功能
    • Version 24.4 新增功能
    • Version 24.3 新增功能
    • Version 24.2 新增功能
    • Version 24.1 新增功能
    • Version 24.0 新增功能
    • Version 23.1 新增功能
    • Version 23.0 新增功能
    • Version 22.5 新增功能
    • Version 22.4 新增功能
    • Version 22.3 新增功能
    • Version 22.2 新增功能
    • Version 22.1 新增功能
    • Version 22.0 新增功能
    • Version 21.9 新增功能
    • Version 21.8 新增功能
    • Version 21.7 新增功能
    • Version 21.6 新增功能
    • Version 21.5 新增功能
    • Version 21.4 新增功能
    • Version 21.3 新增功能
    • Version 21.2 新增功能
    • Version 21.1 新增功能
    • Version 21.0 新增功能
    • Version 20.9 新增功能
    • Version 20.8 新增功能
    • Version 20.7 新增功能
    • Version 20.6 新增功能
    • Version 20.5 新增功能
    • Version 20.4 新增功能
    • Version 20.3 新增功能
    • Version 20.2 新增功能
    • Version 20.1 新增功能
    • Version 20.0 新增功能
    • Version 19.9 新增功能
    • Version 19.8 新增功能
    • Version 19.7 新增功能
    • Version 19.6 新增功能
    • Version 19.5 新增功能
    • Version 19.4 新增功能
    • Version 19.3 新增功能
    • Version 19.2 新增功能
    • Version 19.1 新增功能
    • Version 19.0 新增功能
    • Version 18.9 新增功能
    • Version 18.8 新增功能
    • Version 18.7 新增功能
    • Version 18.6 新增功能
    • Version 18.5 新增功能
    • Version 18.4 新增功能
    • Version 18.3 新增功能
    • Version 18.2 新增功能
    • Version 18.1 新增功能
    • Version 18.0 新增功能
    • Version 17.9 新增功能
    • Version 17.8 新增功能
    • Version 17.7 新增功能
    • Version 17.6 新增功能
    • Version 17.5 新增功能
    • Version 17.4 新增功能
    • Version 17.3 新增功能
    • Version 17.2 新增功能
    • Version 17.1 新增功能
    • Version 17.0 新增功能
    • Version 16.9 新增功能
    • Version 16.8 新增功能
    • Version 16.7 新增功能
    • Version 16.6 新增功能
    • Version 16.5 新增功能
    • Version 16.4 新增功能
    • Version 16.3 新增功能
    • Version 16.2 新增功能
    • Version 16.1 新增功能
    • Version 16.0 新增功能
    • Version 15.9 新增功能
    • Version 15.8 新增功能
    • Version 15.7 新增功能
    • Version 15.6 新增功能
    • Version 15.5 新增功能
    • Version 15.4 新增功能
    • Version 15.3 新增功能
    • Version 15.2 新增功能
    • Version 15.1 新增功能
    • Version 15.0 新增功能
    • Version 14.9 新增功能
    • Version 14.8 新增功能
    • Version 14.7 新增功能
    • Version 14.6 新增功能
    • Version 14 新增功能
    • Version 13 新增功能
    • Version 12 新增功能
    • Version 11 新增功能
    • Version10 新增功能
    • Version 9 新增功能
    • Version 8 新增功能
    • Version 7 新增功能
    • Version 6 新增功能
    • Version 5 新增功能
    • Version 4 新增功能
    • 基本功能
  • EmEditor 免費版
  • 比較安裝版、可攜版與 Store 版

現在就下載并體驗“世界上最快的文字編輯器”!(來源:ZDNet)

Download Download 免費下載

Copyright © 1995-2026 by Emurasoft, Inc.
下載 | 購買 | 功能 | 部落格 | 支持 | 關于我們 | 隱私權聲明
English | 日本語 | Deutsch | 한국어 | 简体中文

Scroll to top Scroll to top Scroll to top