• Link to X Link to X Link to X
  • Link to Facebook Link to Facebook Link to Facebook
  • Link to Youtube Link to Youtube Link to Youtube
  • Link to Reddit Link to Reddit Link to Reddit
  • Link to Rss Link to Rss Link to Rss
  • ブログ
  • サポート
    • FAQ
    • ヘルプ (HTML)
    • マニュアル (PDF)
    • フォーラム (閲覧専用)
    • ライブラリ (GitHub)
    • 登録キーを再送
    • お問い合わせ
  • 会社案内
    • エムソフトについて
    • スタッフ紹介
    • その他の製品
    • 受賞賞一覧
    • プライバシー ポリシー
    • エムソフト カスタマー センターを表示
  • 🌐 日本語
    • English
    • 한국어
    • Deutsch
    • 简体中文
    • 繁體中文
  • ダウンロード
  • 購入方法
  • 特長
  • Menu Menu

EmEditor プラグインの作成方法

EmEditor では、マクロ、外部ツール、スニペットといった方法で、ほとんど操作を自動化することが可能です。しかし、それでも特定用途のためにプラグインを開発したいという要求があるのも事実です。プラグインの長所には、次のことが挙げられます。

  • Win32 API を利用でき、C++ で記述できる。
  • ダイアログなどの GUI を自由に記述できる。
  • カスタム バー、カスタム ツール バー、アウトプット バーなどを使用することができる。

逆に、短所としては、基本的には Microsoft Visual C++ が必要で、作成が難しい、ということになります。しかし、C++ や Win32 に慣れている方にとっては、逆にプラグインの方が作りやすいかもしれません。

Hello World サンプル

Visual C++ 2012 製品版をお持ちでなければ、無料で使用できる Visual C++ 2012 Express でも構いません。Visual C++ 2012 Express は、以下からダウンロードしていただけます。(Visual C++ 2010 でも使用可能です。)

  • Visual Studio Express 2012 for Windows Desktop

EmEditor ホーム ページのライブラリには、「Hello World!!」サンプルが公開されています。以下からダウンロードしていただけます。

  • Hello World プラグイン サンプル ソース コード (Version 11)

これをダウンロードして、適当なフォルダに解凍し、Visual C++ から Hello.sln ソリューションを開くと、次のファイルが Hello プロジェクトに含まれていることがわかります。

ファイル名用途編集必要
etlframe.hETL (EmEditor Template Library) のヘッダ×
hello.hHello World プラグインの実装ファイル○
plugin.hEmEditor プラグインのヘッダ×
resource.hHello World プラグインのリソース用ファイル○
stdafx.hプリコンパイル用ヘッダ△
bitmap1.bmpツール バーのボタンのビットマップ (16色、16×16ピクセル)○
hello.rcHello World プラグインのリソース○
hello.cppHello World プラグインの実装ファイル△
hello.def定義ファイル×

これらのうち、実際に変更が必要なファイルは、hello.h、hello.rc、resource.h、bitmap1.bmp の 4 個のみです。hello.cpp や stdafx.h は、さらに大きなプラグインを開発する場合に、インクルードしたいヘッダを増やしたいときなどに変更することがあります。逆に、plugin.h、etlframe.h のファイルは、エムソフトが提供しているヘッダ ファイルであり、変更を加えてはいけません。また、これらのヘッダ ファイルの最新版は、

  • plugin.h
  • etlframe.h

よりダウンロードしていただけます。hello.def は、EmEditor 本体が必要とする関数のエクスポートを定義しているファイルで変更の必要はありません。

VC Solution ja
VC Solution ja

まずは、プロジェクトを開いたら、何も変更せずにビルドしてみてください。すると、Hello.dll というファイルができあがります。このファイルを EmEditor のインストール フォルダの PlugIns サブ フォルダにコピーします。通常は、C:Program FilesEmEditorPlugIns フォルダに、この Hello.dll をコピーしましょう。そして、EmEditor を実行すると、プラグイン ツール バーに黄色い丸の付いたボタンができていることがわかります。そのボタンをクリックすると、テキストエディタに「Hello World!!」と表示されます。

