Ru-Board.club
← Вернуться в раздел «Программы»

» AutoIT

Автор: Elroir
Дата сообщения: 24.06.2007 20:55
ViSiToR
Спасибо! Буду подбирать стили
Автор: RwR
Дата сообщения: 26.06.2007 23:21
Здрасьте. Почему процесс не убивается по команде ProcessClose?
Автор: ViSiToR
Дата сообщения: 27.06.2007 01:43
RwR

Цитата:
Почему процесс не убивается по команде ProcessClose?

Возможно он системный? или сервис какой?
Не все процессы вот так просто можно убить, возможно для начала их придётся обезвредить, но средства для этого весьма ограничены ...
Могу привести пример функции для “замораживания” процесса (и “отмораживания”)... но не думаю что она поможет.
Автор: RwR
Дата сообщения: 27.06.2007 02:35
Процесс-то системный, но taskkill его отлично убивал. Что делать?
Автор: ViSiToR
Дата сообщения: 27.06.2007 03:01
RwR

Цитата:
но taskkill его отлично убивал. Что делать?

Использовать taskkill?
Автор: RwR
Дата сообщения: 27.06.2007 03:07
taskkill из скрипта как-то через раз срабатывает...
Автор: ViSiToR
Дата сообщения: 27.06.2007 03:12
RwR

Цитата:
taskkill из скрипта как-то через раз срабатывает...

Возможно не правильно запускается?


Код:
Run(@SystemDir & "\taskkill.exe /F /IM notepad.exe", @SystemDir, @SW_HIDE)
Автор: RwR
Дата сообщения: 27.06.2007 04:03
Всё равно не убивает. Один процесс убивает, а второй нет.Из батника всё убивается.
Автор: ViSiToR
Дата сообщения: 27.06.2007 04:43
RwR

Цитата:
Из батника всё убивается.

