HmSharedOutputPane.dllを利用した、各言語による呼び出しの基本例です。
もしもあなたが「特別に」「64bit版の秀丸」をインストールしているのであれば、
「HmSharedOutputPane.dll」を呼び出すプログラムも64bit版である必要性があります。
コンソールアプリケーションにしろ、フォームアプリケーションにしろ、
総合的には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()); } } }
今回の例では、「文字セットを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は群を抜いているでしょう。
秀丸が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("モジモジ文字列♫")