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

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

 

Googler


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

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


Diamond
Цитата:
Подскажите, как с помощью WinApi поменять частоту обновления экрана?
Код: Выделить весь код
; Пример использования функции
_DisplaySetRes (1024, 768, 32, 75)

; Функция изменения видеорежима (для одного монитора)
Func _DisplaySetRes ($width, $height, $depth, $freq)
    Local $dev = DllStructCreate ("byte[32];int[10];byte[32];int[6]")
    ; Возвращаем текущее состояние устройства
    Local $ret = DLLCall ('user32.dll', 'int', 'EnumDisplaySettings', _
        'ptr' , 0, _
        'long', 0, _
        'ptr' , DllStructGetPtr ($dev) )
    If @error Then Return 0
    If $ret[0]=0 Then Return 0
    ; Правим нужные элементы структуры
    DllStructSetData ($dev, 4, $depth, 1)
    DllStructSetData ($dev, 4, $width, 2)
    DllStructSetData ($dev, 4, $height, 3)
    DllStructSetData ($dev, 4, $freq, 5)
    ; Проверяем корректность параметров
    $ret = DllCall ('user32.dll', 'int', 'ChangeDisplaySettings', _
        'ptr', DllStructGetPtr ($dev), _
        'int', 2 )
    If @error Then  Return 0
    ; Если все ОК - применяем новые параметры
    If $ret[0] =0 Then
        $ret = DllCall ('user32.dll', 'int', 'ChangeDisplaySettings', _
            'ptr', DllStructGetPtr ($dev), _
            'int', 1 )
        If @error Then  Return 0
        Return 1
    Else
        Return -1
    EndIf
EndFunc
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:35, 06-02-2007 | #181



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

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


Googler


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

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


Creat0R
Цитата:
А также способ подсчёта количества символов в файле
Альтернативный вариант. Правда пришлось сдвинуть значения флагов, чтобы одному биту соответствовал один пропускаемый символ: @CR - Bit 1 ; @LF - Bit 2.
Код: Выделить весь код
Func _FileCharCount ($file, $flag=1)
    Local $str = FileRead ($file)
    If BitAND ($flag, 1) Then $str = StringStripCR ($str)
    If BitAND ($flag, 2) Then $str = StringReplace ($str, @LF, '')
    Return StringLen ($str)
EndFunc

Отправлено: 12:13, 06-02-2007 | #182


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


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

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


amel27
По поводу частоты обновления
Отлично! Всё работает! :UP: Если честно, я и не надеялся что вообще кто нибудь ответит, иначе задал бы этот вопрос ещё месяц назад. Большое спасибо!
P.S.
Была проблема с видеокартой, в некоторых играх частота сбрасывалась с 85 Гц. на 60 Гц. Перепробовал уже (наверное) все известные утилиты и ни одна из них не помогла. Теперь проблема решилась. Ещё раз спасибо!

Отправлено: 18:29, 06-02-2007 | #183


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


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

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


Есть фирменная YAMAHA'овская программа для конвертирования звуковых WAV-файлов
в формат MMF (используется в сотовых телефонах Samsung, LG, Pantech, etc...)
Называется WSC-MA2, сайт http://smaf-yamaha.com/

Это, похоже, единственая программа, которая может конвертировать WAV->MMF.
Но она не работает из командной строки, у нее нет меню, она не работат в пакетном режиме.
Для того чтоб сконвертировать WAV в MMF надо схватить WAV-файл мышкой,
перетащить и бросить его на маленькое, красивенькое окошко этой программы.

Можно ли с помощью AutoIt проделать такую операцию?
То есть "взять некий WAV-файл мышкой" и "кинуть его на окошко этой проги"
(в перспективе взять по-очереди в цикле все файлы с расширением WAV
и покидать их на окошко программы)

Реализуемо ли это в рамках Auto-It?
или вообще как-нибудь, кроме как вручную.

спасибо.

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

Отправлено: 01:19, 12-02-2007 | #184


Googler


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

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


i_mihal
обычно перетаскивание можно заменить на копировать/вставить через буфер обмена...

Отправлено: 06:36, 12-02-2007 | #185


