Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

Закрытая тема
Настройки темы
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

(*.*)


Сообщения: 36560
Благодарности: 6694


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Vadikan
Дата: 21-01-2009
Описание: архив
Внимание!


В связи с созданием отдельного форума по AutoIt, эта тема переводится в архивное состояние. Если у вас есть вопрос, создайте новую тему или поднимите существующую, если в ней обсуждается аналогичная проблема.

Пожалуйста, не создавайте тем с названием "Помогите!" или "Нужна помощь по AutoIt". Это и так понятно Заголовок темы должен быть осмысленным.



Сайт программы
Русская справка
Коллекция AutoIt скриптов от Sanja Alone
Коллекция AutoIt скриптов от MSFN (могут быть устаревшие).


Справочник по командам rundll32 (команды запуска диалоговых окон и не только...)

AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо).

Архивы старых тем по AutoIt или они же в 7z архиве (версии для печати) - 846 кб (настоятельно рекомендуется к прочтению/поиску)
(он же прикреплен в шапке)


Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров.
Цитата Vadikan:
В теме уже свыше 500 сообщений и поиск нужной информации в ней усложняется. Есть предложение собрать все решения (скрипты) и разместить их на Wiki по принципу "один скрипт - одна статья wiki", добавляя статьи в категорию Autoit. Речь, в принципе, идет об общих решениях, а не о скриптах для установки конкретной программы. Название статьи, очевидно, должно отражать назначение скрипта. Затем можно в шапке просто разместить ссылки на статьи Wiki.

-------
Канал Windows 11, etc | Чат @winsiders

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:02, 05-02-2006

 

Новый участник


Сообщения: 20
Благодарности: 0

Профиль | Отправить PM | Цитировать


После запуска с флешки "MyProga"остаються даные от autorun.inf
Даные реестра:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\{6b3faa70-78d3-11dd-aff1-001b9ee364da}\_Autorun]

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\{6b3faa70-78d3-11dd-aff1-001b9ee364da}\_Autorun\Action]
@="Запустить MyProga"

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\{6b3faa70-78d3-11dd-aff1-001b9ee364da}\_Autorun\DefaultLabel]
@="MyProga"
Здесь ключ реестра как я понимаю "@" если я прописываю его то значение не удаляеться. Тогда произвожу удаление по значению .
Код:
_RegDeleteEx1("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\{6b 3faa70-78d3-11dd-aff1-001b9ee364da}\_Autorun\Action", "Запустить MyProga")

Func _RegDeleteEx1($s_Key, $s_Val)
Local $sCurrent_ValName, $iCount = 1

While 1
$sCurrent_ValName = RegEnumVal($s_Key, $iCount)
If @error <> 0 Then ExitLoop

If String(RegRead($s_Key, $sCurrent_ValName)) = $s_Val Then Return RegDelete($s_Key, $sCurrent_ValName)

$iCount += 1
WEnd

Return @error
EndFunc


_RegDeleteEx2("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\{6b 3faa70-78d3-11dd-aff1-001b9ee364da}\_Autorun\DefaultLabel", "MyProga")

Func _RegDeleteEx2($s_Key, $s_Val)
Local $sCurrent_ValName, $iCount = 1

While 1
$sCurrent_ValName = RegEnumVal($s_Key, $iCount)
If @error <> 0 Then ExitLoop

If String(RegRead($s_Key, $sCurrent_ValName)) = $s_Val Then Return RegDelete($s_Key, $sCurrent_ValName)

$iCount += 1
WEnd

Return @error
EndFunc

_RegDeleteEx1("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\{6b 3faa70-78d3-11dd-aff1-001b9ee364da}\_Autorun\Action", "Запустить MyProga")

Func _RegDeleteEx1($s_Key, $s_Val)
Local $sCurrent_ValName, $iCount = 1

While 1
$sCurrent_ValName = RegEnumVal($s_Key, $iCount)
If @error <> 0 Then ExitLoop

If String(RegRead($s_Key, $sCurrent_ValName)) = $s_Val Then Return RegDelete($s_Key, $sCurrent_ValName)

$iCount += 1
WEnd

Return @error
EndFunc
Но мне кажеться получаеться не сильно элигантноне подскажете как можно упростить код .

-------
Да всё гениальное заключаеться в простом!!!


Отправлено: 17:06, 09-11-2008 | #1111



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата semiono:
hidec.exe просто передаёт все эти комманды cmd.exe процессору на выполнение, то-есть всё просто пропускает через себя и перенаправляет в cmd.exe »
Можно так:

