質問: AutoHotKeyで次のスクリプトがうまく動きません。 if (WinExist("ahk_exe notepad.exe")){ MsgBox % WinExist("ahk_exe notepad.exe") F13::Ctrl }else{ F13 & d::Del F13 & h::Backspace F13 & b::Left F13 & f::Right F13 & j::Down F13 & k::Up F13 & a::Home F13 & e::End F13 & ,::F8 F13 & .::F7 F13 & /::F6 } Return notepadを選択してるときのみF13をCtrlに割り当てたいのですが、なぜかelseのなかの設定になってしまいます。 スクリプトをリロードすると、MsgBoxによって非ゼロが出力されます。 再起動したり、再インストールしたりしてみたのですが、どうにもこうにも上手く動きません。 どうすれば良いでしょうか?
回答: 「F13::Ctrl」は、単独でF13を、つまりF13押下、F13離す、だけをしたら、Ctrlを押下、離した。とする意味です。 そういう動作はしていると思います。 一方でelseの中のですが、他でも同様の記述となっていませんか?そっちが適用されているだけかもと思います。 試しに、elseの中のF13 & d::DELを、F13 & d::A のようにして、Delの動作なのか A が入力されるのかで区別してみては如何でしょうか? Ctrlを押しながら、というのであれば Send, {Ctrl down}となりますが、{Ctrl up}が出てくるまで「押しっぱなし」になるという作用があります・・