Батник, и желательно код AutoIt'а (с попыткой “убийства”) в студию
Автор: RwR
Дата сообщения: 27.06.2007 13:34
[more=Батник]reg add "hklm\system\currentcontrolset\services\ekrn" /v start /t reg_dword /d 4 /f
reg add "hklm\system\controlset001\services\ekrn" /v start /t reg_dword /d 4 /f
reg add "hklm\system\controlset002\services\ekrn" /v start /t reg_dword /d 4 /f
reg add "hklm\system\controlset003\services\ekrn" /v start /t reg_dword /d 4 /f
taskkill /im ekrn.exe /f
taskkill /im egui.exe /f
ess_rus.exe
reg add "hklm\system\currentcontrolset\services\ekrn" /v start /t reg_dword /d 2 /f
reg add "hklm\system\controlset001\services\ekrn" /v start /t reg_dword /d 2 /f
reg add "hklm\system\controlset002\services\ekrn" /v start /t reg_dword /d 2 /f
reg add "hklm\system\controlset003\services\ekrn" /v start /t reg_dword /d 2 /f
net start "Eset Service"
@echo off
chcp 1251>nul
for /f "tokens=2*" %%a in ('REG QUERY "HKLM\SOFTWARE\eset\eset security\CurrentVersion\Info" /v installdir ^| find /i "installdir"') do set "instdir=%%b"
cd /d "%instdir%"
set "instdir="
start egui.exe
pause[/more]
[more=Скрипт AutoIt]RegWrite ( "HKEY_LOCAL_MACHINE\system\currentcontrolset\services\ekrn", "start", "REG_DWORD", "4" )
RegWrite ( "HKEY_LOCAL_MACHINE\system\controlset001\services\ekrn", "start", "REG_DWORD", "4" )
RegWrite ( "HKEY_LOCAL_MACHINE\system\controlset002\services\ekrn", "start", "REG_DWORD", "4" )
RegWrite ( "HKEY_LOCAL_MACHINE\system\controlset003\services\ekrn", "start", "REG_DWORD", "4" )
RegWrite ( "HKEY_LOCAL_MACHINE\system\currentcontrolset\services\ekrn", "description", "REG_SZ", "Eset_Service" )
RegWrite ( "HKEY_LOCAL_MACHINE\system\controlset001\services\ekrn", "description", "REG_SZ", "Eset_Service" )
RegWrite ( "HKEY_LOCAL_MACHINE\system\controlset002\services\ekrn", "description", "REG_SZ", "Eset_Service" )
RegWrite ( "HKEY_LOCAL_MACHINE\system\controlset003\services\ekrn", "description", "REG_SZ", "Eset_Service" )
RegWrite ( "HKEY_LOCAL_MACHINE\system\currentcontrolset\services\ekrn", "DisplayName", "REG_SZ", "Eset_Service" )
RegWrite ( "HKEY_LOCAL_MACHINE\system\controlset001\services\ekrn", "DisplayName", "REG_SZ", "Eset_Service" )
RegWrite ( "HKEY_LOCAL_MACHINE\system\controlset002\services\ekrn", "DisplayName", "REG_SZ", "Eset_Service" )
RegWrite ( "HKEY_LOCAL_MACHINE\system\controlset003\services\ekrn", "DisplayName", "REG_SZ", "Eset_Service" )
Run(@SystemDir & "\taskkill.exe /F /IM egui.exe", @SystemDir, @SW_HIDE)
Run(@SystemDir & "\taskkill.exe /F /IM ekrn.exe", @SystemDir, @SW_HIDE)
ProcessClose ( "egui.exe" )
ProcessClose ( "ekrn.exe" )
WinSetState( "Лицензионное соглашение", "", @SW_HIDE )
Run ( "ESS_RUS.exe", "" )
WinSetState( "Лицензионное соглашение", "", @SW_HIDE )
WinWait ( "Лицензионное соглашение", "" )
WinSetState( "Лицензионное соглашение", "", @SW_HIDE )
ControlClick ( "Лицензионное соглашение", "", 32771 )
ControlClick ( "Лицензионное соглашение", "", 32775 )
WinSetState( "Русификация", "", @SW_HIDE)
ControlClick ( "Русификация", "", 32791 )
WinSetState( "Русификация", "", @SW_HIDE )
ControlClick ( "Русификация", "", 32794 )
WinSetState( "Русификация", "", @SW_HIDE )
Sleep (20000)
WinSetState( "Русификация", "", @SW_HIDE )
ControlClick ( "Русификация", "", 32800 )
WinWaitClose ( "Русификация", "" )
MsgBox(64, "Поздравляем!", "Установка русификатора Eset Smart Security Beta 1a успешно завершена!" )
FileDelete ( "ESS_RUS.exe" )
FileDelete ( "ESS_RUS_SCRIPT.exe" )
RegWrite ( "HKEY_LOCAL_MACHINE\system\currentcontrolset\services\ekrn", "start", "REG_DWORD", "2" )
RegWrite ( "HKEY_LOCAL_MACHINE\system\controlset001\services\ekrn", "start", "REG_DWORD", "2" )
RegWrite ( "HKEY_LOCAL_MACHINE\system\controlset002\services\ekrn", "start", "REG_DWORD", "2" )
RegWrite ( "HKEY_LOCAL_MACHINE\system\controlset003\services\ekrn", "start", "REG_DWORD", "2" )
#include <Process.au3>
$rc = _RunDos ( "net start Eset_Service" )
Run ( "egui.exe" )
[/more]
Автор: ViSiToR
Дата сообщения: 27.06.2007 20:33
RwR

Цитата:
Один процесс убивает, а второй нет

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

Связка...


Код: Run(@SystemDir & "\taskkill.exe /F /IM egui.exe /IM ekrn.exe", @SystemDir, @SW_HIDE)
Автор: RwR
Дата сообщения: 29.06.2007 01:19
Всё равно не работает. Видимо, дело в процессе. Есть команда, чтобы переименовать файл? Батник не предлагать.

Добавлено:
Всё, вопрос отпал. Команда FileMove.
Автор: Maza Faka
Дата сообщения: 29.06.2007 13:22

