最終更新日 2024-09-25

外部アプリケーションから秀丸のアウトプット枠への出力
(各言語での簡易な呼び出し例)

概要

HmSharedOutputPane.dllを利用した、各言語による呼び出しの基本例です。

もしもあなたが「特別に」「64bit版の秀丸」をインストールしているのであれば、
「HmSharedOutputPane.dll」を呼び出すプログラムも64bit版である必要性があります。

C#

コンソールアプリケーションにしろ、フォームアプリケーションにしろ、
総合的にはC#が一番簡単に利用できるでしょう。

C#であれば、デフォルト設定の「ANY CPU」でコンパイルしておけば、
秀丸32bit版か秀丸64bit版かを問わないプログラムとなるでしょう。
「ANY CPU」ではうまくいかない場合には、「x86」として明示的にビルドするなどしてください。

下記の例のように「サロゲーペア」などの複雑な文字でもほとんどのシーンでは問題なく秀丸のアウトプット枠へと表示されます。

using System;
using System.Runtime.InteropServices;


class Program
{
    [DllImport(@"C:\usr\hidemaru\hmSharedOutputPane.dll", CharSet=CharSet.Unicode)]
    private extern static void SetSharedMessageW(String msg);

    static void Main(string[] args)
    {
        for (int i = 0; i < 100; i++)
        {
            SetSharedMessageW("𩸽や🌕" + i.ToString());
        }
    }
}

C++

今回の例では、「文字セットをUnicode」として指定したものとします。

#include <windows.h>
#include <string>

using namespace std;

// 秀丸のディレクトリの指定。この場合は、「C:\usr\hidemaru\hidemaru.exe」という位置関係にある。
const wstring strDLLFullPath = LR"(C:\usr\hidemaru\HmSharedOutputPane.dll)";

using PFNSETSHAREDMESSAGEW = void(_stdcall*)(const wchar_t* wszmsg);

HMODULE dll = NULL;
int main(void) {
    dll = LoadLibraryW(strDLLFullPath.data());
    if (dll) {
        PFNSETSHAREDMESSAGEW hmOutPut = (PFNSETSHAREDMESSAGEW)GetProcAddress(dll, "SetSharedMessageW");
        for (int i = 0; i < 100; i++) {
            wstring msg = L"モジモジ文字列♫" + to_wstring(i);
            hmOutPut(msg.data());
        }
    }
}

Python

ソースの手軽さとわかりやすさ、という点において、Pythonは群を抜いているでしょう。
秀丸が32bit editionなら、pythonも32bit版、
秀丸が64bit editionならpythonも64bit edition
である必要があります。

普段利用しているpythonがビットが合致しないならば、
hmPythonを導入するのも良いかもしれません。その場合、hmPythonパッケージ内の「python.exe」は、必ず秀丸とビット数が一致します。

from ctypes import *

dll = cdll.LoadLibrary(r"c:\usr\hidemaru\HmSharedOutputPane.dll")

dll.SetSharedMessageW("モジモジ文字列♫")