disabledraw; が機能しません。No.33256
dmc さん 14/06/12 13:54
 
お願いします。
マクロにおいてdisabledraw;が機能しません。
原因と対策を教えて下さい。

setcompatiblemode 15;
disabledraw;  //高速化のため画面の書き換えを禁止
#a=0;
while (#a<1000) {
 #a=#a+1;
 searchdown "\\\\pics" , regular, nocasesense, hilight;
 if( ! result )  beep;
 right 6;
 beginsel;
 golineend;
 copy;
 nexttab;
 paste;
 insert "★";
 prevtab;
}


もしかしてタブ切り替えをするとdisabledraw;が解除されてしまうのかと思い、
タブ切り替えの直後に毎回disabledraw;を入れてみたのですが殆ど効果ありません。

また、秀丸のウインドウを最小化する方法も試しましたが、
showwindow 2;
showwindow 1;
マクロ実行中は他のアプリケーションの操作に干渉してまともに操作できなくなりま
す。

・タブ切り替えを頻繁にするマクロでも画面表示を抑制し、
・他のアプリケーションへの干渉も起こさない
これが可能でしたら方法を教えて下さい。

[ ]
RE:33256 disabledraw; が機能しません。No.33257
秀丸担当 さん 14/06/12 14:40
 

disabledrawは全体では有効にならず、ウィンドウごとに,アクティブ切り替え
ごとに行う必要があります。
しかし切り替えたその瞬間には描画されてしまいます。
作業用の見えない秀丸エディタとして、openfile "/h"; で開いておくといいで
す。(ステルスモード)

例えば以下のようなマクロになります。
最初に作業用の見えない秀丸エディタを起動し、元の秀丸エディタと両方のウィ
ンドウハンドルを覚えておきます。
アクティブ切り替えにはsetactivehidemaruを使います。
ステルス秀丸は、マクロが終わったら自動的に表示されます。

#hOrg=hidemaruhandle(0);
openfile "/h";
#hTemp=hidemaruhandle(0);
setactivehidemaru #hOrg;

setcompatiblemode 15;
disabledraw;  //高速化のため画面の書き換えを禁止
#a=0;
while (#a<1000) {
 #a=#a+1;
 searchdown "\\\\pics" , regular, nocasesense, hilight;
 if( ! result )  beep;
 right 6;
 beginsel;
 golineend;
 copy;
 setactivehidemaru #hTemp;// nexttab;
 paste;
 insert "★";
 setactivehidemaru #hOrg;// prevtab;
 disabledraw;  //高速化のため画面の書き換えを禁止
}

[ ]