マクロ実行中でも本体の操作No.03496
ひろ さん 01/06/16 17:21
 
 皆さん今日は、ひろです。
 あるマクロを実行中でもその処理とは関わり無い操作 (受信など) を行い
たくて、本体を操作したい場合が有ります。しかし本体でマクロを実行した
場合、マクロ終了までは操作が出来ません。何か良い方法は無いでしょうか?

[ ]
RE:03496 マクロ実行中でも本体の操作No.03498
秀まるお さん 01/06/18 15:45
 
>  あるマクロを実行中でもその処理とは関わり無い操作 (受信など) を行い
> たくて、本体を操作したい場合が有ります。しかし本体でマクロを実行した
> 場合、マクロ終了までは操作が出来ません。

 できる操作とできない操作があると思うんですが、できない操作は、すなわ
ちマクロの多重実行を必要とするか、または多重実行の可能性のある操作とい
うことになると思います。

 エディタで例えばmessage文を実行している最中程度なら、例えば送受信は
できるようです。

 何か具体的にできない操作で直した方がよさそうな物があれば教えてくださ
い。場合によってはマクロを使わないように修正することができるかもしれま
せん。

[ ]
RE:03498 マクロ実行中でも本体の操作No.03500
ひろ さん 01/06/18 19:34
 
 秀まるおさん今日は、ひろです。
>  できる操作とできない操作があると思うんですが、できない操作は、すなわ
> ちマクロの多重実行を必要とするか、または多重実行の可能性のある操作とい
> うことになると思います。
 この辺りのことはマクロ製作者が責任を持ては良いと考えていました。

>  何か具体的にできない操作で直した方がよさそうな物があれば教えてくださ
> い。場合によってはマクロを使わないように修正することができるかもしれま
 「直した方がよさそう」かどうか解りませんが、私が今やりたいのは あ
る特定のアプリケーション起動しているか (終了しているか) どうかを判断
中は、鶴亀本体の操作を行いたいのです。具体的には、
while( 1 ){
  if( findwindowclass( $app ) != -1)break;
}

runsync $app;
といった処理中です。

[ ]
RE:03500 マクロ実行中でも本体の操作No.03501
ひろ さん 01/06/18 19:50
 
 秀まるおさん今日は、ひろです。自己レスです。
> >  できる操作とできない操作があると思うんですが、できない操作は、すなわ
> > ちマクロの多重実行を必要とするか、または多重実行の可能性のある操作とい
> > うことになると思います。
 思い付きですが、OperateOn, OperateOff といった関数で鶴亀本体の操作
の可能/不可能を制御できれば、あとはマクロ製作者が責任を持ては良いと
思いますが、如何でしょうか?

 P.S 実は当初
run "turukame.exe /xsampel.mac";
という要領で、別スレッドにすれば出来るかと思ったのですが、マクロの多
重実行が出来ないことをすっかり忘れていました。

[ ]
RE:03501 マクロ実行中でも本体の操作No.03520
秀まるお さん 01/06/26 10:52
 
 基本的に、マクロが多重実行できない作りなので、そういうマクロ待機状態
で別マクロを実行するのは無理です。

 ウィンドウが切り替わっても変数その他はずっと引き継がれる作りにしてあ
る関係で、どうしても多重実行は無理です。(秀丸ともども)

[ ]
RE:03520 マクロ実行中でも本体の操作No.03525
ひろ さん 01/06/26 12:48
 
 秀まるおさん今日は、ひろです。
>  基本的に、マクロが多重実行できない作りなので、そういうマクロ待機状態
> で別マクロを実行するのは無理です。
 まず、「turukame.2:03501」の
> run "turukame.exe /xsampel.mac";
については、「私が多重実行できないことを忘れていた」と言う間抜けさを
告白しているだけで、本質的にはマクロの多重実行がしたいわけではありま
せん。

>  何か具体的にできない操作で直した方がよさそうな物があれば教えてくださ
> い。場合によってはマクロを使わないように修正することができるかもしれま
とのことでしたが、「turukame.2:03500」で書いた
while( 1 ){
  if( findwindowclass( $app ) != -1)break;
}
のように、あるアプリケーションが終了しているか調べつ間に、送受信を可
能にして頂きたいのです。

[ ]
RE:03525 マクロ実行中でも本体の操作No.03527
秀まるお さん 01/06/26 13:36
 
> while( 1 ){
>   if( findwindowclass( $app ) != -1)break;
> }
> のように、あるアプリケーションが終了しているか調べつ間に、送受信を可
> 能にして頂きたいのです。

 それがエディタ上で動いているのなら、送受信は並行動作できます。

 鶴亀本体で動いている時は、マクロの多重実行がどうこういう問題とは別に、
実行不可です。

 たしかにそのマクロを実行している最中でも1秒待てばメッセージループが
再開しますが、そのメッセージループはまくまで「マクロのキャンセルを許可
するため」であり、普通にWM_COMMANDやWM_KEYDOWNを通してしまうと鶴亀メー
ルはほとんどの場合誤動作します。そんな危険なことを許すことはできません。

[ ]
RE:03527 マクロ実行中でも本体の操作No.03529
ひろ さん 01/06/26 18:23
 
 秀まるおさん今日は、ひろです。
>  それがエディタ上で動いているのなら、送受信は並行動作できます。
 やりたいのは本体側です(^^;。

>  たしかにそのマクロを実行している最中でも1秒待てばメッセージループが
> 再開しますが、そのメッセージループはまくまで「マクロのキャンセルを許可
> するため」であり、普通にWM_COMMANDやWM_KEYDOWNを通してしまうと鶴亀メー
> ルはほとんどの場合誤動作します。
 そうですか、この辺りの危険性はマクロ製作者が気をつければよいので、
>  思い付きですが、OperateOn, OperateOff といった関数で鶴亀本体の操作
> の可能/不可能を制御できれば、あとはマクロ製作者が責任を持ては良いと
ということも考えたのですが、
> そんな危険なことを許すことはできません。
とのことなので諦めます。

 ##実際には、送受信は DLL 関数を使えばよいので、あとやりたいメール
の読み書きは、諦めるしかないか。

[ ]