AHK(Auto Hot Key)でスクリプトを作成し、外付けHDDが接続されているかどうかを検出し、スクリプト内の次のコマンドを実行しようとしています。以下がスクリプトであるとします。
A
B
C
D
E
AからCを、外付けドライブが接続されているかどうかを確認するスクリプトにしたい。接続されている場合、コマンドはD行に進み、そうでない場合はE行に進みます。すでにいくつかのスクリプトを確認しましたが、うまくいきませんでした。このスクリプトを試しましたリンク参考としてですが、自分の要件に基づいてどのように変更すればよいかわかりません。
答え1
外付け HDD のラベルがわかっている場合は、以下を使用できます。
; get a list of all the hard drives. Hard drives are considered as FIXED by AHK
DriveGet, drives, list, FIXED
Loop, Parse, drives ; loop through each drive letter
{
DriveGet, DriveLabel, Label, %A_LoopField%: ; get the drive label
; IF DriveLabel not contains External HDD1 label,External HDD2 label
IF (DriveLabel != "External HDD label") ; If you want to use only one External HDD
Continue
ExternalDriveLetter := A_LoopField ; get the drive letter of the last found
; or
; get the drive letter of the first found
; ExternalDriveLetter = %A_LoopField%
; Break
}
IfExist, %ExternalDriveLetter%:
Run %ExternalDriveLetter%: ; go to line D
else
MsgBox, No External HDD is connected ; go to line E
答え2
Loop
{
WinWaitActive, DiskInDrive ; put the title in here for the dialog box to wait for indefinitely -- will need to exit from tray
; put code here to execute any time the window is active
; after code is done, program will loop and wait again
}
ダイアログ ボックスが既定でアクティブにならない場合は、上記の WinWaitActive ステートメントの前に WinWait と WinActivate を使用することもできます。