最小化起動時の IsIcon の挙動No.07388
かかし さん 02/05/27 16:57
 
#久しぶりの投稿になります。

さて、掲題の件ですが、次のようなマクロを使って起動時に
メールを受信するようにしました。

起動時では、最小化しているので、メールの受信状態が分からないため、
RestoreWindowで元のサイズに戻そうとしているのですが、
IsIconの結果は"0"となります。

IsIconの仕様勘違いなのでしょうか?
なにか、情報等ありましたら、よろしくお願いします。

---受信.mac
// 受信するだけ。
// 起動時にコールする。
//
loaddll "tkinfo.dll";
if( !result ) {
message "このマクロは鶴亀メールでしか実行できません。(またはtkinfo.dllが
ロードできないエラーです)";
endmacro;
}
if( !dllfunc("IsTuruKame") ) {
message "このマクロは鶴亀メールでしか実行できません。";
endmacro;
}
if( !dllfunc("IsTuruKameMain") ) {
message "このマクロは鶴亀メール本体ウィンドウで実行してください。";
endmacro;
}
#n = dllfunc("IsIcon");
message str(#n);
if(#n){
#n = dllfunc("RestoreWindow");
}
#n = dllfunc("SelectFolder","XXX", "");
#result = dllfunc("Receive");
endmacro;
---


[ ]
RE:07388 最小化起動時の IsIcon の挙動No.07392
秀まるお2 さん 02/05/27 17:51
 
 そちらの状況が分からないので、すみませんがIsIconの結果が0になる状況の再現
方法を教えてください。

 例えば、
 − 常駐鶴亀がONかOFFか。
 − 鶴亀メールの起動方法はどうやっているのか。
 − マクロはどうやって起動しているのか。起動時のコマンドライン指定で
   /xオプションを指定しているのか?

 例えばですけど、常駐鶴亀OFFで、デスクトップに鶴亀メール起動用のショートカ
ットアイコンがあって、そのショートカットアイコンのプロパティで、

 − 起動時のオプションで「/xマクロ名」を指定し、
 − ウィンドウを最小化で起動するよう指定。

 とした場合、IsIconの返り値は1となることをこちらで確認しました。既に鶴亀
メールが起動している状態でさらに多重起動しようとした場合には、アイコンとなっ
ている鶴亀メールが表に出てきてからマクロ実行されるようで、この場合はたしかに
"0"となりますが、ウィンドウが復元されている状態なので正しい動作だと思います。

[ ]
RE:07388 最小化起動時の IsIcon の挙動No.07394
ひろ さん 02/05/27 17:55
 
 かかしさん今日は、ひろです。
> 起動時では、最小化しているので、メールの受信状態が分からないため、
> RestoreWindowで元のサイズに戻そうとしているのですが、
> IsIconの結果は"0"となります。
 起動時に最小化しているのでなく、常駐化しているということはありませ
んか? それを含めるなら、
if((dllfunc("IsTrayIcon") == 1 || dllfunc("IsIcon") == 1)
といった判定になると思います。

 あとこれ以上この話題が続くようでしたら、マクロの話題ですから、
turukame.2 に移動しませんか?

[ ]
RE:07392 最小化起動時の IsIcon の挙動No.07416
かかし さん 02/05/28 10:47
 
秀まるおさん、こんにちは。

いろいろ言葉足らずで申し訳ありませんでした。

#再現の方法、バージョン、など・・・。

結論から申しますと、私が、「常駐=最小化」と勘違いしていたことが
ひろさんのコメントで判明しました。

鶴亀メールを「!」で起動していたため、当然IsIconは「0」となっておりました。

早急のコメント、ありがとうございました。

[ ]
RE:07394 最小化起動時の IsIcon の挙動No.07417
かかし さん 02/05/28 10:53
 
かかしです。

ひろさん、こんにちは。

>> 起動時では、最小化しているので、メールの受信状態が分からないため、
>> RestoreWindowで元のサイズに戻そうとしているのですが、
>> IsIconの結果は"0"となります。
> 起動時に最小化しているのでなく、常駐化しているということはありませ
>んか? それを含めるなら、
>if((dllfunc("IsTrayIcon") == 1 || dllfunc("IsIcon") == 1)
>といった判定になると思います。

早急の回答、ありがとうございました。

常駐と最小化の定義を勘違いしておりました。
上述の方法で思っていた処理ができそうです。

> あとこれ以上この話題が続くようでしたら、マクロの話題ですから、
>turukame.2 に移動しませんか?

とりあえず、本件はクローズということで・・・。

PS
鶴亀メールを使い始めて半年、初めてマクロを組みました。
マクロ作りにはまると仕事に支障をきたしそう・・・。

[ ]