Pracuję w firmie produkującej zewnętrzne dyski twarde. Mam wymaganie aktualizacji FW dla tysięcy dysków twardych. Muszę przesłać dwa pliki po kolei, aby zakończyć przesyłanie. Wykonanie przetwarzania ręcznego wymaga czasu, a także pozwala na wystąpienie błędu ludzkiego. Postanowiłem więc zautomatyzować naciśnięcia klawiszy i kliknięcia myszą za pomocą Auto Hot Key. Skompilowałem również skrypt. Jednak skrypt jest niestabilny. Czasami działa dobrze. Czasami kliknięcie kontrolne nie działa. Czasami kluczowe dane wejściowe nie zostaną wpisane jako pełne. Ale na podstawie mojej wiedzy skrypt jest w porządku. Jeśli wystąpi jakikolwiek błąd, popraw mnie. Chcę też bezpiecznie usunąć dysk, więc jeśli jest jakieś kodowanie, proszę go również dodać
Mój proces jest wyjaśnienie, jak poniżej.
- Podłącz dysk twardy do komputera i poczekaj, aż komputer wykryje dysk twardy
- Otwórz narzędzie do przesyłania FW
- Kliknij RESCAN i poczekaj, aż HDD pojawi się w narzędziu
- Kliknij Przeglądaj, aby znaleźć pierwszy plik FW.
- Następnie zaznacz pole wyboru obok dysku twardego pokazane w narzędziu.
- Kliknij POBIERZ i naciśnij enter przy następnym komunikacie ostrzegawczym.
- Poczekaj na zakończenie pobierania i naciśnij OK po wyświetleniu komunikatu o powodzeniu.
- Powtórz kroki od 3 do 7 dla drugiego pliku FW.
- Kliknij zamknij i Bezpiecznie usuń dysk twardy.
Poniżej znajduje się mój skrypt.
Run, open "Application Location"
Winwait, Warning
if ErrorLevel
{
MsgBox, Window timed out.
return
}
else
{
ControlClick, OK, Warning
Winwait, Application Window name
if ErrorLevel
{
MsgBox, WinWait timed out.
return
}
else
{
; Upload first FW File
ControlClick, Rescan, Application Window name
ControlClick, Browse, Application Window name
Winwait, Open
if ErrorLevel
{
MsgBox, WinWait timed out.
return
}
else
{
SendInput, {Raw}Location of First File
Send, {Enter}
}
sleep, 1500
WinActivate, Application Window name
CoordMode, Mouse, Relative
Click 43, 126
ControlClick, Download, Application Window name
Winwait, Warning
if ErrorLevel
{
MsgBox, WinWait timed out.
return
}
else
{
Send, {Enter}
}
Winwait, Download Successful
if ErrorLevel
{
MsgBox, WinWait timed out.
return
}
else
{
ControlClick, OK, Download Successful
}
}
; Upload Second FW File
WinActivate, Application Window name
ControlClick, Rescan, Application Window name
ControlClick, Browse, Application Window name
Winwait, Open
if ErrorLevel
{
MsgBox, WinWait timed out.
return
}
else
{
SendInput, {Raw}Second FW File location
Send, {Enter}
}
sleep, 1500
WinActivate, Application Window name
CoordMode, Mouse, Relative
Click 43, 126
sleep, 2000
ControlClick, Download, Application Window name
Winwait, Warning
if ErrorLevel
{
MsgBox, WinWait timed out.
return
}
else
{
Send, {Enter}
}
Winwait, Download Successful
if ErrorLevel
{
MsgBox, WinWait timed out.
return
}
else
{
ControlClick, OK, Download Successful
sleep, 1500
ControlClick, Exit, Application Window name
}
}