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

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

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

Старожил


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

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


Изменения
Автор: Vadikan
Дата: 25-01-2008
Внимание!
Тема переведена в архивное состояние





(настоятельно рекомендуется к прочтению/поиску)


Руководство к действию по работе c AutoIt.

Помогите пожалуйста. Нужен маленький скриптик для решения некоторых рутинных задачь.
Вот что нужно сделать последовательно:

1) в папке DIR1 находим и удаляем файлы в названии которых присутствует text_1
2) в папке DIR2 находим xxx.sif и удаляем строки, в которых присутствует text_1
3) в папке DIR3 находим xxx.inf и добавляем в его секцию [XXX] несколько строчкек (text_2, text_3, ..., text_n)
4) в папке DIR4 находим yyy.inf ищем в его секции [YYY] text_4 и заменяем его на text_5
5) сохраняем все изменения и выводим отчёт о проделанной работе :-)

Заранее благодарен.

Отправлено: 05:05, 03-12-2006

 

Аватара для Creat0R

Must AutoIt


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

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


amel27
Цитата:
что-то типа такого:
Не работает до цикла дело не доходит...

Вернее доходит (это я с полным именем проверял, включая расширение), но возвращается всегда ноль

Последний раз редактировалось Creat0R, 03-03-2007 в 17:36.


Отправлено: 14:40, 03-03-2007 | #251



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

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


Googler


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

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


Creat0R
попробуй запустить архивацию каталога и проверить процесс "winrar",
FYI: эта функция показывает мгновенное значение загрузки CPU

Отправлено: 02:36, 05-03-2007 | #252

Izh Izh вне форума

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


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

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


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

Отправлено: 11:57, 05-03-2007 | #253


Аватара для Creat0R

Must AutoIt


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

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


amel27
Цитата:
попробуй запустить архивацию каталога и проверить процесс "winrar",
FYI: эта функция показывает мгновенное значение загрузки CPU
Да, для архивации показывает (хотя и не совсем мгновенно), но я пробовал на таком примере, и странно что не работает:

Код: Выделить весь код
#include <GuiConstants.au3>
GUICreate("CPU Usage Test", 200, 200)

$ProcessName = "AutoIt3"
$StatusBar = GUICtrlCreateLabel("CPU Usage: ", 0, 185, 200, 15, BitOr($SS_SIMPLE,$SS_SUNKEN))

GUISetState()

AdlibEnable("SetStatus", 20)

While GUIGetMsg() <> -3
WEnd

Func SetStatus()
    GUICtrlSetData($StatusBar, "CPU Usage: " & _GetCPUUsage($ProcessName))
EndFunc
Ведь по идее сам процесс скрипта (AutoIt3.exe) занимает около 10-20-ти процентов загрузкий ЦП (в данном примере), но возвращается всегда ноль. Я пробовал и на других процессах, но результат тот же

И ещё, а для чего по умолчанию стоит процесс idle, как я понял это типа “Бездействие системы”? но если оставлять по умолчанию, то возвращается тоже ноль, хотя в Диспетчере задач если ничего не грузит процессор то это значение становиться 99.

P.S
Что такое FYI?


Izh
Цитата:
заставить скрипт определить сидюк
Из спраки немного изменил пример (поиск по команде DriveGetDrive):

Код: Выделить весь код
$var = DriveGetDrive( "CDROM" )
If NOT @error Then
    MsgBox(4096,"", "Found " & $var[0] & " drives")
    For $i = 1 to $var[0]
        MsgBox(4096,"Drive " & $i, $var[$i])
    Next
EndIf

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

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

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


Последний раз редактировалось Creat0R, 06-03-2007 в 03:20.


Отправлено: 16:44, 05-03-2007 | #254


Googler


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

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


Как определить период бездействия пользователя (пример):
Код: Выделить весь код
#include <Date.au3>
Opt("TrayIconHide", 1)

$IdleMinimum = 1000 ; Количество допустимых секунд неактивности
$LogFileName = StringTrimRight (@ScriptFullPath, 4) & ".log" ; Имя файла журнала

While 1
    ; Ожидание неактивности достаточной длительности
    $iIdle = _IdleWaitCommit ($IdleMinimum)
    ; Запись этого события в лог
    Local $sHours = '', $sMins = '', $sSecs = ''
    $iHours = Int ($iIdle/3600)
    If $iHours Then $sHours = $iHours & ' часов '
    $iMins = Int (Mod ($iIdle, 3600)/60)
    If $iMins Then $sMins = $iMins & ' минут '
    $iSecs = Round (Mod (Mod ($iIdle, 3600), 60))
    If $iSecs Then $sSecs = $iSecs & ' секунд'
    FileWriteLine ($LogFileName, _Now () & ' ' & @UserName & ' неактивен ' & $sHours & $sMins & $sSecs & @CRLF)
