ちらつかせず最小化させる方法No.00410
cho-bi さん 09/02/24 23:29
 
 cho-biと申します。こちらに投稿して良いのか迷いましたが、マクロに詳しい皆様
にお教え頂きたくこちらにメールを出させて頂きました。

 普段常駐させている秀丸メールで、新着メールがあった際にメッセージを出します
が、他の作業中の場合は自動的にキャンセルを押させて、ただ新着メールがあったこ
とはWindowsのタスクの切り替え(Alt + Tab)ではっきりと分かるように、秀丸メール
を最小化させる、というマクロを下記のように作ってみました。

loaddll "TKInfo.dll";
#count = dllfunc( "RecvMailCountExcludePartial" );
  if ( #count == 0 ){ goto END; }
$str = "メールを " + str( #count ) + " 通受信しました。";
#n = dllfunc("SetAutoPushTimer", 540, "cancel");
#m = 0x40 + 1 + 0;
#kekka = dllfunc( "Bypass_MessageBox", hidemaruhandle(0), $str, "秀丸メール",
 #m );
  if( #kekka == 1 ){
    #n = dllfunc( "RestoreWindow" );
  } else {
    #n = dllfunc( "DisableDraw", 1 );
    #n = dllfunc( "RestoreWindow" );
    #n = dllfunc( "MinimizeWindow" );
    #n = dllfunc( "EnableDraw" );
  }

END:
freedll;
endmacro;

 確かに希望通りの動作をするのですが、最小化させる際に一瞬ですが画面にちらっ
と秀丸メールが現れるようです。
 気にしなければそれまでなのですが、もし可能ならばこの画面のちらつきもなくせ
ればと思います。いろいろ試してみたのですが、どうしてもうまくいきません。画面
のちらつきを無くす良い方法がありましたら、お教え頂ければありがたいです。よろ
しくお願いいたします。

[ ]
RE:00410 ちらつかせず最小化させる方法No.00411
K'zawa さん 09/02/25 09:11
 
cho-biさん、こんにちは。
K'zawaです。

ちょっと目が悪いんではっきりわからないんですが、
既に最小化している時に、リストアするとちらついているように見えるのですが、
そういうことで合っていますか?


  if( #kekka == 1 ){
    #n = dllfunc( "RestoreWindow" );
  } else {
    if ( ! dllfunc( "MainWnd" ) ) {
      #n = dllfunc( "RestoreWindow" );
    }
    #n = dllfunc( "MinimizeWindow" );
  }


と、してみたらどんなもんでしょう?

[ ]
RE:00411 ちらつかせず最小化させる方法No.00412
cho-bi さん 09/02/25 11:47
 
 K'zawa さん、どうもありがとうございました。
 お教え頂いたとおりにやってみますと、既に最小化している時にはちらつかなくな
りました。これでほかの作業中も気にならなくなりました。ありがとうございます。

 ただ、ほかの作業が終わってメールを読み、いったん秀丸メールのウィンドウを閉
じてタスクトレイに常駐させた後、またメールが来てキャンセルを押し秀丸メールを
最小化させる時には、一瞬ちらつきます。
 これ一回だけで、あとはK'zawa さんにお教え頂いたおかげでちらつかなくなるの
ですが、この、タスクトレイに常駐状態から最小化の状態に変化する際の一回のちら
つきをなくす方法は、なにか無いでしょうか。

[ ]
RE:00412 ちらつかせず最小化させる方法No.00413
K'zawa さん 09/02/25 12:54
 
cho-biさん、こんにちは。
K'zawaです。

最初の1回は、SetQuietModeが有効なようです。


  } else {
    #n = dllfunc("SetQuietMode", 1 );
    if ( ! dllfunc( "MainWnd" ) ) {
      #n = dllfunc( "RestoreWindow" );
    }
    #n = dllfunc( "MinimizeWindow" );
    #n = dllfunc("SetQuietMode", 0 );
  }


[ ]
RE:00413 ちらつかせず最小化させる方法No.00414
cho-bi さん 09/02/25 13:20
 
 K'zawa さん、早速どうもありがとうございました。

 SetQuietMode で完璧でした。これで作業中にちらつくことがなくなり、まったく
気にならなくなりました。本当にどうもありがとうございました。
 秀丸の方もそうですが、マクロは奥が深いですね。またいろいろ勉強してみたいと
思います。ありがとうございました。


[ ]