Googler


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

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


Чтение параметров локализации средствами API:
Код: Выделить весь код
$sys = DllCall ("kernel32.dll", "int", "GetSystemDefaultLCID")
$usr = DllCall ("kernel32.dll", "int", "GetUserDefaultLCID")
MsgBox (0,'Default locale ID','Пользователи: ' & @TAB & @TAB & $usr[0] & @CRLF & _
    'Системные службы: ' & @TAB  & $sys[0])

Отправлено: 07:05, 12-02-2007 | #186


Аватара для Creat0R

Must AutoIt


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

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


Написал давно желанную функцию, но она работает как бы наполовину - она должна заменять стандартную функцию FileSelectFolder, но проблема в том, что у меня не получается - А) либо создать все вкладки (в TreeView) для всех существующих папок (это также займёт кучу времени на их генерацию), Б) либо создавать их “находу” (т.е в момент вызова/раскрытия той или иной вкладки) - в принципе, проблема со вторым вариантом такая - нужно узнать как очистить одну выделенную вкладку от её подвкладок (не удаляя её саму).
Для чего нужна такая функция? во-первых для того чтобы можно было прикреплять это окно к другому приложению (или к родительскому гуи) - эта одна из основных причин (даже самая) - далее можно также используя подобную функцию, просто создавать это окно с разными размерами, с разными кнопками и возвращаемой информацией, также будет возможность задать этому окну атрибут “поверх всех окон” и т.д и т.п...

Вот в принципе сам скрипт с примером:

Код: Выделить весь код
#include <GUIConstants.au3>
#include <GUITreeView.au3>
#include <File.au3>

$Parent = GUICreate("test", 200, 200)
$Select = GUICtrlCreateButton("Select", 50, 50)

GUISetState()

While 1
	$Msg = GUIGetMsg()
	If $Msg = -3 Then ExitLoop
	If $Msg = $Select Then
		GUISetState(@SW_DISABLE)
		$Path = _FileSelectFolder("Select Folder", "Choose needed Path:", 300, 300, 1, $Parent)
		If Not @error Then MsgBox(64, "Path", "The selected path is: <" & $Path & ">")
		GUISetState(@SW_RESTORE)
		GUISetState(@SW_ENABLE)
	EndIf
WEnd

GUIDelete()

