拡張スクリプトでDynaCall
-
今、スクリプトにてVxEditorなどで使えるDynaCall(WindowsのAPIを取り込む命令)を呼んでみたところ、「DynaCallて何?」みたいな未定義エラーになってしまいました。
Vxでは動くので、DynaCallを呼び出すコードには問題無いと思います。
mEditorのスクリプトにはDLLを読み込む命令は無いのでしょうか?
あったら何かと便利じゃないかと思うのですが……。以下にダメだったスクリプトを書いておきます。
var g_dll;
g_dll = new DynaCall(); // <- ここでエラー
// カッコをはずして g_dll = new DynaCall; としてもエラーでしたg_dll.register("user32.dll", "GetCursorPos", "i=s", "f=s", "r=b");
g_dll.register("user32.dll", "WindowFromPoint", "i=ll", "f=s", "r=h");
g_dll.register("user32.dll", "SetFocus", "i=h", "f=s", "r=l");
g_dll.register("user32.dll", "ScreenToClient", "i=hs", "f=s", "r=l");
g_dll.register("user32.dll", "ClientToScreen", "i=hs", "f=s", "r=l");| Ippei | 返信 -
こんにちは。
たしかVxEditorはDMonkeyScriptだったはずなので、標準でDynaCallが使えるようになってるんでしょうね。。。DMonkeyScriptはユニコードに対応してないのでmEditorへの搭載は断念した次第です。。。
で、mEditorのマクロはただ単純にWSHを使用しているだけですのでそれなりの書き方をすればDynaCallが使えると思います。WSHでDynaCallを使う方法を解説してるサイトも結構あるようです。
参考までにメモっておきます。まず、↓から「dynawrapNt.zip」を入手
http://freenet-homepage.de/gborn/WSHBazaar/WSHDynaCall.htmregsvr32.exe C:\dynawrapNt\dynwrap.dll
でdllを登録すると準備完了。
以下のようなスクリプトでdllの関数を呼び出せます。
-----sample.js-----
var UserWrap = new ActiveXObject("DynamicWrapper");
UserWrap.Register("user32.dll", "MessageBoxA", "i=hssu", "f=s", "r=l");
UserWrap.MessageBoxA(null, "MessageBoxA", "Sample", 3);
----------------------でも、dynawrap.dllが必要になるので少しめんどいですね。。。
| Kuro | 返信 -
疑問が全部氷解しました!
ご丁寧な回答どうもありがとうございます。
DLLを入れるのは確かにチョイと面倒ですが、Vx使う気ねーし、なんやかんやでmEditorを手放せなくなってきてるし、ためしにインストールしてみようと思います。これからも開発がんばってください。
| Ippei | 返信