directtagjump でマクロの多重起動No.06056
ひろ さん 01/11/05 20:25
 
 秀まるおさん今日は、ひろです。
 そもそもソースがまずかったのですが、
if(!selecting){
  directtagjump;
  //endmacro;//ちゃんと終了すれば問題なし
}
$url = gettext(seltopx,seltopy,selendx,selendy);
if( strstr($url,"\n") == -1)directtagjump;
call ChangeCharacter $url,"\n","";
run "start " + $$return;
endmacro;

ChangeCharacter:
  ##change_char = strlen($$2);
  while(1){
    ##long = strlen($$1);
    ##number = strstr($$1,$$2);
    if(##number == -1)break;
    else $$1=leftstr($$1, ##number) + $$3
      + rightstr($$1,##long - ##number - ##change_char);
  }return $$1;
というマクロをメールアドレスの記載のある部分で使用し、「送信用エディ
タ起動時」のマクロを指定していると、多重起動になる場合があります。
 こちらの環境は、Windows98+IE5.5+鶴亀 Ver.1.45 です。
 openbyshell でも同じだと思いますが、元々マクロに問題があるので、仕
様ということで構いませんが、一応ご報告だけしておきます。

20:19:56.730 (3818) CommandMacroSub turukame\OpenURL.mac
20:19:56.730 (3564) エディタコマンド: 40053
20:19:56.730 (7954) ThreadFunc: HmCreate
20:19:56.730 (2783) call WinMainSub
20:19:56.730 (2783) FrameWndProc: WM_CREATE
20:19:56.730 (2783) ClientWndProc: WM_CREATE
20:19:56.780 (2783) return WinMainSub
20:19:56.780 (7956) HmCreate return
20:19:57.000 (4783) DialogBox2Param() template=285
20:19:57.000 (4744) マクロ実行中にマクロを多重実行しようとしました。
指示されたマクロ実行はキャンセルされました。

実行しようとしたマクロ = turukame\HiroMail.mac
20:19:58.320 (4753) MessgeBox2() exit
20:19:59.470 (4785) DialogBox2Param() exit
20:20:01.010 (5522) ProcessFrameClose()
20:20:01.010 (5560) DestroyWindowします
20:20:01.010 (2554) WM_DESTROY
20:20:01.010 (2561) ImeをOFFにしました
20:20:01.010 (6933) DeleteAttachFile(): deleting current attach list
20:20:01.010 (2569) delete pHidemaru
20:20:01.010 (5562) DestroyWindowしました
20:20:01.010 (8016) Hidemaru Message-loop exit

[ ]
RE:06056 directtagjump でマクロの多重起No.06060
秀まるお さん 01/11/06 16:53
 
 マクロが動いている最中にコマンドライン付きの鶴亀メールが起動されてしま
うと、そのコマンドラインの処理がマクロ実行している途中の鶴亀メール内で割
り込み実行されてしまうために矛盾が起きるようです。

 これを直すためにはマクロ実行が終わるまでコマンドラインを実行しないよう
なプロセス間の同期処理が必要なようです。まずいバグなので、さっそく修正作
業にかかります。

 しかし、よくこういうバグまで見つかるもんだなぁと関心してしまいます。

[ ]
RE:06060 directtagjump でマクロの多重起No.06064
ひろ さん 01/11/06 19:20
 
 秀まるおさん今日は、ひろです。
>  これを直すためにはマクロ実行が終わるまでコマンドラインを実行しないよう
> なプロセス間の同期処理が必要なようです。まずいバグなので、さっそく修正作
> 業にかかります。
 そうか、まずいバグなんだ(^^;。→仕様ではすまないのね。

>  しかし、よくこういうバグまで見つかるもんだなぁと関心してしまいます。
 私がよほど特殊な使い方をしているということね(^^;。

[ ]
RE:06064 directtagjump でマクロの多重起No.06066
秀まるお さん 01/11/07 09:32
 
>>  これを直すためにはマクロ実行が終わるまでコマンドラインを実行しないよう
>> なプロセス間の同期処理が必要なようです。

 っと言いましたが、runsyncでturukame.exeを起動するケースもあるかもし
れないので、やはりマクロ実行中にコマンドラインの処理を割り込み処理する
ようにしました。

 とにかくマクロの多重実行にはならなくなりました。

[ ]
RE:06066 directtagjump でマクロの多重起No.06072
ひろ さん 01/11/07 18:38
 
 秀まるおさん今日は、ひろです。
> >>  これを直すためにはマクロ実行が終わるまでコマンドラインを実行しないよう
> >> なプロセス間の同期処理が必要なようです。
>
>  っと言いましたが、runsyncでturukame.exeを起動するケースもあるかもし
> れないので、やはりマクロ実行中にコマンドラインの処理を割り込み処理する
> ようにしました。
 元々あまり細かいことは考えていませんでしたが、修正どうも有り難うござ
いました。

[ ]