[質問]IsTuruKameMainについてNo.08214
プックン さん 02/12/10 13:32
 
[質問]IsTuruKameMainについて

アドレス帳がアクティブになっているときに、IsTuruKameMainが実行されると
鶴亀MainWindowでないけど、戻り値が"1"となっています。
これは仕様でしょうか?。

"受信が一段落したとき"に下記マクロを設定しておき、
定期的な受信を設定します。
一定時間ごとに、下記マクロが実行されるようにしておいて、
アドレス帳をアクティブにしておいて、IsTuruKameMainの戻り値をみてみると
戻り値が"1"になっています。
 ・鶴亀メール本体ウィンドウ上の場合は1、
 ・そうでない場合は0


//sample.mac

call Turukame $info;

//本体Window or エディタなのかを取得
if( !dllfunc( "IsTuruKameMain") ) {//editorのとき
#editor_h = hidemaruhandle( 0 );
message "本体以外から起動しました。";
}
else{
message "本体から起動しました。";
}
//秀丸のハンドルの取得

LEND:
END:
freedll;
endmacro;

Turukame:   //鶴亀メール起動チェック&DLLロード
//第一引数: 文字列型,メッセージ表示を行う文字列情報
$$info = $$1;
//鶴亀インストールフォルダを取得する。
//戻り値 最後に"\"付きのフォルダ情報
call Get_ins $$info;
$$TuruKameDir = $$return ;

    // DLL を Load する
    loaddll $$TuruKameDir + "tkinfo.dll";
    if( !result ) {
    message "DLLロードに失敗\n"+$$info;
    endmacro;
    }
return ;

Get_ins:
//鶴亀インストールディレクトリの取得
//戻り値 最後に"\"付きのフォルダ情報
//第一引数: 文字列型,メッセージ表示を行う文字列情報
//引数渡し
$$info = $$1;

    openreg "CURRENTUSER","Software\\Hidemaruo\\TuruKame\\Config";
    if( !result ) {
    message "鶴亀がインストールされてないです (^^;)\n"+$$info;
    closereg ;
    goto LEND;
    }

$$TuruKameDir = getregstr( "TuruKameDir" );
    closereg ;
return $$TuruKameDir;
//sample.mac 終わり

[ ]
RE:08214 [質問]IsTuruKameMainについてNo.08215
プックン さん 02/12/10 13:53
 
動作環境をかいていませんでした。
OS:
    Windows NT 4.0
鶴亀
    Ver2.23

[ ]
RE:08214 [質問]IsTuruKameMainについてNo.08219
秀まるお さん 02/12/10 15:32
 
 仕様です。

 IsTuruKameMain関数は、現在アクティブなウィンドウが何かを返す関数じゃな
くて、マクロがどこのウィンドウ上で実行されてるかを返す関数です。受信後の
自動起動マクロは必ず鶴亀本体ウィンドウ上で実行されるので、IsTuruKameMain
関数は常に1を返すはずです。

 アクティブウィンドウが何か知りたいというのなら、WindowsAPIの
GetForegroundWindowという関数を呼ぶ必要があります。tkinfo.dllにはそれを
呼ぶ関数は用意されてません。しいて必要なら

 Bypass_GetForegroundWindow

 とか、

 Bypass_GetWindowText
 Bypass_GetClassName
 Bypass_GetWindowThreadId
 Bypass_GetWindowProcessId

 等の関数を追加してもいいです。(上記関数を組み合わせれば、果たしてアド
レス帳がアクティブなのかどうか調べることは出来ます。ほとんどWindowsAPIの
世界ですけど)

[ ]
RE:08219 [質問]IsTuruKameMainについてNo.08222
プックン さん 02/12/11 01:28
 
> 仕様です。

了解しました。

現在作成中のマクロで、一度検討してみてアクティブウィンドウが本当に必要なのか
どうかを見極めてから、連絡させていただきます。
ただでさえいそがしい、秀まるお様にお手数をおかけするのも大変もうしわけない
ので。

では。

[ ]
RE:08222 [質問]IsTuruKameMainについてNo.08223
秀まるお さん 02/12/11 14:00
 
 WindowsのAPIを呼ぶためのバイパス用関数を用意する程度なら、大した手間は
かからないです。

 tkinfo.dllよりは、別にそういうバイパス用DLLを用意した方がいいかもしれ
ませんけど。

[ ]
RE:08222 [質問]IsTuruKameMainについてNo.08237
プックン さん 02/12/18 00:44
 
>現在作成中のマクロで、一度検討してみてアクティブウィンドウが本当に必要なのか
>どうかを見極めてから、連絡させていただきます。

マクロを検討してみました。
結論としては、アクティブウィンドウの取得は不要となりました。

マクロを実行していて下記メッセージがでることがありました。
"TKINFO.DLL:エディタ上で実行できないTKinfo.dll呼び出しが行われました。"
このメッセージがでている原因が、"アドレス帳がアクティブになっていて鶴亀本体
がアクティブになっていないと発生する"という勘違いをしていました。
わたしの書いていたマクロにミスがあったために発生してエラーでした。
お騒がせしてもうしわけございませんでした。

[ ]