Не совсем понял «иногда не срабатывает и приходится несколько раз нажимать горячую клавишу». В каком смысле не срабатывает? Горячую клавишу через AHK устанавливали? Может, как-то неверно установили? Вот так
работает? Если да, то так же и bat-файл можно запустить.
Дату можно менять и без cmd, если задача именно в этом. В любом случае, чтобы вызвать команды через cmd, не обязательно посылать их в окно консоли. Например:
tempdate := CmdRet("cmd /c echo %date:~-10%")
CmdRet("cmd /c date 14.06.2021")
Sleep 5000
CmdRet("cmd /c date " . tempdate)
CmdRet(sCmd, callBackFunc := "", encoding := "")
{
static flags := [HANDLE_FLAG_INHERIT := 0x1, CREATE_NO_WINDOW := 0x8000000], STARTF_USESTDHANDLES := 0x100
(encoding = "" && encoding := "cp" . DllCall("GetOEMCP", "UInt"))
DllCall("CreatePipe", "PtrP", hPipeRead, "PtrP", hPipeWrite, "Ptr", 0, "UInt", 0)
DllCall("SetHandleInformation", "Ptr", hPipeWrite, "UInt", flags[1], "UInt", flags[1])
VarSetCapacity(STARTUPINFO , siSize := A_PtrSize*9 + 4*8, 0)
NumPut(siSize , STARTUPINFO)
NumPut(STARTF_USESTDHANDLES, STARTUPINFO, A_PtrSize*4 + 4*7)
NumPut(hPipeWrite , STARTUPINFO, siSize - A_PtrSize*2)
NumPut(hPipeWrite , STARTUPINFO, siSize - A_PtrSize)
VarSetCapacity(PROCESS_INFORMATION, A_PtrSize*2 + 4*2, 0)
if !DllCall("CreateProcess", "Ptr", 0, "Str", sCmd, "Ptr", 0, "Ptr", 0, "UInt", true, "UInt", flags[2]
, "Ptr", 0, "Ptr", 0, "Ptr", &STARTUPINFO, "Ptr", &PROCESS_INFORMATION)
{
DllCall("CloseHandle", "Ptr", hPipeRead)
DllCall("CloseHandle", "Ptr", hPipeWrite)
throw "CreateProcess is failed"
}
DllCall("CloseHandle", "Ptr", hPipeWrite)
VarSetCapacity(sTemp, 4096), nSize := 0
while DllCall("ReadFile", "Ptr", hPipeRead, "Ptr", &sTemp, "UInt", 4096, "UIntP", nSize, "UInt", 0) {
sOutput .= stdOut := StrGet(&sTemp, nSize, encoding)
( callBackFunc && %callBackFunc%(stdOut) )
}
DllCall("CloseHandle", "Ptr", NumGet(PROCESS_INFORMATION))
DllCall("CloseHandle", "Ptr", NumGet(PROCESS_INFORMATION, A_PtrSize))
DllCall("CloseHandle", "Ptr", hPipeRead)
Return sOutput
}
Не знаю, что именно даёт :~-10.
Разработка AHK-скриптов:
e-mail
dfiveg@mail.ruTelegram
jollycoder