AutoHotkeyを使ってスニッピングツール(Windows Snipping Tool)のText Extractorを自動化する際には、テキスト読み取りプロセスが開始されるまで十分な待ち時間が必要となる場合があります。マウスドラッグ操作後にテキスト抽出が行われない問題を解決するためには、適切な待ち時間を設けるか、特定のウィンドウ要素が表示されるまで待つようにスクリプトを修正することをお勧めします。
以下に、スニッピングツールの起動からテキスト抽出までを自動化するサンプルスクリプトを示します。このスクリプトでは、テキスト抽出ボタンが表示されるまで待つための WinWaitActive コマンドを使用しています。
ahk
#Persistent ; スクリプトが終了しないようにします
#SingleInstance Force ; スクリプトの二重起動を防ぎます
; Win + Shift + S を使用してスニッピングツールを起動します
#^s:: ; Win + Shift + S のホットキーを定義します
Send, #Esc} ; 既に開いているスニッピングツールを閉じます(ある場合)
Send, #^s ; Win + Shift + S を送信します
; スニッピングツールのウィンドウがアクティブになるまで待ちます
WinWaitActive, ahk_class Windows.UI.Core.CoreWindow
Sleep, 500 ; マウス移動前の待ち時間(必要に応じて調整)
; Text Extractor ボタンの位置をクリックします
; 以下の座標はスクリーンの解像度やスニッピングツールの表示位置によって異なる可能性があります
MouseMove, 1370, 40, 2
Click
; Text Extractor ボタンがクリックされた後、テキスト抽出が行われるまで待ちます
; このウィンドウタイトルはテキスト抽出中や抽出後のタイトルによって変わる可能性があります
WinWaitActive, 正文の抽出
Sleep, 2000 ; テキスト抽出が完了するまで十分な待ち時間を設けます
; 抽出したテキストをクリップボードにコピーします
; 抽出したテキストが表示されるウィンドウタイトルやクラス名によって変わる可能性があります
WinActivate, ahk_class Windows.UI.Core.CoreWindow
ControlSend,, ^c, ahk_class Windows.UI.Core.CoreWindow
Sleep, 500 ; コピーコマンドが処理されるまで待ちます
; 抽出したテキストを表示します(クリップボードからペースト)
MsgBox, 抽出したテキスト:n%clipboard%
return
このスクリプトは、スニッピングツールを起動し、Text Extractor ボタンをクリックしてテキストを抽出し、抽出したテキストをクリップボードにコピーしてメッセージボックスに表示します。ただし、スニッピングツールのウィンドウクラス名やText Extractor ボタンの位置、抽出後のウィンドウタイトルなどは、Windowsのバージョンやスクリーン解像度によって異なる可能性があります。そのため、実際の環境に合わせてこれらの値を調整する必要があります。
また、WinWaitActive コマンドは特定のウィンドウタイトルが表示されるまで待機しますが、このコマンドの引数はスニッピングツールの実際のウィンドウタイトルやクラス名に応じて適切に指定してください。これらの値を確認するには、AutoHotkeyの「ウィンドウ スパイ」機能を使用すると便利です。
スニッピングツールのウィンドウタイトルやクラス名を確認する方法:
1. AutoHotkeyのインストールフォルダに含まれている AutoHotkey.exe を右クリックし、「ウィンドウ スパイ」を選択します。
2. スニッピングツールを起動し、Text Extractor ボタンをクリックします。
3. ウィンドウ スパイウィンドウがスニッピングツールのウィンドウを表示していることを確認します。
4. 「ClassNN」や「Title」の値を確認し、スクリプトに適切な値を設定します。
以上のようにスクリプトを修正することで、テキスト抽出が行われない問題を解決することができるかもしれません。ただし、スニッピングツールの内部動作やウィンドウ構造がOSのアップデートによって変更される可能性があるため、スクリプトが動作しない場合には再度環境に合わせた調整が必要となる場合があります。