Windows11でrunsync2 cmd.exeを実行するとNo.40737
jechabon さん 23/07/27 17:34
 
Windows11(22H2)で複数の秀丸を起動中(複数タブ+複数ウィンドウ)に下記マクロを
実行すると、
1行目のcmd.exe実行時にアクティブウィンドウが他のウィンドウに移動してしまい
ます。
Windows10以前は問題ありませんでした。
何か他に対策方法はないでしょうか?


[tags.mac]
runsync2 "cmd.exe /c del /s tags";
runsync2 "\"" + hidemarudir + "\\hidetags.exe" + "\"";
disableerrormsg;
directtagjump;


環境
 OS:Windows 11 Pro (22H2)
 秀丸:32bit版 Ver9.23

[ ]
RE:40737 Windows11でrunsync2 cmd.exeをNo.40739
jechabon さん 23/07/27 17:52
 
秀丸の複数起動は関係ありませんでした。
runsync2 "cmd.exe /c del /s tags";
のマクロを実行すると、アクティブウィンドウが移動してしてしまうようです。

[ ]
RE:40737 Windows11でrunsync2 cmd.exeをNo.40740
秀丸担当 さん 23/07/27 17:58
 
試してみたら、確かにそうなりました。
なぜWindows11でそうなるかはわからないです。

似た問題として、自分のとろこでは一時起きていたもののもう起きないのですが、常
駐秀丸エディタのダブルクリックで新規作成ウィンドウにフォーカスがあたらないと
いう問題があります。
Windows11固有の問題で、対策は不明です。

runsync2については、プログラム実行する方法はたくさんあって、別の実行方法でや
ると対策になると思います。
確実そうなのは、runexにして、パラメータ11でウィンドウ非表示で実行する方法
です。

runex "cmd.exe /c del /s tags"
    , 1     //sync   0:async, 1:sync
    , 0, "" //stdin  0:none, 1:auto, 2:<file, 3:(reserved),
            //       4:current content, 5:selection
    , 0, "" //stdout 0:none, 1:auto, 2:>file 3:>>file, 4:new window,
            //       5:insert, 6:replace, 7:>output pane, 8:>>output pane
    , 0, "" //stderr 0:none, 1:auto or >>stdout, 2-8:same as stdout's param
    , 0, "" //folder 0:none, 1:current, 2:specify 3:(reserved), 4:exe's
    , 2     //show   0:auto, 1:show, 2:hide, 3-13:ShellExecute()'s SW_*
    , 1     //draw   0:draw, 1:no draw when stdout redirected
    , 0     //encode 0:ansi, 2:utf-16, 6:utf-8
    , 0     //extended flags
;

簡単に書くにはrun文で標準出力>nulにしてもいけそうでした。
run "cmd.exe /c del /s tags >nul";

他には、JavaScriptでhidemaru.runProcessを使う方法もあります。


ちなみに前面に来るか来ないかは、ずっと昔のWindowsからSetActiveWindowは前面に
来ないように仕様変更になってから、SetForegroundWindowが登場してそれに変えれ
ばいいとかありました。(それは30年前の話なのですが)
でもAPI名が変わっただけで勝手に前面が変わるわけで、意味ないことでした。
それでAllowSetForegroundWindowが登場したりとか、できると思ったら、それでもWi
ndows8でモダンUIは絶対変わらないみたいになったり、そんなこんなを何度も繰り返
して、また前面を変えたくない意見が誰かが言ったのかわからないですが、そういう
順番がWindows11で巡ってきたのかなと思います。


[ ]
RE:40740 Windows11でrunsync2 cmd.exeをNo.40743
jechabon さん 23/07/28 01:30
 
ご回答ありがとうございます。

runexを使用して回避できました。
今回の使い方(hidetags.exe)の直前であれば、非同期のrunでも問題ないですね。


> 常駐秀丸エディタのダブルクリックで新規作成ウィンドウにフォーカスがあたらな
>いという問題があります。

他のアプリでも似た現象がありました。
Everything(高速ファイル検索ソフト)のタスクトレイをダブルクリックしても、Wind
ows11だと時々しかアクティブにならないです。
オプション設定でシングルクリックに変更すると、何故かうまく動作するようになり
ました。

[ ]