|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как найти и прописать в реестре запуск нужного файла? |
|
||||
|
|
[решено] Как найти и прописать в реестре запуск нужного файла?
|
|
Ветеран Сообщения: 2756 |
Нужно запустить файл 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 или более то пусть выскакивает сообщение об этом и возможность выбора с какой буквы диска запустить скрипт. Спасибо в любом случае. |
|
|
Отправлено: 23:58, 11-03-2009 |
|
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Pozia:
|
|
|
------- Отправлено: 00:17, 12-03-2009 | #2 |
|
Ветеран Сообщения: 2756
|
Профиль | Отправить PM | Цитировать Creat0R, скрипт не важно откуда запущен. Он должен найти файл WPI.mht который находится в папке WPI. Сама папка WPI может находится в корне любого диска (диск винчестера, флешки, DVD...). Метка по которой скрипт должен искать и является сам путь к файлу диск:\WPI\WPI.hta
|
|
------- Отправлено: 00:27, 12-03-2009 | #3 |
|
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Pozia:
#include <GuiConstantsEx.au3>
#include <ComboConstants.au3>
$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")
|
|
|
------- Отправлено: 01:20, 12-03-2009 | #4 |
|
Ветеран Сообщения: 2756
|
Профиль | Отправить PM | Цитировать Creat0R, скрипт работает но с недостатком о котором я говорил здесь То есть из за кард рийдера выскакивает окно с сообщением непонятным и только после нескольких нажатий скрипт продолжает работу. Можно ли это обойти? Поиск на дисках кард рийдера необязателен если скрипт средствами автоит можно задать не искать там.
И еще. Можно ли уменьшить размеры окно которое появляется с выбором диска? Более коипактным его ходелось бы увидеть. Какие строки скрипта за это отвечают Спасибо. |
|
|
------- Отправлено: 07:44, 12-03-2009 | #5 |
|
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать |
|
------- Отправлено: 10:13, 12-03-2009 | #6 |
|
Ветеран Сообщения: 2756
|
Профиль | Отправить PM | Цитировать Creat0R, поиск нужен на дисках винчестера, на USВ флешках, на DVD или CD дисках и на USВ винчестерах. Вот именном кард рийдер трогать не нужно вообще. Если просто искать на DVD или CD то я вроде имею представление как поменять ваш скрипт.
|
|
------- Отправлено: 12:04, 12-03-2009 | #7 |
|
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Pozia:
Или буква этого ридера известна заранее? |
|
|
------- Отправлено: 13:36, 12-03-2009 | #8 |
|
Ветеран Сообщения: 2756
|
Профиль | Отправить PM | Цитировать Creat0R, видимо никак нельзя определить что это кард рийдер а не флешка буквы дисков кард рийдера не известны. А может как то можно средствами автоит подавить возникающие окна и чтобы скрипт работал дальше не ожидая нажатия Продолжить?
|
|
------- Отправлено: 14:01, 12-03-2009 | #9 |
|
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать А если так:
#include <GuiConstantsEx.au3>
#include <ComboConstants.au3>
;
$sWPI_Drives = ""
$sSel_Drive = ""
$sFirst_Drive = ""
$sKey = "HKEY_LOCAL_MACHINE\SOFTWARE"
$aDrives = DriveGetDrive("All")
For $i = 1 To $aDrives[0]
If 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", 200, 100)
$Drives_Combo = GUICtrlCreateCombo("", 20, 20, 170, 20, $CBS_DROPDOWNLIST)
GUICtrlSetData(-1, $sWPI_Drives, $sFirst_Drive)
$OK_Button = GUICtrlCreateButton("OK", 20, 70, 60, 20)
$Cancel_Button = GUICtrlCreateButton("Cancel", 130, 70, 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")
|
|
------- Отправлено: 14:36, 12-03-2009 | #10 |
|
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| Разное - HELP! Как прописать в реестре SP2 не устанавливая оного??? | emperor-august | Microsoft Windows 2000/XP | 2 | 05-10-2009 11:38 | |
| CMD/BAT - [решено] Как организовать поиск нужного диска и запуск с него приложения? | Nun-Nun | Скриптовые языки администрирования Windows | 16 | 28-05-2009 22:12 | |
| [решено] Как написать скрипт о проверке нужного файла на съемном носителе? | Pozia | AutoIt | 12 | 05-03-2009 20:20 | |
| VBS/WSH/JS - [решено] Stop цикл при обнаружении нужного значения из файла | Afon | Скриптовые языки администрирования Windows | 4 | 26-01-2009 15:16 | |
| [решено] Как запрепить запуск программы по имени файла | AlxCruel | Microsoft Windows 2000/XP | 10 | 05-04-2006 08:58 | |
|