[решено] Как найти и прописать в реестре запуск нужного файла?

Аватара пользователя
Pozia

[решено] Как найти и прописать в реестре запуск нужного файла?

Сообщение Pozia »

Нужно запустить файл WPI.hta который находится в папке WPI, т.е. файл лежит так \WPI\WPI.hta в корне диска. Букву диска нужно определить по метке \WPI\WPI.hta. Причем файл WPI.hta может лежать на DVD/CD диске или на флешке или на диске веника. То есть скрипт должен запустить такое:



RegWrite($sKey &"\999", "1", "REG_SZ", $sDVD &"\WPI\WPI.hta")



Если пути WPI\WPI.hta нет то ничего делать не нужно.



Вот это главное что хочется.



Можно и хотелось бы сложнее скрипт. Если найдется два пути \WPI\WPI.hta или более то пусть выскакивает сообщение об этом и возможность выбора с какой буквы диска запустить скрипт.



Спасибо в любом случае.
Аватара пользователя
Pozia

Re: [решено] Как найти и прописать в реестре запуск нужного файла?

Сообщение Pozia »

Цитата Pozia:



Букву диска нужно определить по метке \WPI\WPI.hta
[решено] Как найти и прописать в реестре запуск нужного файла?




Какой метке, откуда скрипт будет знать где искать диск? или сам скрипт будет там и находиться?
Аватара пользователя
Pozia

Re: [решено] Как найти и прописать в реестре запуск нужного файла?

Сообщение Pozia »

Creat0R, скрипт не важно откуда запущен. Он должен найти файл WPI.mht который находится в папке WPI. Сама папка WPI может находится в корне любого диска (диск винчестера, флешки, DVD...). Метка по которой скрипт должен искать и является сам путь к файлу диск:\WPI\WPI.hta
Аватара пользователя
Creat0R

Re: [решено] Как найти и прописать в реестре запуск нужного файла?

Сообщение Creat0R »

Цитата Pozia:



Он должен найти файл
[решено] Как найти и прописать в реестре запуск нужного файла?




С этого и следовало начинать, что скрипт должен искать файл, а не определять букву диска...





Код:

Код: Выделить всё

#include 
#include 
$sWPI_Drives = ""
$sSel_Drive = ""
$sFirst_Drive = ""
$sKey = "HKEY_LOCAL_MACHINE\SOFTWARE"
$aDrives = DriveGetDrive("All")
For $i = 1 To $aDrives[0]
    If $aDrives[$i] = "a:" And DriveStatus($aDrives[$i])  "READY" Then ContinueLoop
    If FileExists($aDrives[$i] & "\WPI\WPI.hta") Then
        If $sWPI_Drives = "" Then $sFirst_Drive = $aDrives[$i]
        $sWPI_Drives &= StringUpper($aDrives[$i]) & "|"
    EndIf
Next
$sWPI_Drives = StringRegExpReplace($sWPI_Drives, "\|+$", "")
If StringInStr($sWPI_Drives, "|") Then
    $hGUI = GUICreate("Select Drives", 300, 200)
    $Drives_Combo = GUICtrlCreateCombo("", 20, 20, 170, 20, $CBS_DROPDOWNLIST)
    GUICtrlSetData(-1, $sWPI_Drives, $sFirst_Drive)
    $OK_Button = GUICtrlCreateButton("OK", 20, 170, 60, 20)
    $Cancel_Button = GUICtrlCreateButton("Cancel", 90, 170, 60, 20)
    GUISetState(@SW_SHOW, $hGUI)
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE, $Cancel_Button
                Exit
            Case $OK_Button
                $sSel_Drive = GUICtrlRead($Drives_Combo)
                ExitLoop
        EndSwitch
    WEnd
ElseIf $sWPI_Drives  "" Then
    $sSel_Drive = $sWPI_Drives
EndIf
If $sSel_Drive  "" Then RegWrite($sKey & "\999", "1", "REG_SZ", $sSel_Drive & "\WPI\WPI.hta")
Аватара пользователя
Creat0R

Re: [решено] Как найти и прописать в реестре запуск нужного файла?

Сообщение Creat0R »

Creat0R, скрипт работает но с недостатком о котором я говорил
[решено] Как назначить букву DVD приводу с помощью Автоит подобно как CMD?
То есть из за кард рийдера выскакивает окно с сообщением непонятным и только после нескольких нажатий скрипт продолжает работу. Можно ли это обойти? Поиск на дисках кард рийдера необязателен если скрипт средствами автоит можно задать не искать там.



И еще. Можно ли уменьшить размеры окно которое появляется с выбором диска? Более коипактным его ходелось бы увидеть. Какие строки скрипта за это отвечают



Спасибо.
Аватара пользователя
Pozia

Re: [решено] Как найти и прописать в реестре запуск нужного файла?

Сообщение Pozia »

Цитата Pozia:



Поиск на дисках кард рийдера необязателен
[решено] Как найти и прописать в реестре запуск нужного файла?




Поиск нужен только на CDRoom'ах?




Цитата Pozia:



Какие строки скрипта за это отвечают
[решено] Как найти и прописать в реестре запуск нужного файла?




GUICreate("Select Drives", 300, 200).
Аватара пользователя
Creat0R

Re: [решено] Как найти и прописать в реестре запуск нужного файла?

Сообщение Creat0R »

Creat0R, поиск нужен на дисках винчестера, на USВ флешках, на DVD или CD дисках и на USВ винчестерах. Вот именном кард рийдер трогать не нужно вообще. Если просто искать на DVD или CD то я вроде имею представление как поменять ваш скрипт.
Аватара пользователя
Pozia

Re: [решено] Как найти и прописать в реестре запуск нужного файла?

Сообщение Pozia »

Цитата Pozia:



кард рийдер трогать не нужно вообще
[решено] Как найти и прописать в реестре запуск нужного файла?




А как определить что это кард рийдер? это ведь тоже числится как внешнее устройство (как и USB винчестер), т.е «REMOVABLE».

Или буква этого ридера известна заранее?
Аватара пользователя
Creat0R

Re: [решено] Как найти и прописать в реестре запуск нужного файла?

Сообщение Creat0R »

Creat0R, видимо никак нельзя определить что это кард рийдер а не флешка буквы дисков кард рийдера не известны. А может как то можно средствами автоит подавить возникающие окна и чтобы скрипт работал дальше не ожидая нажатия Продолжить?
Аватара пользователя
Pozia

Re: [решено] Как найти и прописать в реестре запуск нужного файла?

Сообщение Pozia »

Creat0R, видимо никак нельзя определить что это кард рийдер а не флешка буквы дисков кард рийдера не известны. А может как то можно средствами автоит подавить возникающие окна и чтобы скрипт работал дальше не ожидая нажатия Продолжить?
Ответить

Вернуться в «AutoIt»