この AutoHotkey スクリプトが動作しないのはなぜですか?

この AutoHotkey スクリプトが動作しないのはなぜですか?

スクリプトを書きました:

^!c::
ClipSave := ClipboardAll
Send ^x
Run calc.exe
WinWaitActive Calculator
Send %clipboard%
Send Enter
Sleep 100
Send ^c
;WinClose
Send ^v
Clipboard := ClipSave

ハイライトされたテキストを自動計算するはずですが、奇妙な計算をし続けます。たとえば、「2+3」は「reciproc(ln(tan(cube(2))))」のように表示されます。何を見逃しているのでしょうか?

答え1

AutoHotkey は数学記号を認識し、それを AutoHotkey キーストロークに変換します。たとえば、+ は Shift になります。つまり、計算機は 2 + 3 を数値 2 と Shift + 3 として解釈します。

Returnスクリプトの下部も忘れないでください。これも余分なジャンクをトリガーする可能性があります。

Sleepsもいくつか追加しましたが、 でさえも先走りすぎていましたClipWait

ここにスクリプトがあります。

+^c::
ClipSaved := ClipboardAll
SendInput ^x
Run calc.exe
WinWaitActive Calculator
clipboard = %clipboard%
SendInput {Raw}%clipboard%
SendInput {Enter}
Sleep 100
SendInput ^c
Sleep 100
ClipWait, 2
WinClose
SendInput %clipboard%
Clipboard := ClipSaved
Return

答え2

キーを送信するにはEnter、キーであることを指定するためにキーを中括弧で囲む必要があります。

例:

Send {Enter}

への呼び出しWinCloseも何らかの理由でコメントアウトされています。

関連情報