Всем доброго времени суток,
Довольно долго искал на форуме и в интернете, но такой темы не нашёл.
Вопрос в следующем, хочу что бы пилот запускал программу которая находится в AppData, если в ручную прописать название профиля пользователя то всё работает, но проблема в том, что тогда каждому пользователю моей "чудесной" программы придётся лезть во все скрипты, что бы исправлять путь.
Есть вариант кустарно через средства винды, запускать окно "выполнить" через Win+R и вводом туда "%USERPROFILE%\AppData\", но вопрос такой, пилот умеет как то сам находить имя профайла?
Буду благодарен за любой ответ.
Спасибо.
set $path1 "C:\Windows\Temp\tmp.txt" // путь к файлу, в котором будет имя папки
set $path2 "C:\Windows\Temp\tmp.bat" // путь к батнику, который получит имя папки
set %tmp [1] echo %username% > $path1
if fileexists($path1) = 0 // если файл не существует
if fileexists($path2) = 0 // если файл не существует
save_array %tmp $path2
wait 500
exec $path2
wait 1000
end_if
end_if
load_array %a $path1
log %a [1] // имя папки
end_script
Благодарю, буду пробовать.
Появился ещё один вопрос, что делать если у пользователя русскоязычное название профиля?
Например профиль Мария скрипт записывает в массив как: Њ аЁп
Скрипт:
set $path1 "C:\Windows\Temp\tmp.txt" // путь к файлу, в котором будет имя папки
set $path2 "C:\Windows\Temp\tmp.bat" // путь к батнику, который получит имя папки
set %tmp [1] echo %username% > $path1
if fileexists($path1) = 0 // если файл не существует
if fileexists($path2) = 0 // если файл не существует
save_array %tmp $path2
wait 500
exec $path2
wait 1000
end_if
end_if
load_array %a $path1
log %a [1]
set %a [1] rtrim(%a [1])
set $b C:\Users\%a [1]\AppData\Local\*\*\*.exe
exec cmd /c start $b
end_script
подозреваю, что в батнике нужно первой строкой написать:
chcp 1251
Получилось, спасибо!
Я пишу некий аналог автологина, и всё фачится когда пользователем выбрана не та раскладка клавиш, т.е. если включён CAPS LOCK, то скрипт вводит пароль в большом регистре и естественно система его не принимает. Есть какая то команда определения включённого\выключенного капслока?
Попробуйте использовать say. Он посылает символы, а не нажатия.
Set $login1 "почта~2mail.ru "
Set $password1 "пароль"
call log_pass $login1 $password1 #handleWin
proc log_pass $login1 $password1 #handleWin $gamecentr
set #z GetWindow (#handleWin CHILD)
while #h < 0
set #h FindImage (0, 0 1920 1080 abs (images\pic18.bmp) %arr_pass 2 70 20 5)
if #h > 0
set $var setlayout (0409)
wait 400
sendex $login1
wait 200
sendex {tab}
wait 200
sendex $password1
wait 200
sendex {enter}
else
sendex_down {WindowsLeft}{d}
sendex_up {WindowsLeft}{d}
ShowWindow #handleWin TOP
set #h -1
end_while
end_if
end_proc
Копируйте логин и пароль в буфер, всталяйте через ctrl+v.
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)