次に、このサンプルを少しだけ書き換え、アウトプット バーを開いて、「Hello World!!」という文字列をアウトプット バーに出力するプラグインを作成します。

最も重要な関数 OnCommand

hello.h ファイルの中で最も重要な関数が、OnCommand になります。これは、ユーザーがプラグインをメニューまたはツール バーのボタンを押すことにより選択したときに呼び出されます。この関数の中を書き換えることにより、プラグインの動作を自由に変更することが可能です。このサンプルでは、まず、既存の Editor_InsertW 関数を削除してから、以下の Editor_OutputString 関数を追加します。

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

上記の Editor_ で始まる関数は、plugin.h で定義されています。hello.h を EmEditor で開いた後、これらの Editor_ で始まる関数の上にカーソルを置いてから F1 を押すと、ヘルプでこれらの関数の説明を表示することができます。

hello.h ファイルの中で次に気を付けたい関数は、QueryStatus です。QueryStatus 関数は、EmEditor がメニューを表示するときや、ツール バーの更新のためにアイドル時に頻繁に呼ばれます。プラグインが実行可能なときには、TRUE を返すようにします。また、 *pbChecked = TRUE とすると、メニューのこのプラグインの項目がチェックされた状態となり、ツール バーのボタンは押された状態となります。

OnEvents() では、ファイルが開かれた直後、文書が変わった時、などさまざまなイベントが発生したときに呼び出されます。イベントの一覧は、ヘルプの「プラグイン リファレンス」-「イベント」に書かれていますので、ご参照ください。この中で、代表的なイベントである 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 World!” という名前が定義されていますが、これを好きな名前に置き換えてみましょう。ここでは、”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++ またはペイントで好きなイメージに変更して保存します。ここでは、赤い丸に変更して保存します。

以上ですべての変更は完了です。Visual C++ で、サンプル プロジェクトをビルドすると、あなただけのプラグイン Hello.dll が作成できます。作成できたプラグインは、前回と同様、EmEditor のインストール フォルダの PlugIns サブ フォルダにコピーして、EmEditor を実行し、プラグインのボタンを押してみます。アウトプット バーに「Hello World!!」と表示されることがわかります。また、EmEditor に何か文字を入力してみます。すると、アウトプット バーに「Text changed!!」と表示されることがわかります。

Hello plug-in ja
Hello plug-in ja

プロジェクト設定の注意点

ここでは、Hello サンプルを変更するという形でプラグインを作成してみました。もしプロジェクトを新規に最初から作成する場合には、注意することがあります。それは、hello.def と同じ定義ファイルを用意するということです。定義ファイルには、DLL ファイルがエクスポートしなけばならない関数が定義されています。また、Visual C++ のプロジェクトの設定で、リンカーの入力で、モジュール定義ファイルに hello.def を指定しておくことが必要です。さらに、C/C++ の詳細設定で、呼び出し規約として __stdcall を指定しておくことが必要です。C/C++ のコード生成では、ランタイム ライブラリとして「マルチスレッド DLL」ではなく「マルチ スレッド」を選択しておきます。また、最適化の設定では、「サイズの最小化」を選択します。すると、プラグインができるだけ小さくなり、DLL の他のランタイム ライブラリへの依存も減らすことができます。

今回は、単純な機能しか作成しませんでしたが、カスタム バー、カスタム ツール バー、アウトプット バーなどを使用して、より高度なプラグインを作成することも可能です。

標準プラグインのソース

EmEditor で標準に付属するプラグインの一部は、以下のリンクから公開されています。

  • Version 11 HTMLBar, OpenDocuments, Outline, Search, WordCount プラグイン ソース コード

以下が公開されているプラグインの一覧です。

  • HTML バー (HTMLBar)
  • 開いている文書 (OpenDocuments)
  • アウトライン (OutlineText)
  • 検索 (Search)
  • 単語数 (WordCount)

