マクロの起動方法を知るには?No.02567
山紫水明 さん 01/10/31 21:06
 
  こんばんは,山紫水明です。

 あるマクロを実行しているとき,そのマクロ自身が起動されたのか,他のマクロ
から呼び出されて実行されているかを判別する方法はありましたか?
aaa.mac があるとして,aaa.mac 自体を起動したのか,それとも他のマクロで,
execmacro "aaa.mac";
で呼び出されて起動したのかということですが。

       では, (^^)/~

[ ]
RE:02567 マクロの起動方法を知るには?No.02574
TAKA さん 01/11/01 12:07
 
どもっ、お久しぶりです。TAKA です。


> あるマクロを実行しているとき,そのマクロ自身が起動されたのか,他のマクロ
>から呼び出されて実行されているかを判別する方法はありましたか?

完璧に知る方法はありません。
#ないはず

やるなら、非常にダサいですが、以下のような方法しかないと思い
ます。
$Iniに指定するファイルは適当に変えて下さい。

// Parent.mac(ここから)
    $Ini = hidemarudir + "\\red\\HIDERED.INI";
    writeininum $Ini, "Work", "ChildCallFlag", 1;
    execmacro currentmacrodirectory + "\\Child.mac";
    endmacro;
// Parent.mac(ここまで)

// Child.mac(ここから)
    $Ini = hidemarudir + "\\red\\HIDERED.INI";
    #ChildCallFlag = getininum( $Ini, "Work", "ChildCallFlag" );
    writeininum $Ini, "Work", "ChildCallFlag", 0;   // 元に戻す
    if( #ChildCallFlag == 0 )
    { // 単体で起動された可能性が非常に高い
        message "このマクロは単体では利用出来ません";
        goto LEND;
    }
    // ここに本来の処理
    message "親から呼ばれた可能性が高いため、処理を継続します";
LEND:
    endmacro;
// Child.mac(ここまで)

単体で呼び出されたか、親から呼び出されたか位は知る命令があっ
ても良いと思います。
要望として出しませんか?


[ ]
RE:02574 マクロの起動方法を知るには?No.02575
ENCODINGSHIFTJIS さん 01/11/01 13:35
 
無保証な動きですが, result 値 を使えます。

// caller.mac     呼び出す側
execmacro "callee.mac";// 最初は false 固定らしい
left;right;               // この result は呼び出したマクロに渡るようです
execmacro "callee.mac";

// callee.mac    呼ばれる側
if(result) menu "true 呼び出された";
else menu "false 単独起動";

らしい、としか言えません。

[ ]
RE:02575 マクロの起動方法を知るには?No.02577
山紫水明 さん 01/11/01 16:21
 
 ENCODINGSHIFTJISさん,こんにちは。

》title "macroから呼び出しますpara=pp"; execmacro "hogehoge.mac";

 確かにタイトルを見れば呼び出されたことはわかります。
 hogehoge.mac でタイトル内容を取得できたらいいんですけどね。

》田楽サーバーのグローバル変数に起動時間を記入するとか。

 これはやったことありません,いずれ調べてみます。

》無保証な動きですが, result 値 を使えます。

 確かに result 値は保存されているようです。

》// callee.mac    呼ばれる側
》if(result) menu "true 呼び出された";
》else menu "false 単独起動";

 このマクロをリターンキーで終わらせると,次回は「呼び出された」になり,Es
cキーで終わらせると次回起動は「単独起動」になります。

     では, (^^)/~
                                        山紫水明

[ ]
RE:02574 マクロの起動方法を知るには?No.02579
山紫水明 さん 01/11/01 16:46
 
 TAKAさん,こんにちは。

》完璧に知る方法はありません。
》#ないはず

 TAKA さんにこう断言されると安心(^^;

》やるなら、非常にダサいですが、以下のような方法しかないと思い
》ます。

 今のところこれがもっとも確実かなー。

》単体で呼び出されたか、親から呼び出されたか位は知る命令があっ
》ても良いと思います。
》要望として出しませんか?

 考えてみるとマクロ起動用のマクロで呼び出すこともある(というか,むしろそ
の方が私の場合多い)ので,呼び出した親マクロの名前がわからないと,実用的に
はあまり意味がないと思いますが,いかがでしょう。

     では, (^^)/~
                                        山紫水明

[ ]
RE:02577 マクロの起動方法を知るには?No.02582
ENCODINGSHIFTJIS さん 01/11/01 17:42
 
> hogehoge.mac でタイトル内容を取得できたらいいんですけどね。

[01833] で タイトルバー文字列の取得 DLL を動かしたことが
あります。安定度は不明ですが,、短いから gettitle を秀丸機能に
組み込めると思いますが , 引数機能は大拡張みたいですし。

> このマクロをリターンキーで終わらせると,次回は「呼び出された」になり,Es
>cキーで終わらせると次回起動は「単独起動」になります。

ガックリ

[ ]
RE:02579 マクロの起動方法を知るには?No.02583
TAKA さん 01/11/01 18:36
 
TAKA です。
メールで投稿したのですが、20分ほどしても、登録されていない
ようですので、再送信します。タイムラグで登録された場合は、後
に登録された方を削除します。

>》単体で呼び出されたか、親から呼び出されたか位は知る命令があっ
>》ても良いと思います。
>》要望として出しませんか?
>
> 考えてみるとマクロ起動用のマクロで呼び出すこともある(というか,むしろそ
>の方が私の場合多い)ので,呼び出した親マクロの名前がわからないと,実用的に
>はあまり意味がないと思いますが,いかがでしょう。

そうですね。具体的に親マクロの名称をどう使うかは思いつきませ
んが、将来何かに使えそうです。
自分が親ならヌルを返してくれれば、親か子かは判断出来ますね。
currentmacrofilename,currentmacrobasename,currentmacrodirectory
と同様で3種類あればよいのかな?
parentmacrofilename,parentmacrobasename,parentmacrodirectory
なんてのはどうでしょう?

[ ]
RE:02583 マクロの起動方法を知るには?No.02585
山紫水明 さん 01/11/01 20:38
 
 ENCODINGSHIFTJISさん,TAKAさん,こんばんは。

》[01833] で タイトルバー文字列の取得 DLL を動かしたことが
》あります。安定度は不明ですが,、短いから gettitle を秀丸機能に
》組み込めると思いますが , 引数機能は大拡張みたいですし。

 うーん,拝見しましたが,これはどうも私の手に余るようです。

》そうですね。具体的に親マクロの名称をどう使うかは思いつきませ
》んが、将来何かに使えそうです。
》自分が親ならヌルを返してくれれば、親か子かは判断出来ますね。

 思いつきですが,今のところ次のような方法がもっとも簡明のようです。
 クリップボードの利用の仕方によってはうまくいかない場合があるかも知れませ
んが。

//-------test1.mac-------------//
setclipboard basename2;
execmacro "test2.mac";
endmacro;
//------------------------//

//------test2.mac-----------------//
beginclipboardread;
message "親マクロは " + getclipboard;
endmacro;
//--------------------------------//

》parentmacrofilename,parentmacrobasename,parentmacrodirectory
》なんてのはどうでしょう?

 自分で質問しておいて何ですが,さしあたり上記の方法で何とかなりそうなの
で,あまり喫緊のことではないようです。

     では, (^^)/~
                                        山紫水明

[ ]