Код:
FileCopy ("D:\1.avi", "C:\", 1)

If @error = 0 Then
    MsgBox(0, "Error", "Error occured")
Else
    MsgBox(0, "Success", "File is copyed")
EndIf
Автор: ViSiToR
Дата сообщения: 29.06.2007 13:38
Maza Faka

Цитата:
что не так?

Ты проверяешь равен ли @error нулю

Функция FileCopy не задаёт уровень ошибки, а даже если бы и задавала, то проверять в данном случае следует 1 а не 0 (т.е если @error = 1 тогда ошибка)...

В данном случае проверяем так:


Код:
$FileCopyRet = FileCopy("D:\1.avi", "C:\", 1)
If $FileCopyRet = 0 Then ;Значит не скопировался
MsgBox(0, "Error", "Error occured")
Else ;Значит скопировался
MsgBox(0, "Success", "File is copyed")
EndIf
Автор: Maza Faka
Дата сообщения: 29.06.2007 14:55
ViSiToR

Цитата:
если @error = 1 тогда ошибка

Странно, в справочнике написано наоборот:

Цитата:

FileCopy
Возвращаемое значение
Значение 1 означает успешное выполнение, иначе 0


Если не трудно поделись инфой по AutoIT-у, а то справочник есть справочник.
Автор: ViSiToR
Дата сообщения: 29.06.2007 15:45
Maza Faka

Цитата:
Странно, в справочнике написано наоборот:

Как раз нет, просто ты немного неправильно понял что значит “Возвращаемое значение”...

Это значит что сама функция возвращает значение 1 в случае удачи, и 0 в случае неудачи.

А @error это немного другое, это код ошибочности, подобно тому как в батниках команды задают %errorlevel%, только в данном случае команда FileCopy() не задаёт уровень ошибочности, т.е он (уровень) постоянно после неё будет всегда 0.

Когда функция возвращает уровень ошибочности (возьми к примеру функцию Run() ), то макросу @error задаёься это самое значение, и в справке тогда пишется какой уровень ошибочности задаётся функцией, и какое значение возвращается (и то и другое может быть вместе, чтобы легче определять что именно случилось).

Поэтому мы проверяем значение возвращённое функцией, помещая его в переменную...

$Ret = FileCopy(...)

В отличие от батников, функции в AutoIt'е всегда возвращают значения, если не задано значение, то по умолчанию возвращается 0.

Вот к примеру самодельная функция, сделаем так, чтобы она вернула -1:


Код: Func MyFunc()
If 1 + 1 = 2 Then Return -1
EndFunc
Автор: Maza Faka
Дата сообщения: 29.06.2007 16:25
ViSiToR
Спасибо за обьяснение, а по поводу инфы, посоветуй, с чего сам начинал, какую литературу порекомендуешь начинающему, а то в справочнике не всё понятно.

Добавлено:

Цитата:
В данном случае проверяем так:
Код:
$FileCopyRet = FileCopy("D:\1.avi", "C:\", 1)
If $FileCopyRet = 0 Then ;Значит не скопировался
MsgBox(0, "Error", "Error occured")
Else ;Значит скопировался
MsgBox(0, "Success", "File is copyed")
EndIf


Можно проверить и так:

Код:
If FileCopy("d:\1.avi", "c:\", 1) Then
    MsgBox(0, "Success", "File is copyed")
Else
    MsgBox(0, "Error", "File not exist")
EndIf
Автор: ViSiToR
Дата сообщения: 29.06.2007 18:34
Maza Faka

Цитата:
посоветуй, с чего сам начинал

Начинал с того, что много спрашивал у знающих (включая и на офф. форуме), если бы не эти добрые и знающие люди, я бы до сих пор ничего не знал и не умел .


Цитата:
какую литературу порекомендуешь начинающему

Я если честно не думаю что именно по AutoIt есть какая нибудь литература, но можно почитать книги по общим концепциям программирования, а лучше конечно учиться на пробах и ошибках, imo.

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

Кстати, я по началу тоже справку недооценивал, но потом начал присматриваться к “маленьким надписям” в этой справки , и к примерам приведённым в ней (запускал вручную каждый пример, и пытался понять принцип его действия), в результате оказалось что около 30-40-ка процентов моих знании (хотя не очень то уж и больших), взято именно со справки (на английском).

И вообще, я по натуре самоучка (в плане предпочтении), поэтому с меня брать пример или нет, я не знаю, возможно более правильнее изучать всё этапно, проходить все азы и программу изучения (курсы, книги, учителя частные и т.д).



Цитата:
Можно проверить и так:

Можно (это если требуется неповторно проверять), я просто привёл оптимальный (понятный) пример
Автор: Dobrii
Дата сообщения: 01.07.2007 15:21
Еще вопрос.
Функция StringSplit.
Есть строка вида: 12.06.07 entered "name name1 name2"(12,) 17:22
Мне из нее нужно выделить то, что в кавычках, пишу:

$q="12.06.07 entered "name name1 name2"(12,) 17:22"
$qw=StrinSplit($qw,""")

Не выходит, если поставить разделитель " ", все получается но имена разбиваются, имен в кавычках может быть 1 а может 10.
Подскажите как сделать?
Автор: ViSiToR
Дата сообщения: 01.07.2007 16:01
Dobrii

Цитата:
нужно выделить то, что в кавычках

Для этого используется RegExp...
И у тебя небольшая ошибка, ты пишешь двойные кавычки внутри строки обрамлённой двойными кавычками - Нужно либо удваивать в таком случае двойные кавычки, либо обрамлять одиночными...


Код:
$q='12.06.07 entered "name name1 name2"(12,) 17:22'
$qw=StringRegExp($q, '(?i)"(.*)"', 3)

MsgBox(0, "", $qw[0])
Автор: Maza Faka
Дата сообщения: 01.07.2007 18:22
ViSiToR
А как можно реализовать такой код:

Код:
For /L %%i in (1,1,10) do ping.exe -n 1 -w 1000 192.168.0.%%i>nul && Echo
SetVideoFolderPath=\\WS%%i\D\Video\Films >> ProVideoPlayer.ini
Автор: ViSiToR
Дата сообщения: 01.07.2007 20:58
Maza Faka

Цитата:
если пинг прошёл успешно, вписать определённую строку в файл.



Код:
$File = "ProVideoPlayer.ini"
$Line = "SetVideoFolderPath=\\WS%%i\D\Video\Films"
$var = 1

Do
Ping("192.168.0." & $var, 1000)
If Not @error Then FileWriteLine($File, $Line)
$var += 1
Until $var = 10
Автор: Maza Faka
Дата сообщения: 02.07.2007 13:23
Задачка:

Код:
For $var = 1 to 10
MsgBox(0, "test", "letter " & $var)
Next
Автор: Dobrii
Дата сообщения: 02.07.2007 13:26

Цитата:
$q='12.06.07 entered "name name1 name2"(12,) 17:22'
$qw=StringRegExp($q, '(?i)"(.*)"', 3)

MsgBox(0, "", $qw[0])

Спасибо! Я не подумал про разные кавычки .
Еще вопросик, в окно GUI я вывожу строку:
GUICtrlCreateLabel($StatPBlue[$i], 400, 15*$i)
Как можно изменить цвет фона, шрифта и поменять стиль?
Это выводится в цикле, хотелось чтобы по условию фон был красный или зеленый.
Автор: LEX1
Дата сообщения: 02.07.2007 14:23
Maza Faka

Код: [no]For $var = 65 to 90
MsgBox(0, "test", "letter " & Chr($var))
Next[/no]
Автор: Maza Faka
Дата сообщения: 02.07.2007 16:33
LEX1
Сенкс!
А как удалить несколько типов файлов по маске? Что то вроде:

Код:
FileDelete("D:\Games\CS16\*.bmp" & "D:\Games\CS16\*.cfg" & "D:\Games\CS16\*.dem")
Автор: ViSiToR
Дата сообщения: 02.07.2007 16:35
Dobrii

Цитата:
Как можно изменить цвет фона, шрифта и поменять стиль?

Для фонового цвета элемента см. в справке GuiCtrlSetBkColor()...
Для шрифта см. GuiCtrlSetFont()...
Для стиля используй GuiCtrlSetStyle().





Добавлено:
Maza Faka

Цитата:
как удалить несколько типов файлов по маске?


Либо построить для этого функцию, либо поместить в массив все типы маски и пройтись по ним циклом...


Код:
Dim $TypesArr[4] = [3, "*.bmp", "*.cfg", "*.dem"]

For $i = 1 To Ubound($TypesArr)-1
FileDelete("D:\Games\CS16\" & $TypesArr[$i])
Next
Автор: RwR
Дата сообщения: 02.07.2007 19:30
Понимаю, что не в тему, но как с помощью cmdow.exe запустить приложение в скрытом виде?
Автор: ViSiToR
Дата сообщения: 02.07.2007 21:17
RwR

Цитата:
Понимаю, что не в тему

Тогда сюда


Цитата:
как с помощью cmdow.exe запустить приложение в скрытом виде?

Раз уж в этой теме, то почему бы не используя средства AutoIt?


Код: Run("Program.exe", "", @SW_HIDE)
Автор: RwR
Дата сообщения: 02.07.2007 21:25
Имя окна пост. меняется, вот почему. AutoIt отпадает.

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192

Предыдущая тема: Quintura Search


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.