これらのうち、HTML バーは、カスタム ツール バーを作るのに参考になります。また他のプラグインは、カスタム バーを作るのに参考になります。これらのプラグインを参考にして、自分にあったより良いプラグインを開発してみると面白いでしょう。

以上で、EmEditor プラグインの作り方を説明してきました。今回は、単純な機能しか作成できませんでしたが、どのような機能のプラグインを作成するかは、あなたのアイディア次第です。是非あなただけの使いやすいプラグインを作成して、作業効率のアップにお役立てください。

← 単語数プラグイン スクリプト言語で記述可能なマクロ →

  • テキスト編集
    • EditorConfig のサポート
    • HTML、CSS、JSON、XML の構文チェッカー
    • あいまい一致の検索
    • 言語サーバープロトコルのサポート
    • 選択範囲のフォーマット
    • 見やすい色分け表示
    • 設定
    • 複数選択編集
      • 箱型編集の使い方 (1)
      • 箱型編集の使い方 (2)
    • 文書の比較
    • 正規表現
  • 強力な CSV ツール
    • CSV の結合
    • CSVコンバーター
    • オートフィル
    • カスタム CSV 形式を定義する
    • ピボットテーブル
    • フラッシュ フィル
    • ヘッダーを凍結する
    • 並べ替え機能
    • 列の管理
    • 列の結合/分割
    • 列を抽出
    • 行/列を挿入する
    • 行を結合する
    • 転置
    • 連番の挿入
    • 重複行の削除
    • 頻出文字列を抽出
  • 巨大ファイルに対応
    • 16 TB までのファイル
    • 巨大ファイル コントローラー
    • ファイルの分割と結合
    • 最適化された並べ替え
    • 軽いマルチ スレッドのデザイン
  • ユーザー エクスペリエンス
    • カスタマイズ可能なツール バー
    • スタート ウィンドウ
    • ドキュメント グループ
    • 分割ウィンドウ
    • 国際言語とロケールのサポート
    • カスタマイズ可能なインターフェイス
    • タブ デザイン
    • クイック起動
    • ワークスペースの記憶
    • マーカー
  • 拡張性
    • AIによる支援執筆
    • [AI] ツール バー
    • AIとチャット
    • プラグイン
      • コミット リスト
      • エクスプローラ プラグイン
      • HTML バー プラグイン
      • 開いている文書プラグイン
      • プロジェクト プラグイン
      • 検索プラグイン
      • スニペット プラグイン
        • スニペットの使い方 (1)
        • スニペットの使い方 (2)
        • Zen Coding の使い方
      • Web プレビュー プラグイン
      • 単語補完プラグイン
      • 単語数プラグイン
      • EmEditor プラグインの作成方法
    • スクリプト言語で記述可能なマクロ
    • 外部ツール
    • アウトライン
  • 汎用性
    • Windows 11/10 サポート
    • Unicode に対応
    • ポータブル版
    • 複数ファイルのエンコードの変換
    • 高速 64 ビット版
  • さらに多くの機能
    • Base64
    • HTML文字参照
    • Markdown エディター
    • Universal Character Name
    • ジャンプ
    • パーセント エンコーディング
    • 半角/全角変換
    • 大文字/小文字に変換
    • 文字コード値
    • 検索と置換のための数値範囲表現
    • 顧客サポート
    • 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 の新機能
    • Version 10 の新機能
    • Version 9 の新機能
    • Version 8 の新機能
    • Version 7 の新機能
    • Version 6 の新機能
    • Version 5 の新機能
    • Version 4 の新機能
    • EmEditor の基本機能
  • EmEditor Free
  • デスクトップ インストーラー (MSI)、デスクトップ ポータブル版、旧ストア アプリ (UWP) の比較

“世界で最も速いテキストエディター” を今すぐダウンロード、体験しましょう! (出典: ZDNet)

Download Download 無料ダウンロード

Copyright © 1995-2026 by Emurasoft, Inc.
ダウンロード | 購入方法 | 特長 | ブログ | サポート | 会社案内 | プライバシー ポリシー
English | Deutsch | 한국어 | 简体中文 | 繁體中文

Scroll to top Scroll to top Scroll to top