超基本 DLLがロードされていないのみdllfuNo.10413
hutec さん 24/06/05 11:34
 
いつもお世話になっております。
秀丸メール ver7.32 beta1 32bit
秀丸エディタ ver 9.34 32bit

時々、標題のメッセージが出て、それ以降debugが進められなくなる事があります。
このメッセージが出始めると、しばらくは連続で出ます。何かのタイミングで、また
出なくなります。たまたま、定期受信以降は出なくなった事もあります。今回、送受
信を行いましたが、現在は改善されていません。再起動すると改善する事もあります
が、またなってしまいます。
なにかヒントはございますか?


下記はサンプルのソースです。
loaddll "tkinfo.dll";
$text = dllfuncstr( "LoadStringFromFile", dllfuncstr("HomeDir") + "AdrBook.t
xt" );
message "アドレス帳のサイズ = " + str(strlen($text));
--------------------
DLLがロードされていないのみdllfunc関数が使われました
エラー箇所の内容(変換した内容):
$text = dllfuncstr( "LoadStringFromFile", dllfuncstr("HomeDir") + "AdrBook.t
xt" );
message "アドレス帳のサイズ = " + str(strlen($text));

宜しくお願いします

[ ]
RE:10413 超基本 DLLがロードされていないNo.10414
hutec さん 24/06/05 11:35
 
秀丸メールマクロです。

[ ]
RE:10414 超基本 DLLがロードされていないNo.10416
秀まるお2 さん 24/06/05 12:05
 
 dllfunc呼び出しの直前でloaddllしてるのであれば、そのエラーが出るのはちょっ
と考えがたいです。

 お勧めの作戦として、loaddllはマクロの先頭に移動してほしいです。さらにエ
ラーチェックも追加してほしいです。以下のような感じです。

    loaddll "tkinfo.dll";
    if( result == 0 ) {
        message "tkinfo.dllのロードに失敗しました。";
        endmacro;
    }

 さらに、もしもマクロの中でfreedllを使ってる箇所があるなら、それは削除かコ
メントアウトしてほしいです。

 それでも起きるなら、ちょっと理解困難な状況になるので、すみませんがエラーの
起きるマクロを添付ファイルにしてメールで送って欲しいです。送り先は"maruo@mit
ene.or.jp"になります。

[ ]
RE:10416 超基本 DLLがロードされていないNo.10418
hutec さん 24/06/05 15:14
 
秀丸先生さま

いつもお世話になっております。
ご指示のとおり、先頭に配置し、エラーチェックを入れたところ、
エラーがでました。
freedllは使用していません。

秀丸メールを終了し、再起動してからマクロを実行すると、
エラーが無くなります。
なにか、秀丸メールを初期化する様な1行はありますか?

[ ]
RE:10418 超基本 DLLがロードされていないNo.10419
秀まるお2 さん 24/06/05 16:18
 
> ご指示のとおり、先頭に配置し、エラーチェックを入れたところ、
> エラーがでました。

 「tkinfo.dllのロードに失敗しました。」のメッセージが表示されたのであれば、
そもそもloaddllに失敗してるのが原因になるんだと思いますが、その失敗する原因
は、すみませんが調べる手段が無いです。

 とりあえず、loaddllでロードするdllのファイル名をフルパスで指定してみてはど
うでしょうか。

    loaddll "C:\\Program files (x86)\\HidemaruMail\\tkinfo.dll";

 みたいにする作戦です。

 それでもダメでしたら、あと他に何か試すとしたら、秀丸メールを64bit版にして
どうか試してみるくらいしか無いかもしれません。

 64bit版なら、

    loaddll "C:\\Program files\\HidemaruMail\\tkinfo.dll";

 にしないとダメです。

 他には・・・・、loaddllに失敗した原因を特定できる手段(WindowsのAPIからの
エラーコードを分かるようにする手段、GetLastErrorってAPI呼び出しした結果を得
る手段)を次のβ版で用意してみるので、それでテストしていただく作戦はどうでし
ょうか。

 あと、すみませんがこの話題(秀丸メールのマクロの話)は秀丸メール用の8番会
議室の方にお願いしたいです。以後コメントは8番会議室の方にお願いします。

[ ]
RE:10418 超基本 DLLがロードされていないNo.10420
Iranoan さん 24/06/05 18:01
 
hutec さんこんにちは Iranoan です
> ご指示のとおり、先頭に配置し、エラーチェックを入れたところ、
> エラーがでました。
> freedllは使用していません。
これはやはりロードに失敗しているのでしょうね
次の要領秀丸メールのインストール先を調べて、フルパスでロードすれば良いと思い
ます
//----------------------------------------------------------------------
openreg "CURRENTUSER","Software\\Hidemaruo\\TuruKame\\Config";
if(result){
    loaddll getregstr("TuruKameDir") + "tkinfo.dll";
    if( result == 0 ) {
        message "tkinfo.dllのロードに失敗しました";
        closereg;
        endmacro;
    }
}
else {
    message "秀丸メールをインストールしてください";
    endmacro;
}
closereg;
//----------------------------------------------------------------------

[ ]
RE:10420 超基本 DLLがロードされていないNo.10421
秀まるお2 さん 24/06/05 18:40
 
 一応、tkinfo.dllのロードはパス指定しないで"tkinfo.dll"のみ指定で大丈夫なは
ずなんですが、とりあえずそれが本当かどうか確認いただくために、"C:\\Program f
iles (x86)...."のような指定でどうかテストお願いした所です。

 今回はとりあえず僕のやり方でやってみてほしいです。

 あと、続きの話を8番会議室に書き込んだので、そっちの方を参照お願いします。

[ ]