MailType関数についてNo.05018
しん さん 02/04/01 11:37
 
しんです。

鶴亀 Version 1.75で、
受信のメッセージの状態を変えたいため、
現在の作業中の状態を知りたく、
MailType関数を、「受信が一段落した時」のマクロで使おうと考えてます。

新規メールをエディタで開いているとき(アクティブなとき)に
受信すると、MailType関数で「0」が返ってくるのを期待しているのですが、
「3(受信したメールの場合)」が返ってきてしまいます。

かならず「3」が返ってくるわけでではなく、
(条件が不明なのですが)
1度だけ「0」が返ってきた事がありました。

MailType関数は、どのような条件で
返す値を決めているのでしょうか?

また、私が期待する、新規メールをエディタで開いているときに、
「0」を返すようにしたい場合はどのようにすればいいのでしょうか?
#もちろん返信メールを開いている場合には、「1」を返して欲しいです。

よろしくお願いします。

テストしたマクロの一部

loaddll "TKInfo.dll";

#n = dllfunc("RecvMailCount");
#mtype = dllfunc("MailType");
message str(#mtype);

 :
 :
 :
 

[ ]
RE:05018 MailType関数についてNo.05019
tnobu2 さん 02/04/01 13:21
 
>新規メールをエディタで開いているとき(アクティブなとき)に
>受信すると、MailType関数で「0」が返ってくるのを期待しているのですが、
>「3(受信したメールの場合)」が返ってきてしまいます。
>
>かならず「3」が返ってくるわけでではなく、
>(条件が不明なのですが)
>1度だけ「0」が返ってきた事がありました。
>
>MailType関数は、どのような条件で
>返す値を決めているのでしょうか?

どのウィンドウで実行されたマクロかによると思います。

受信時に実行されるマクロは、鶴亀本体で実行されますが、その時本体側で
選択されているメールが「受信したメール」であれば「3」が返ってくる
のではないでしょうか?

[ ]
RE:05018 MailType関数についてNo.05020
y.iida さん 02/04/01 13:26
 
>現在の作業中の状態を知りたく、
>MailType関数を、「受信が一段落した時」のマクロで使おうと考えてます。
>
>新規メールをエディタで開いているとき(アクティブなとき)に
>受信すると、MailType関数で「0」が返ってくるのを期待しているのですが、
>「3(受信したメールの場合)」が返ってきてしまいます。

受信時のマクロが実行されるのは、
鶴亀メール本体ウィンドウ中のメール内容枠の中ですから
そこに表示されているメール、すなわち、ほとんどの場合「3」が
返ってくると思います

>かならず「3」が返ってくるわけでではなく、
>(条件が不明なのですが)
>1度だけ「0」が返ってきた事がありました。

エディタから実行しない限り
「0」は返ってこないと思いますけど

>また、私が期待する、新規メールをエディタで開いているときに、
>「0」を返すようにしたい場合はどのようにすればいいのでしょうか?
>#もちろん返信メールを開いている場合には、「1」を返して欲しいです。

受信時のマクロで、なさりたい事が今一不明ですが・・
エディタのメールタイプを返したいならば・・

loaddll "TKInfo.dll";
#n = dllfunc("RecvMailCount");
#rtn=dllfunc("NextHideTuru");
#mtype = dllfunc("MailType");
message str(#mtype);
・・・

[ ]
RE:05020 MailType関数についてNo.05021
y.iida さん 02/04/01 13:41
 
>受信時のマクロで、なさりたい事が今一不明ですが・・
>エディタのメールタイプを返したいならば・・
>
>loaddll "TKInfo.dll";
>#n = dllfunc("RecvMailCount");
>#rtn=dllfunc("NextHideTuru");
>#mtype = dllfunc("MailType");
>message str(#mtype);
>・・・

失礼
複数の窓が開いている場合
どれがアクティブ窓だか分からないですねぇ
はて、どうしたものやら?

[ ]
RE:05018 MailType関数についてNo.05025
ひろ さん 02/04/01 14:22
 
 しんさん今日は、ひろです。
> MailType関数は、どのような条件で
> 返す値を決めているのでしょうか?
 マクロを実行しているウィンドウのメールタイプです。

> 受信のメッセージの状態を変えたいため、
> 現在の作業中の状態を知りたく、
 どういった状態を知りたいか解りませんが、私は
(1)エディタ・ウィンドウを開いている
(2)本体が最小化若しくは常駐のみ
の場合、メール作成中か他のメールを閲覧中の場合が殆どなので、受信した
メッセージを表示したくないので、次の様にしています。
> if( ##return == 0 || hidemarucount > 1 || dllfunc( "IsTuruKameMain" ) == 0
> )goto ENDING;
> if((dllfunc("IsTrayIcon") == 1 && dllfunc("MainWnd") == 0) || dllfunc("IsI
>con") == 1){
> //以下行いたい処理

[ ]
RE:05025 MailType関数についてNo.05039
しん さん 02/04/01 19:14
 
しんです。

tnobuさん、y.iidaさん、ひろさん
ありがとうございます。
勉強になりました。

MailType関数は、マクロを実行している
ウィンドウが起点になってるんですね。

>> 受信のメッセージの状態を変えたいため、
>> 現在の作業中の状態を知りたく、
> どういった状態を知りたいか解りませんが、私は
>(1)エディタ・ウィンドウを開いている
>(2)本体が最小化若しくは常駐のみ
>の場合、メール作成中か他のメールを閲覧中の場合が殆どなので、受信した
>メッセージを表示したくないので、次の様にしています。

やりたいことは、ひろさんのような事なんですが、
秀丸でいつも作業していますので、
メールを書いているのか、
作業をしているのかがわかればいいなぁ〜と思ってました。

んで、アクティブなエディタの作業ファイル名か状態が
受信マクロ上で判断できればと挑戦してました。
無理なのかな?

[ ]
RE:05039 MailType関数についてNo.05040
ひろ さん 02/04/01 20:04
 
 しんさん今日は、ひろです。
> 秀丸でいつも作業していますので、
> メールを書いているのか、
> 作業をしているのかがわかればいいなぁ〜と思ってました。
 秀丸が起動しているかは、
if( findwindowclass( "Hidemaru32Class" ) )message "秀丸起動中";
で調べられますが、常駐のみの場合を除外できません。

[ ]
RE:05040 MailType関数についてNo.05041
ひろ さん 02/04/01 20:16
 
 しんさん今日は、ひろです。途中で送ってしまったので追加です。
> んで、アクティブなエディタの作業ファイル名か状態が
> 受信マクロ上で判断できればと挑戦してました。
 ExecAt, MailFileName, MailFilePath, MailType でファイル名や状態は解
りますが、そもそもアクティブかどうか知る方法が無いと思います。

 ただ hidemarucount > 1 なら確実にエディタ・ウィンドウが一つは開いて
います。だから
> > if( ##return == 0 || hidemarucount > 1 || dllfunc( "IsTuruKameMain" ) == 0
> > )goto ENDING;
という処理をしています。

[ ]
RE:05041 MailType関数についてNo.05049
しん さん 02/04/03 16:47
 
しんです。

出したメールが届かないと思ったら、
返信アドレスを間違えてた。(^^;
xxxxxxxxxxxxxx@maruo.co.jp
に送ったみたいなんだけど、
どこに行ったのやら・・・


>> んで、アクティブなエディタの作業ファイル名か状態が
>> 受信マクロ上で判断できればと挑戦してました。
> ExecAt, MailFileName, MailFilePath, MailType でファイル名や状態は解
>りますが、そもそもアクティブかどうか知る方法が無いと思います。

そうですよね。
マクロに、Is(Hidemaru|Turukame)Activeとか、Is(Hidemaru|Turukame)Focus
なんてものがあると期待に添うマクロが出来そうな気がします。

> ただ hidemarucount > 1 なら確実にエディタ・ウィンドウが一つは開いて
>います。だから
>> > if( ##return == 0 || hidemarucount > 1 || dllfunc( "IsTuruKameMain" ) == 0

>> > )goto ENDING;
>という処理をしています。

ここの部分がひろさんと違う動きをさせたいのです。
鶴亀メールで作業中(アクティブ)であるならメッセージを止めて、
秀丸で作業中であるならメッセージが出て欲しかったのです。

もっと欲をかくと、書きかけのメールがあったとしても、
それがアクティブになっていない場合は、受信メッセージが出て欲しい。
#相当無茶でしょうか?(^^;

多機能なマクロなので駆使すればなんとかなるはずと
頑張ってますがWindowを操作するって言うは難しいですね。
(^^;

[ ]
RE:05049 MailType関数についてNo.05057
ひろ さん 02/04/03 18:16
 
 しんさん今日は、ひろです。
> ここの部分がひろさんと違う動きをさせたいのです。
> 鶴亀メールで作業中(アクティブ)であるならメッセージを止めて、
> 秀丸で作業中であるならメッセージが出て欲しかったのです。
>
> もっと欲をかくと、書きかけのメールがあったとしても、
> それがアクティブになっていない場合は、受信メッセージが出て欲しい。
> #相当無茶でしょうか?(^^;
 現状では、DLL なり DDE サーバを自作しないと無理だと思います。

[ ]