Код: Выделить весь код
Run(@ComSpec & " /c " & $CmdLineRaw, "", @SW_HIDE)
Но это всего лишь запустить новую инстанцию cmd.exe и передаст все параметры ком. строки (переданные в скрипт).
Для того чтобы скрыть то окно в котором утилита запускается, нужно использовать ту строку что я привёл ранее (с WinSetState). Также можно определить PID (идентификатор) родительского процесса, и скрыть окно по заголовку этого процесса.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:29, 09-11-2008 | #1112


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


litus,
Цитата litus:
Здесь ключ реестра как я понимаю "@" »
Нет, этот символ означает значение “По умолчанию” (самое верхнее в ветке).
Это нужно удалять так:

Код: Выделить весь код
RegDelete("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\{6b 3faa70-78d3-11dd-aff1-001b9ee364da}\_Autorun\Action", "")
RegDelete("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\{6b 3faa70-78d3-11dd-aff1-001b9ee364da}\_Autorun\DefaultLabel", "")
Цитата litus:
как можно упростить код »
Для начала вам нужно понять, что функцию не нужно включать более чем один раз, она обычно задаётся в конце, и вызывается там где нужно:

Код: Выделить весь код
_RegDeleteEx("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\{6b 3faa70-78d3-11dd-aff1-001b9ee364da}\_Autorun\Action", "Запустить MyProga")
_RegDeleteEx("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\{6b 3faa70-78d3-11dd-aff1-001b9ee364da}\_Autorun\DefaultLabel", "MyProga")

Func _RegDeleteEx($s_Key, $s_Val)
    Local $sCurrent_ValName, $iCount = 1

    While 1
        $sCurrent_ValName = RegEnumVal($s_Key, $iCount)
        If @error <> 0 Then ExitLoop

        If String(RegRead($s_Key, $sCurrent_ValName)) = $s_Val Then Return RegDelete($s_Key, $sCurrent_ValName)

        $iCount += 1
    WEnd

    Return @error
EndFunc

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:45, 09-11-2008 | #1113


Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Creat0R, мне действительно помогло вставка вначале скрипта:
WinSetState("[CLASS:ConsoleWindowClass]", "", @SW_HIDE)
Которое схлопывает моментально консоль!
Консоль, в это время исполняет код записанный InnoSetup:
[Registry]
Root: HKLM32; Subkey: "Software\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName: "Alcohol-Setup"; ValueData: "{sys}\cmd.exe /k start /w {sys}\Alcohol.exe & del /f /q {sys}\Alcohol.exe & reg delete HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v Alcohol-Setup /f & Exit"; Flags: noerror; Permissions: admins-full

Практически ничего не стал менять, лишь прикрыл внешнюю консоль из скрипта! Спасибо!
Что важно, что реестр удаляет архив из которого стартовал скрипт! ;-

Хотя вот последнее твоё Run(@ComSpec & " /c " & $CmdLineRaw, "", @SW_HIDE) - это интересно, надо проверить! Потому-что идея разработки hidec утилиты очень даже пригодиться!

-------
Полезное сообщение


Отправлено: 02:07, 10-11-2008 | #1114


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


TERMINAL
Цитата:
Желательно того на которое драйвера не установлены »
проще всего при помощи DevCon, пример использования в AutoIT:
Код: Выделить весь код
#include <Constants.au3>

$out = ""
$txt = ""
; Запуск DEVCON
$foo = Run(@ComSpec & " /C DevCon ListClass Unknown", @SystemDir, @SW_HIDE, $STDOUT_CHILD)
; Чтение результата
While 1
    $out &= StdoutRead($foo)
    If @error Then ExitLoop
Wend
; Парсинг результата в массив
$arr = StringRegExp($out, "(?:[&\w]+\\)+[&\w]+", 3)
; Вывод массива на экран
If IsArray($arr) Then
    For $i=0 To UBound($arr)-1
        $txt &= $arr[$i] &@CRLF
    Next
EndIf
MsgBox(0,"",$txt)
P.S. для скрипта devcon.exe должен лежать в System32

Последний раз редактировалось amel27, 11-11-2008 в 11:43.


Отправлено: 05:13, 10-11-2008 | #1115


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата askretov:
Необходимо прочитать текст из cmd.exe, точнее с любого консольного окна. Запускаю cmd.exe затем telnet хочу дождаться приглашения другого компа »
Цитата Maza Faka:
Смотри функцию StdoutRead() »
к сожалению, для Telnet StdoutRead() не поможет, как вариант - через файл:
Код: Выделить весь код
$Server = "192.168.1.1"
$Port   = ""