Wend

; Функция: ожидание неактивности пользователя.
; Возвращает: время неактивности в секундах.
; $idlesec - минимальная длительность ожидаемой неактивности в сек.
Func _IdleWaitCommit ($idlesec)
    $idlesec = $idlesec * 1000
    Local $iSave, $LastInputInfo = DllStructCreate ("uint;dword")
    DllStructSetData ($LastInputInfo, 1, DllStructGetSize ($LastInputInfo))
    DllCall ("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr ($LastInputInfo))
    Do
        $iSave = DllStructGetData ($LastInputInfo, 2)
        Sleep(500)
        DllCall ("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr ($LastInputInfo))
    Until (DllStructGetData ($LastInputInfo, 2)-$iSave) > $idlesec
    Return Round ((DllStructGetData ($LastInputInfo, 2)-$iSave)/1000)
EndFunc

Последний раз редактировалось amel27, 06-03-2007 в 07:35.

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

Отправлено: 05:51, 06-03-2007 | #255


Googler


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

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


Creat0R
Ну... значит процесс не может определить загрузку самого себя, т.к. эти операции выполняются синхронно - пока WMI вычисляет загрузку сам процесс (AutoIt3) ожидает ответа, т.е. действительно простаивает... потому я и сказал о мгновенном значении.

по поводу Idle - там скорей всего общая загрузка CPU

P.S. FYI - For Yur Information

Отправлено: 07:33, 06-03-2007 | #256


Пользователь


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

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


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

$source = RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup", "SourcePath")

runwait($source & 'Software\prog.exe')


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

Отправлено: 07:58, 06-03-2007 | #257


Аватара для Creat0R

Must AutoIt


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

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


amel27
Цитата:
значит процесс не может определить загрузку самого себя
Но ведь...

Цитата:
Я пробовал и на других процессах, но результат тот же
Цитата:
пока WMI вычисляет загрузку сам процесс (AutoIt3) ожидает ответа, т.е. действительно простаивает
Да, но, в Диспетчере задач явно видно что процесс вовсе не простаивает, а именно грузит ЦП.

Цитата:
по поводу Idle - там скорей всего общая загрузка CPU
Тогда почему тоже всегда ноль?

Цитата:
P.S. FYI - For Yur Information
Спасибо, буду знать (и наверное юзать )

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

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

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


Отправлено: 12:58, 06-03-2007 | #258


Googler


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

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


Creat0R
исправил скрипт - добавил усреднение по заданному интервалу (в "тиках"), кроме того процесс может теперь передаваться как по имени, так и по PID.
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:37, 07-03-2007 | #259


Аватара для Creat0R

Must AutoIt


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

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


amel27
Цитата:
исправил скрипт
Большое спасибо, вроде работает....

Хотя мне пока не удаётся подобрать оптимальный интервал использования этой функции (между каждым её вызовом и установкой тикания ).

Цитата:
процесс может теперь передаваться как по имени, так и по PID
По PID вроде не работает, а по имени опять же, нужно без расширения.... но это думаю не страшно (хотя иногда существуют процессы не только с расширением *.exe... тогда придётся делать перебор по всем процессам на существование с подобным именем)...

Мне вообще то всё это нужно для одного моего небольшого проэктика, я пытаюсь написать утилитку менеджер процессов - Получилось ВСЁ что хотел, кроме (теперь корректного, т.е в реальном времени) слежения за загрузкой ЦП (каждого процесса в отдельности и общего использования), и использования памяти каждым процессом.

Мне удалось адаптировать многие функции из офф. форума, естественно кучу твоих функции, и пару собственных.
Утилита позволяет просматривать подробную информацию о процессе, имеет почти все те же функции что и у встроенного taskmgr.exe в Windows (включая собственный диалог запуска приложении - FileRun), и даже чуть чуть больше .

Добавлено:



amel27
Цитата:
Как определить период бездействия пользователя
Бездействия в каком смысле? что юзер (не) должен делать для бездействия? я запустил этот пример, ничего не делал пару секунд, потом что то начал делать , но лог не пишется.

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

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

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


Отправлено: 05:51, 08-03-2007 | #260



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Открывая 7z архив пишет не удаётся открыть как архив. Можно ли его восстановить? DreDo Хочу все знать 4 01-12-2009 18:54
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. Vadikan AutoIt 1543 18-01-2009 10:46
[архив - Часть 2] AutoIt скрипты Vadikan AutoIt 985 21-01-2008 09:58
[Архив - Часть 1.2] AutoIt скрипты Dirk Diggler AutoIt 505 02-12-2006 11:00
[Архив - Часть 1.1] AutoIt скрипты EgOrus AutoIt 335 04-02-2006 16:58




 
Переход