概要
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("モジモジ文字列♫")