[ 新規に投稿する ]

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が登場したりとか、できると思ったら、それでもWindows8でモダンUIは絶対変わらないみたいになったり、そんなこんなを何度も繰り返して、また前面を変えたくない意見が誰かが言ったのかわからないですが、そういう順番がWindows11で巡ってきたのかなと思います。

[ ]
RE:40740 Windows11でrunsync2 cmd.exeを実行するとバックグラNo.40743
jechabon さん 23/07/28 01:30 [ コメントを投稿する ]
  ご回答ありがとうございます。

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


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

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

[ 新規に投稿する ]