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

Компьютерный форум 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

 
timon_90


Сообщения: n/a

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


Привет народ... Я в этом деле новичок, но мне нужно сделать автоматизацию не из самых простых (как для меня) Вообщем помогите плиз чем сможете... Что собственно нужно:
Есть кейген...
1) Нужно его запустить (сделал)
2) Нажать на кнопку Generate (не получилось, но это впринципе не обязательно)
3) Скопировать текст(ключ), который он выдал (тоже непонятно)
4) Затем создать новую запись в реестре по заданному мной пути (ну в данном случае это HKEY_LOCAL_MACHINE\SOFTWARE\Electronic Arts\EA Games\Battlefield 2\ergc)
5) Создать там параметр со стандартным именем (строковый, REG_SZ)
6) Изменить его значение на такое - x9392тотсерийникбезчёрточек
вот собственно и конец... Если никто не сможет помочь по каким либо причинам то расскажите хотя бы как делать вышеперечисленные операции Заранее спасибо !!!

Отправлено: 12:53, 09-01-2007 | #111



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

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


Аватара для Sanja Alone

Ищу Человека…


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

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


timon_90
Для начала, прочти FAQ

2). Пункт 7 раздела Вввод данных / работа с элементами управления FAQ - ф-ция ControlClick();
3). Ф-ция ControlGetText();
4,5,6). Пункт 2 раздела Импорт данных из reg-файла в реестр FAQ - ф-ция RegWrite(). Заменить черточки пустотой - StringReplace("серийник с черточками","-","").

P.S. Во многих моих скриптах выполняются подобные действия - используй их в кач-ве примера (посмотри скрипт для Alcohol, FR7, SoundForge 6 и др.)

-------
Sanja Alone's site (ConvRegToAU3, OEsr, RSA, AutoIt скрипты)


Последний раз редактировалось Sanja Alone, 09-01-2007 в 15:35.


Отправлено: 15:29, 09-01-2007 | #112

timon_90


Сообщения: n/a

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


Сенк большой!) Если будет чёто не понятно то напишу)

Отправлено: 15:43, 09-01-2007 | #113


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


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

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


Для тех кто хочет использовать трекерную музыку в проектах AutoIt.
Трекерная музыка фактически не загружает CPU и из-за её малых размеров, пользуется популярностью программистов при написании кейгенов, кряков, трайнеров, а также инсталяторов.
Для проигрывания трекерных модулей в AutoIt я использую библиотеку BASSMOD.dll.
BASSMOD.dll (не путать с bass.dll) можно скачать c оф. сайта http://www.un4seen.com весит 33,5 КБ
Много трекерной музыки можно найти на сайте http://www.keygenmusic.net а также на http://www.websound.ru