$LogFile = @TempDir & "\Telnet.Log"
$CmdText = @ComSpec & " /C " & 'Telnet -f "' & $LogFile & '" ' & $Server & " " & $Port
$CmdPID  = Run($CmdText, "")

Sleep(1000)
$hWnd = WinGetHandle("Telnet " & $Server)
If @error Then Exit

ControlSend($hWnd, "", "","admin{enter}")
Sleep(1000)
ControlSend($hWnd, "", "","password{enter}")
Sleep(3000)

$data = FileRead($LogFile)
MsgBox(0, "", $data)

ControlSend($hWnd, "", "", "quit{enter}")
ControlSend($hWnd, "", "", "^c")

WinWaitClose($hWnd)
FileDelete($LogFile)
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:18, 10-11-2008 | #1116


Аватара для TERMINAL

Ветеран


Сообщения: 753
Благодарности: 28

Профиль | Отправить PM | Цитировать


amel27, что-то неопределяет...скопировал в System32, запустил твой скрипт...
читать дальше »

и непонятно откуда взялась такая команда у тебя- /C DevCon Find =Unknown

Справка по программе Device Console (DevCon)
devcon.exe [-r] [-m:\\<компьютер>] <команда> [<арг>...]
-r Перезагрузить компьютер после выполнения команды, если это необходимо.
<компьютер> Имя компьютера назначения.
<команда> Подлежащая выполнению команда (см. ниже).
<арг>... Один или несколько аргументов (если необходимы).
Для получения справки по определенной команды введите: devcon.exe help <команда>
classfilter Разрешить изменение фильтров классов.
classes Отобразить все классы настройки устройств.
disable Отключить устройства, которые соответствуют определенному
идентификатору оборудования или экземпляра.
driverfiles Отобразить установленные файлы драйверов.
drivernodes Отобразить все узлы драйверов устройств.
enable Включить устройства, которые соответствуют определенному
идентификатору оборудования или экземпляра.
find Найти устройства, которые соответствуют определенному
идентификатору оборудования или экземпляра.
findall Найти устройства, включая отсоединенные.
help Отображение справочной информации.
hwids Отобразить идентификаторы оборудования.
install Установить устройство в ручном режиме.
listclass Отобразить все устройства для класса настройки.
reboot Перезагрузить локальный компьютер.
remove Удалить устройства, которые соответствуют определенному
идентификатору оборудования или экземпляра.
rescan Выполнить поиск нового оборудования.
resources Отобразить ресурсы устройств.
restart Перезагрузить устройства, которые соответствуют определенному
идентификатору оборудования или экземпляра.
stack Отобразить ожидаемый стек драйверов устройств.
status Отобразить рабочее состояние устройств.
update Обновить устройство в ручном режиме.
UpdateNI Обновить устройство в ручном режиме без уведомления пользователя.
SetHwID Добавить, удалить или изменить порядок идентификаторов оборудования для устройств с корневым перечислением.

-------
Автоматизация прежде всего....


Последний раз редактировалось TERMINAL, 10-11-2008 в 11:17.


Отправлено: 10:59, 10-11-2008 | #1117


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата TERMINAL:
непонятно откуда взялась такая команда у тебя »
Код: Выделить весь код
DevCon Help Find
Код: Выделить весь код
DevCon Classes
попробуй другой класс устройств:
Код: Выделить весь код
DevCon Find =Media
З.Ы. что касается /C, то это часть команды "CMD /C ", где CMD раскрывается макросом @ComSpec

Отправлено: 11:23, 10-11-2008 | #1118


Аватара для TERMINAL

Ветеран


Сообщения: 753
Благодарности: 28

Профиль | Отправить PM | Цитировать


amel27, всё перепробовал, мне кажется что где-то в скрипте ошибка-у себя на компе можешь проверить?

-------
Автоматизация прежде всего....


Отправлено: 11:32, 10-11-2008 | #1119


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


TERMINAL, без скрипта проверь в командной строке указанные команды, выдают список DevID?

Отправлено: 11:40, 10-11-2008 | #1120



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[архив - Часть 2] AutoIt скрипты Vadikan AutoIt 985 21-01-2008 09:58
Вопрос - [Архив] Антивирусные программы - ОБЩИЕ ВОПРОСЫ FOX RED Защита компьютерных систем 67 21-11-2007 15:05
[Архив - Часть 1.3] AutoIt скрипты biork AutoIt 503 09-06-2007 11:27
[Архив - Часть 1.2] AutoIt скрипты Dirk Diggler AutoIt 505 02-12-2006 11:00
[Архив - Часть 1.1] AutoIt скрипты EgOrus AutoIt 335 04-02-2006 16:58




 
Переход