マクロmenuコマンドとscreen saverNo.41633
chikachika さん 25/01/27 22:08
 
マクロで、menuを出したままの状態でscreen saverが起動すると、その時点でescape
キーが押されたような動作が起きてしまいます。これを何とか抑止できないでしょう
か。

希望としては、マクロmessageコマンドと同じように、screen saverの起動や、復帰
にかかわらずに、つまりそれらとは無関係に動作してくれることなのですが。

[ ]
RE:41633 マクロmenuコマンドとscreen savNo.41634
秀丸担当 さん 25/01/28 11:55
 
ご指摘ありがとうございます。
秀丸エディタのメニューは、メニューバーは独自ですが、メニューそのものは一般的
なWindowsのメニューと同様になっています。
すみませんが、この振る舞いを変えるのは難しいです。

参考まので情報としてですが、スクリーンセーバーを直接起動してみました。
なぜかスクリーンセーバーが抑止されるPCとされないPCがあって、どうやったら変え
られるのか不明で、抑止されているPCで試そうとしたためです。
スクリーンセーバーはc:\windows\system32の拡張子.scrのexeファイルで、起動オプ
ション/sで起動できるようです。(例:C:\Windows\Sysnative\Ribbons.scr /sを自
前で時間差で)
この場合、幾つかのアプリでキー入力が続行できてしまう状況になりました。(つま
りメニューが出たままにもなる)
裏でキー入力続行できてしまうのはよくないので、メニューが消えるとしたら、そち
らのほうが好都合という気がします。

[ ]
RE:41634 マクロmenuコマンドとscreen savNo.41637
chikachika さん 25/01/28 14:41
 
早速のご回答ありがとうございました。

menuコマンドがescapeキー打鍵と同様のresult=0で終了してきたとき、
messageコマンドで、意図して打鍵したかどうか聞いて、
意図してないと返答があれば、
menuコマンドを再実行するようにして、解決しました。

15分くらいかかる仕事をソフトがした最後にmenuを選ばせるようなソフトを作ったの
で、
私が途中離席して別作業の後にPCに戻ってきた際に、
「あれっキー押してなかったのに」と気付きました。

ヘルプなどの文書のmenuコマンドの説明にスクリーンセーバとの関係を書いておいて
頂く契機になれば嬉しいです。

[ ]
RE:41637 マクロmenuコマンドとscreen savNo.41638
秀丸担当 さん 25/01/29 09:10
 
そういうマクロだったのですね。
そういった事例があり、menu文のところにも書いたほうがよさそうということで参考
にさせていただきます。

[ ]
RE:41638 マクロmenuコマンドとscreen savNo.41639
(-L-) さん 25/01/31 15:31
 
>そういうマクロだったのですね。

すでに解決とのことですが、今回の件に対するアプローチのひとつとして
マクロ実行中でmenuがスクリーンセーバーが原因でキャンセルされるのが困るのであ
れば、そもそも、その期間はスクリーンセーバーが働かないようにすれば良いとも思
います。

たとえば、「マウスふるふる」をマクロで起動させてから長時間処理を始めるとか。

その観点でいくと、Win32APIのSetThreadExecutionStateを叩くとかもあろうかと思
いますが、秀丸マクロでWin32APIは直接叩けるのでしょうか?
(ちょっと探してみたけどわかりませんでした)

または、

今の秀丸マクロの命令の範囲でできる対策で、スクリーンセーバーが働かないように
する技があるかどうかなど。

[ ]
RE:41639 マクロmenuコマンドとscreen savNo.41640
秀丸担当 さん 25/01/31 16:32
 
SetThreadExecutionStateというAPIがあるのですね。
Win32APIの呼び出しは、dllfuncを使うと、64bit版で最初の4つのパラメータまでと
か、特定の条件ではできてしまいます。
しかし呼び出し規約が違うので、おすすめはできないです。
32bit版は危ないです。
マクロでできる通常の文などではスクリーンセーバーを働かさないようにする方法は
用意されていません。
そういうことが予想される場合は、message文で待つようにするといった方法が簡単
でいいと思います。

[ ]