Размещаем в папку \AutoIt3\Include\ скрипт(bassmod.au3) следующего содержания:
Код: Выделить весь код
#include-once
; Поддерживает: .mod .xm .it .s3m .mtm
; P.S. Глобальные константы добавлены исключительно для удобства...
;---------------------------------
; Music flags:
Global Const $BASS_MUSIC_RAMP = 1 ; normal ramping
Global Const $BASS_MUSIC_RAMPS = 2 ; sensitive ramping
Global Const $BASS_MUSIC_LOOP = 4 ; loop music
Global Const $BASS_MUSIC_FT2MOD = 16 ; play .MOD as FastTracker 2 does
Global Const $BASS_MUSIC_PT1MOD = 32 ; play .MOD as ProTracker 1 does
;Global Const $BASS_MUSIC_POSRESET = 256 ; stop all notes when moving position
Global Const $BASS_MUSIC_SURROUND = 512 ;surround sound
Global Const $BASS_MUSIC_SURROUND2 = 1024 ;surround sound (mode 2)
Global Const $BASS_MUSIC_STOPBACK = 2048 ;stop the music on a backwards jump effect
;Global Const $BASS_MUSIC_CALCLEN	= 8192 ;calculate playback length
Global Const $BASS_MUSIC_NONINTER = 16384 ; non-interpolated mixing
;---------------------------------
Func BassMod($dllPath,$sPath,$flag)
	If $dllPath="" Or $dllPath="-1" Then
		$dllPath="BASSMOD.dll"
	EndIf
	If Not FileExists($dllPath) Then
		If Not SysFileExist($dllPath) Then
			MsgBox(16,"Error","Не найден BASSMOD.dll")
			Exit
		EndIf
	EndIf
	Global $music_handle = -1
	Global $BassModDll = DllOpen($dllPath)
	$init = DllCall($BassModDll, "int", "BASSMOD_Init", "int", -1, _  ;device
							"int", 44100, _  ;freq Hz
							"int", 0)       ;flag
	$fName = DllStructCreate("char[255]")
	DllStructSetData($fName, 1, $sPath)
	$load = DllCall($BassModDll, "int", "BASSMOD_MusicLoad", "int", False, _  ;loading from memory
							"ptr", DllStructGetPtr($fName), _ ;file
							"int", 0, _   ;offset
							"int", 0, _   ;length
							"int", $flag) ;flag
	$music_handle = $load[0]
	$fName = 0
	DllCall($BassModDll, "int:cdecl", "BASSMOD_MusicPlay", "int", $music_handle)
EndFunc
Func BassModClose()
	If IsDeclared("BassModDll") Then
		DllCall($BassModDll, "int:cdecl", "BASSMOD_Free", "int", $music_handle) ;clear resource
		DllClose($BassModDll)
	EndIf
EndFunc
; Проверка наличия указанного файла в путях переменной %Path%
Func SysFileExist($sFile)
	$old=@WorkingDir
	$array = StringSplit(EnvGet("PATH"),";")
	For $i=1 To $array[0]
		FileChangeDir($array[$i])
		$get=FileExists($sFile)
		If $get=1 Then ExitLoop
	Next
	FileChangeDir($old)
	Return $get
EndFunc
Синтаксис:
BassMod($dllPath,$sPath,$flag)
$dllPath - Путь к BASSMOD.dll (Если в качестве пути указать (-1 или "") функция поищет BASSMOD.dll в текущем директории а также в путях определённых для системной переменной %path% )
$sPath - Путь к трекерному модулю
$flag - Метод обработки (см. предыдущий код: Music flags)
BassModClose() - закрывает BASSMOD.dll и выгружает музыку из памяти (Эту функцию следует вызывать при выходе из GUI)
Пример использования:
Код: Выделить весь код
#include <GUIConstants.au3> 
#include <bassmod.au3>
Opt("GUIOnEventMode", 1)
$title="BASSMOD_TEST"
$test=GUICreate($title,320,240)
GUISetOnEvent($GUI_EVENT_CLOSE,"ExitGui")
GUISetState()

BassMod(-1,"Music.xm",512+4)

While 1
Sleep(1000)
WEnd

Func ExitGui()
	BassModClose()
	Exit(0)
EndFunc

Последний раз редактировалось Diamond, 17-05-2007 в 12:32. Причина: Поправил кое где тип вызова "cdecl" для autoit-v3.2.4.2

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

Отправлено: 17:26, 09-01-2007 | #114


Аватара для Creat0R

Must AutoIt


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

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


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

Примечание и вопрос:

Примечание - Если путь к BASSMOD.dll не указать полный (просто "BASSMOD.dll"), то мелодия не играет. Это можно исправить изменив немного первое условие функции BassMod, и добавив после него такую строку:

Код: Выделить весь код
If StringRegExpReplace($dllPath, "^.*\\", "") = $dllPath Then $dllPath = @ScriptDir & "\" & $dllPath
Т.е первые две строки будут выглядеть так:

Код: Выделить весь код
If $dllPath = "" Or $dllPath = -1 Then $dllPath = @ScriptDir & "\BASSMOD.dll"
If StringRegExpReplace($dllPath, "^.*\\", "") = $dllPath Then $dllPath = @ScriptDir & "\" & $dllPath
Вопрос:
-Я в системной папке нашёл файл BassMod.dll, возможно ли как то использовать его?

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

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

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


Отправлено: 00:54, 10-01-2007 | #115


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


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

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


Creat0R
Цитата:
Если путь к BASSMOD.dll не указать полный (просто "BASSMOD.dll"), то мелодия не играет.
Странно... У меня почему-то играет... Использую "AutoIt v 3.2.0.1" Может произошла ошибка инициализации самой библиотеки? Даже не знаю что и подумать.
Цитата:
Я в системной папке нашёл файл BassMod.dll, возможно ли как то использовать его?
...если при вызове функции вместо пути к BASSMOD.dll указать -1 или "" AutoIt в первую очередь поищет библиотеку в директории скрипта и не найдя его там, продолжит поиск в путях переменной %path% (обычно это WINDOWS и WINDOWS\system32) т.е. попытается инициализировать найденную тобой библиотеку. Это не желательно поскольку "неизвестный" BassMod.dll вполне может оказаться устаревшим или что нибудь ещё...
Я считаю что лучше указывать полный путь, чтобы уж знать наверняка, что играет правильный BASSMOD.dll.
P.S.
Скорее всего какая нибудь программа временно извлекла BASSMOD.dll для одноразового проигрывания музыки, а в последствии не стала его удалять. Лично я считаю такое поведение некорректным для программы, поскольку это засоряет системную папку.

Вот ещё вариант для скомпилированного скрипта с применением FileInstall() (по крайней мере как это вижу я)
Все ресурсные файлы извлекаются в @TempDir только после запуска окна справки, а после его закрытия сразу удаляются.
Код: Выделить весь код
#include <GUIConstants.au3> 
#include <bassmod.au3>
Opt("GUIOnEventMode", 1)
$title="BASSMOD_TEST"
$test=GUICreate($title,320,240)
GUISetOnEvent($GUI_EVENT_CLOSE,"ExitGui")
$CTRL_help = GUICtrlCreateButton ("", 260, 20, 30, 30,$BS_ICON)
GUICtrlSetImage($CTRL_help,"shell32.dll",23,1)
GUICtrlSetOnEvent($CTRL_help,"help")
Global $HelpStart=0
Global $lib=@TempDir & "\BASSMOD.dll"
Global $sound=@TempDir & "\moon trip.xm"
GUISetState()

While 1
	Sleep(100)
WEnd

Func ExitGui()
BassModClose()
FileDelete($lib)
If @GUI_WINHANDLE = $help Then
	GUIDelete()
	$HelpStart=0
Else
	Exit(0)
EndIf
EndFunc

Func help()
Local $size = WinGetPos("")
If $HelpStart=0 Then
	Local $HelpInfo="На этом месте могла бы быть ваша реклама..." & @CRLF & _
	"Но её здесь точно не будет!"
	Global $help=GUICreate("О программе...",240,180,$size[0]+40,$size[1]+40,-1,$WS_EX_TOOLWINDOW,$test)
	$label_help=GUICtrlCreateLabel($HelpInfo,0,0,240,180)
	GUICtrlSetBkColor(-1,0x000000)
	GUICtrlSetColor(-1,0x000000)
	GUISetOnEvent($GUI_EVENT_CLOSE,"ExitGui")
	GUISetState()
	$HelpStart=1 ;защита от повторного запуска help'а
	$color=0
	Sleep(120)
	Do
		Sleep(40)
		$color=$color+5
		$H=StringRight(Hex($color),2)
		GUICtrlSetColor ($label_help,"0x" & $H & $H & $H)
	Until $color=255
FileInstall("BASSMOD.dll",$lib,1)
FileInstall("moon trip.xm",$sound,1)
BASSMOD($lib,$sound,1024+4)
; Т.к. музыка загружена в память, файл модуля можно сразу же удалить
FileDelete($sound)
EndIf
EndFunc

