マクロからCOMオブジェクトまたは.NETアセNo.18552
VBASPCoder さん 04/12/17 08:54
 
一応loaddllやdllfuncを使ってやってみようと試みたのですが、今のところできる様
子はありません。DLLは.NETのクラスライブラリをCOMオブジェクトして登録して呼び
出そうとしています。以下のようにやってみました。


loaddll "HidemaruDLL.dll";

if(!result)
{
 message "Failed to load DLL";
 endmacro;
}

#a = dllfunc("MyForm.ShowDialog", "");

freedll;

エラーメッセージは「Function not found Error at dllfunc」となります。これっ
て根本的に無理な話なんでしょうか?

[ ]
RE:18552 マクロからCOMオブジェクトまたNo.18555
秀丸担当 さん 04/12/17 11:11
 

>一応loaddllやdllfuncを使ってやってみようと試みたのですが、今のところできる様
>子はありません。DLLは.NETのクラスライブラリをCOMオブジェクトして登録して呼び
>出そうとしています。以下のようにやってみました。

dllfuncでは、COMオブジェクトは呼び出すことはできません。
DLLは秀丸専用に作る必要があります。
一般的なDLLは、使えるものもあるかもしれませんがほとんど使えないと思いま
す。
詳しくは、マクロヘルプのDLL呼び出し機能の説明を参照してください。

COMオブジェクトは汎用的に呼び出しやすいので、将来的に対応できる余地はあ
るかもしれません。

[ ]
RE:18552 マクロからCOMオブジェクトまたNo.18556
ENCODINGSHIFTJIS さん 04/12/17 12:35
 
.NET の DLL は COM とも普通のDLLとも違います。拡張子は同じだが
(Javaとの相互ブリッジはできます)

[ ]
RE:18556 マクロからCOMオブジェクトまたNo.18557
VBASPCoder さん 04/12/18 06:16
 
>.NET の DLL は COM とも普通のDLLとも違います。拡張子は同じだが
>(Javaとの相互ブリッジはできます)
違うのは知っていますが・・・.NETのアセンブリはCOMとして扱うことは可能です。
つまり、秀丸がCOMを呼び出すことができさえすれば、たいていのDLLは呼び出せるん
でしょうけどね。だめみたいなのであきらめます。

[ ]
RE:18555 マクロからCOMオブジェクトまたNo.18558
VBASPCoder さん 04/12/18 06:18
 
>COMオブジェクトは汎用的に呼び出しやすいので、将来的に対応できる余地はあ
>るかもしれません。

そうですか、是非実現してほしいですね。アドインなども作れるようになったら秀丸
ももっと楽しいエディタになるでしょうね。

[ ]