AHKでRun, C:\…を実行してもウィンドウが表示されない(そもそも起動してない?)
Q&A
Closed
解決したいこと
はじめに言っておくと、AHKスクリプトの問題じゃない可能性が高いみたいです
-
AutoHotkeyで、Program Files(x86)に格納されている殆どの32bitソフトに対して、Run, C:~…を実行してもウィンドウが表示されない状態になっているので、これを解決したいです。
-
不具合が起きているのは、起動コマンド(Run, C:)の行になります。条件分岐及びプログラムをアクティベートするコードは、現時点でも完璧に動作しています。
-
ただ、起動コマンド実行後でも、タスクバーに表示されているアプリのアイコンに、緑のラインが表示されていないままなので、そもそもプログラムが起動しているかどうか(起動コマンドが実行されているのか)も怪しいです
具体的な症状
以下の症状は、Program Files(x86)に格納されている32bitソフトで発生しています。他のディレクトリに格納されているソフトでは同様の症状は一切起きていません。
-
バックグラウンドでソフトが起動している状態だと、ウィンドウを最前面に出す挙動およびウィンドウリサイズは指定通りに実行されます
-
しかし起動していない状態でAHKでRunコマンドを実行しても、ソフトが起動しません
-
スタートメニューからの起動、およびエクスプローラーからの実行などは問題なくできます。原因はよくわからないがAutohotkeyからの起動のみができないということです
補足
-
私と同じ動作環境(Windows 10 Pro(21H2)、AutoHotKey 1.1.33.6)の他の方のPCだと正常に実行されるとのことです。
-
現時点では全ての32bitのソフトが起動できないわけではなく、一部は起動できます。
※スタートメニューからの起動、およびエクスプローラーからの実行などは問題なくできます。原因はよくわからないがAutohotkeyからの起動のみができないということです -
問題に気づいたのは、先日 Win10(20h2) から Win10(21h2) へ更新および、Visual Studio Codeを最新版(April 2022 _version 1.67)に更新したあとくらいの時期です
動作環境
Windows 10 Pro(21H2)
AutoHotKey 1.1.33.6
問題を改善するために試したこと
下記(1~2)の他には、MicrosoftEdgeの修復、画面外のウィンドウ移動を実行しましたが、問題は解決しておりません。
-
AHKのスクリプトに以下のコード(起動しなかった場合にメッセージボックスが表示される)を追加
+#d::
Process, Exist, msedge.exe
if ErrorLevel<>0
WinActivate, ahk_pid %ErrorLevel%
else
Try {
Run, C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe
}
Catch e {
MsgBox, 16,, % "Exception thrown!n
nwhat: " e.what "nfile: " e.file . "
nline: " e.line "nmessage: " e.message "
nextra: " e.extra
}
Return -
コマンドプロンプト上でtasklist | find "msedge"を実行
(1)AHKからEdge起動
(2)スタートメニューからEdge起動
(3)「ファイル名を指定して実行」からEdge起動
(4)コマンドプロンプトからEdge起動
いずれの条件でも
→メッセージボックスは表示されない
→task名は表示される
ため、指定したProgram Files(x86)に格納されている殆どの32bitソフトは起動している(らしい)
・AHKからEdge起動
C:\Users\桒島>tasklist | find "msedge"
msedge.exe 16352 Console 1 110,272 K
msedge.exe 10156 Console 1 11,380 K
msedge.exe 20960 Console 1 42,372 K
msedge.exe 20976 Console 1 41,244 K
msedge.exe 21028 Console 1 22,760 K
C:\Users\桒島>
・スタートメニューからEdge起動
C:\Users\桒島>tasklist | find "msedge"
msedge.exe 15616 Console 1 172,576 K
msedge.exe 19652 Console 1 11,348 K
msedge.exe 18512 Console 1 76,124 K
msedge.exe 7264 Console 1 43,924 K
msedge.exe 2812 Console 1 23,512 K
msedge.exe 7000 Console 1 54,620 K
msedge.exe 7748 Console 1 101,968 K
msedge.exe 15508 Console 1 64,888 K
msedge.exe 6684 Console 1 34,808 K
msedge.exe 4980 Console 1 114,032 K
C:\Users\桒島>
・「ファイル名を指定して実行」からEdge起動
C:\Users\桒島>tasklist | find "msedge"
msedge.exe 15616 Console 1 179,516 K
msedge.exe 19652 Console 1 11,356 K
msedge.exe 18512 Console 1 92,136 K
msedge.exe 7264 Console 1 45,060 K
msedge.exe 2812 Console 1 24,160 K
msedge.exe 7000 Console 1 55,148 K
msedge.exe 7748 Console 1 102,620 K
msedge.exe 15508 Console 1 65,608 K
msedge.exe 4980 Console 1 135,620 K
msedge.exe 19020 Console 1 30,960 K
msedge.exe 3080 Console 1 34,744 K
C:\Users\桒島>
・コマンドプロンプトからEdge起動
※start msedge.exeと入力しました
C:\Users\桒島>tasklist | find "msedge"
msedge.exe 10952 Console 1 155,196 K
msedge.exe 10276 Console 1 11,388 K
msedge.exe 8972 Console 1 77,752 K
msedge.exe 17092 Console 1 41,948 K
msedge.exe 14004 Console 1 23,112 K
msedge.exe 8880 Console 1 21,880 K
msedge.exe 11464 Console 1 34,900 K
msedge.exe 3652 Console 1 54,348 K
msedge.exe 9528 Console 1 102,244 K
msedge.exe 7504 Console 1 64,800 K
C:\Users\桒島>
指定した32bitソフトに対して起動コマンドが実行されなくなった?コード
+#d::
Process, Exist, msedge.exe
if ErrorLevel<>0
WinActivate, ahk_pid %ErrorLevel%
else
Run, C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe
WinWait ahk_class Chrome_WidgetWin_1 ahk_exe msedge.exe
WinMove, ahk_class Chrome_WidgetWin_1 ahk_exe msedge.exe,,276,7,1428,1135
Return
現時点でも指定した32bitソフトに対して起動コマンドが実行されるソースコード
;Lazy Nezumi Pro(LazyNezumiPro.exe)
#q::
Process, Exist, LazyNezumiPro.exe
if ErrorLevel<>0
WinActivate, ahk_pid %ErrorLevel%
else
Run, C:\Program Files (x86)\Lazy Nezumi Pro\LazyNezumiPro.exe
Return
;AGDRec64.exe
+#m::
Process, Exist, AGDRec64.exe
if ErrorLevel<>0
WinActivate, ahk_pid %ErrorLevel%
else
Run, C:\Program Files (x86)\AGDRec_132F\AGDRec64.exe
Return