Отправлено: 07:53, 10-01-2007 | #116

nadge


Сообщения: n/a

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


Добрый день.


Проблема такая. Некоторые пользователи любят во время установки программ крутить и тыкать во все стороны мышью У меня довольно много программ настраиваются при помощи скриптов автоит. Пользователи от этого офигевают - мышка сама ездит

Вобщем нужно на время установки запретить использование мыши и клавиатуры. Кто-нибудь делал так? Как это можно реализовать?

Отправлено: 13:51, 10-01-2007 | #117


Аватара для godoo

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


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

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


nadge все вопросы по AutoIt задавайте пожалуйста в соответствующей теме http://forum.oszone.net/thread-60616.html
Если почитать эту тему, то ответ на Ваш вопрос уже давно есть:
Код: Выделить весь код
;блокируем мышь и клаву
If @OSType="WIN32_NT" Then BlockInput ( 1 )
включить
Код: Выделить весь код
BlockInput ( 0 )

Отправлено: 15:24, 10-01-2007 | #118

nadge


Сообщения: n/a

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


Цитата:
nadge все вопросы по AutoIt задавайте пожалуйста в соответствующей теме http://forum.oszone.net/thread-60616.html
Сорри, тему заметил только после создания своей.


Спасибо за ответ.

Отправлено: 17:19, 10-01-2007 | #119


Аватара для Creat0R

Must AutoIt


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

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


Хотел было спросить, как переделать функцию для поиска в файле, чтобы искать можно было исключительно слово целиком (Match whole word only), но сначала решил немного поковыряться в ней (функция от Sanja Alone), и на моё же удивление, у меня получилось это осуществить...
Не знаю пока корректный ли мой способ, но вроде работает:


Код: Выделить весь код
Func _FindTextInFile($iFile, $Text, $MtchWholeWrdFlag = 0, $CaseSense = 0)
    If Not FileExists($iFile) Then Return -1
    Dim $ret[2]
    Local $File = FileOpen($iFile, 0)
    $a = StringSplit(FileRead($File, FileGetSize($iFile)), @LF)
    FileClose($File)

    If StringIsASCII($Text) Then
        For $i = 1 To UBound($a, 1) - 1
            If StringInStr($a[$i], $Text, $CaseSense) Then
                $ret[0] = $i
                $ret[1] = $a[$i]
                If $MtchWholeWrdFlag = 1 Then
                    $StrPos = StringInStr($ret[1], $Text)
                    If StringStripWS(StringMid($ret[1], $StrPos - 1, 1), 2) <> "" Or StringStripWS(StringMid($ret[1], $StrPos + StringLen($Text), 1), 2) <> "" Then $ret = 0
                EndIf
                Return $ret
            EndIf
        Next
    Else
        For $i = 1 To UBound($a, 1) - 1
            If StringInStr(StringLower($a[$i]), StringLower($Text)) Then
                $ret[0] = $i
                $ret[1] = $a[$i]
                If $MtchWholeWrdFlag = 1 Then
                    $StrPos = StringInStr(StringLower($ret[1]), StringLower($Text))
                    If StringStripWS(StringMid($ret[1], $StrPos - 1, 1), 2) <> "" Or StringStripWS(StringMid($ret[1], $StrPos + StringLen($Text), 1), 2) <> "" Then $ret = 0
                EndIf
                Return $ret
            EndIf
        Next
    EndIf
EndFunc
Если у 3-го параметра указать 1, то поиск будет осуществляться с учётом слова целиком, если опустить этот параметр (или указать 0), то поиск будет обычный .

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

P.S.
Если кто-то знает более правильный способ, или более эффективный, то буду рад узнать его

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

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

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, 14-01-2007 в 15:33. Причина: Обновление кода

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

Отправлено: 14:57, 14-01-2007 | #120



Компьютерный форум 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




 
Переход