Func _FileSelectFolder($Title, $Dialog_Text, $Width=300, $Heght=300, $OnTop=0, $Hwnd="")
	Opt("GuiOnEventMode", 1)
	Global $IsExit = 0, $IsCancel = 0, $PathInput, $MainTreeViewID, $TOPMOST
	If $OnTop = 1 Then $OnTop = 8
	GUICreate($Title, $Width, $Heght, -1, -1, $WS_SYSMENU+$WS_CAPTION+$WS_SIZEBOX, $WS_EX_CONTEXTHELP+$OnTop, $Hwnd)
	GUISetOnEvent(-3, "Cancel")
	
	GUICtrlCreateLabel($Dialog_Text, 10, 5)

	$ButtonOK = GUICtrlCreateButton("OK", $Width-180, $Heght-25, 70, 20)
	GUICtrlSetOnEvent(-1, "OK")
	
	$ButtonCancel = GUICtrlCreateButton("Cancel", $Width-80, $Heght-25, 70, 20)
	GUICtrlSetOnEvent(-1, "Cancel")
	
	$PathInput = GUICtrlCreateInput("", 10, $Heght-50, $Width-20)

	$MainTreeViewID = GUICtrlCreateTreeView(10, 30, $Width-20, $Heght-90, BitOr($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE)

	GUISetState()

	$DrivesArr = _DrivesListToArray("all")
	If IsArray($DrivesArr) Then
		Dim $MainDriveID[$DrivesArr[0]+1], $CurrentIcon, $CurrentIcID
		For $i = 1 To $DrivesArr[0]
			$CurrentDrive = $DrivesArr[$i]
			If $CurrentDrive <> "a:" And $CurrentDrive <> "b:" Then
				$CurrentIcon = $CurrentDrive & "\" & IniRead($CurrentDrive & "\Autorun.inf", "Autorun", "Icon", "")
				$CurrentIcID = 0
			EndIf
			If Not FileExists($CurrentIcon) Then
				$CurrentIcon = "shell32.dll"
				$CurrentIcID = 8
			EndIf
			$MainDriveID[$i] = GUICtrlCreateTreeViewItem(StringUpper($CurrentDrive) & "\", $MainTreeViewID)
			GUICtrlSetOnEvent(-1, "GetText")
			
			If $CurrentDrive = "a:" Or $CurrentDrive = "b:" Then
				GUICtrlSetImage(-1, "shell32.dll", 6, 0)
			ElseIf DriveGetType($CurrentDrive) = "CDROM" Then
				GUICtrlSetImage(-1, "shell32.dll", 11, -1)
			Else
				GUICtrlSetImage(-1, StringStripWS($CurrentIcon, 3), $CurrentIcID, -1)
			EndIf
			
			If $CurrentDrive <> "a:" And $CurrentDrive <> "b:" Then
				$DirsArr = _FileListToArray($CurrentDrive, "*", 2)
				If IsArray($DirsArr) Then
					For $j = 1 To $DirsArr[0]
						$CurrentDir = $DirsArr[$j]
						GUICtrlCreateTreeViewItem($CurrentDir, $MainDriveID[$i])
						GUICtrlSetOnEvent(-1, "GetText")
						_GUICtrlTreeViewSetIcon($MainTreeViewID, -1, "shell32.dll", 4)
					Next
				EndIf
			EndIf
		Next
	EndIf

	While $IsExit = 0
		Sleep(10)
	WEnd
	$Path = StringReplace(_GUICtrlTreeViewGetTree($MainTreeViewID, "\"), "\\", "\")
	GUIDelete()
	Opt("GuiOnEventMode", 0)
	If $IsCancel = 1 Then
		SetError(1)
		Return ""
	Else
		Return $Path
	EndIf
EndFunc

Func GetText()
	GUICtrlSetData($PathInput, GUICtrlRead(@GUI_CtrlId, 1))
EndFunc

Func OK()
	Global $IsExit = 1
EndFunc

Func Cancel()
	Global $IsExit = 1, $IsCancel = 1
EndFunc

Func Quit()
	Exit
EndFunc

Func _DrivesListToArray($Type)
	$DrivesArr = DriveGetDrive($Type)
	If IsArray($DrivesArr) Then
		Dim $DrivesListArr[$DrivesArr[0]+1]
		$DrivesListArr[0] = $DrivesArr[0]
		For $iDrive = 1 To $DrivesArr[0]
			$CurrentDrive = $DrivesArr[$iDrive]
			$DrivesListArr[$iDrive] = $CurrentDrive
		Next
	EndIf
	Return $DrivesListArr
EndFunc
И ещё хотелось бы сделать чтобы можно было задать при вызове функции исходную папку (Init Dir) - но увы я только сегодня начал разбирать основы TreeView, и поэтому не знаю как заставить раскрыться вкладкам на том месте где находится указанное имя (т.е имя вкладки).

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

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

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


Отправлено: 10:59, 12-02-2007 | #187


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


Автор проектов


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

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


Вопрос знатокам.
А можно ли как-нибудь "раскомпилировать" .exe файл обратно в .au3?

Отправлено: 21:42, 12-02-2007 | #188


Аватара для Creat0R

Must AutoIt


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

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


biggreeder
Цитата:
можно ли как-нибудь "раскомпилировать" .exe файл обратно в .au3?
Посмотри в папке с установленным AutoIt'ом - C:\Program Files\AutoIt3\Extras\Exe2Aut - но этолько если в момент компилляции опция позволяющая декомпилировать была утановлена, а также если был задан пароль, то без него никак не декомпилировать.

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

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

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

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

Отправлено: 22:39, 12-02-2007 | #189


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


Автор проектов


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

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


Creat0R
Спасибо, дружище. Выручил. Винт накрылся. Думал пропали все мои скрипты (на диск записывал только exe-файлы)

Отправлено: 23:52, 12-02-2007 | #190



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




 
Переход