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

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

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

Ветеран


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

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


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





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


Руководство к действию по работе c AutoIt.
Можно ли с помощью AutoIt выбрать каталог? Хочу нацарапать оболочку, которая мне будет конфиги для nnBackup писать, дык выбрать каталог для бэкапа пока только вручную получается... Нельзя ли как-нть вывалить стандартный диалог по выбору файлов-папок, и получить из него результат действий пользователей?

-------
Tega AutoPatcher. Все обновления для XP в одном пакете. http://tega.ru/dirk/links.html


Отправлено: 10:47, 10-02-2006

 

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


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

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


XXXler

Спасиба!

Отправлено: 17:22, 21-08-2006 | #311



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

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


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


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

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


А вот кстати как это будет на COM.
Особо не разбирался в возможностях просто транслировал пример из MSDN.
Не уверен что будет работать до WinXP_SP2, но стоит проверить.
Код: Выделить весь код
;Firewall Adding an Application
;Set constants
Const $NET_FW_PROFILE_DOMAIN = 0
Const $NET_FW_PROFILE_STANDARD = 1
;Scope
Const $NET_FW_SCOPE_ALL = 0
;IP Version – ANY is the only allowable setting for now
Const $NET_FW_IP_VERSION_ANY = 2

;Create the firewall manager object.
$ObjfwMgr = ObjCreate("HNetCfg.FwMgr")
;Get the current profile for the local firewall policy.
$Profile = $ObjfwMgr.LocalPolicy.CurrentProfile

$App = ObjCreate("HNetCfg.FwAuthorizedApplication")
$App.ProcessImageFileName = @ProgramFilesDir&"\PowerDVD\PowerDVD.exe" ;Путь
$App.Name = "PowerDVD" ;Имя как будет значиться в списке исключений
;Use either Scope or RemoteAddresses, but not both !!!!!! (Если не понятно лучше не трогать)
$App.Scope = $NET_FW_SCOPE_ALL
;$App.RemoteAddresses = "*"
$App.IpVersion = $NET_FW_IP_VERSION_ANY
$App.Enabled = TRUE ; TRUE - Галочка стоит, FALSE - Галочка снята
$Profile.AuthorizedApplications.Add($App)

Последний раз редактировалось ANGRO, 22-08-2006 в 13:14.


Отправлено: 20:08, 21-08-2006 | #312


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


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

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


Рабочий вариант:
Код: Выделить весь код
Select
		Case @OSVersion='WIN_XP' and @OSServicePack='Service Pack 2'
			RunWait('netsh firewall add allowedprogram program="'&@ProgramFilesDir&'\InterVideo\DVD7\WinDVD.exe" name=WinDVD7 profile=ALL mode=ENABLE ','',@SW_HIDE )
		Case @OSVersion='WIN_2003' and @OSServicePack='Service Pack 1'
			RunWait('netsh firewall add allowedprogram program="'&@ProgramFilesDir&'\InterVideo\DVD7\WinDVD.exe" name=WinDVD7 profile=ALL mode=ENABLE ','',@SW_HIDE  )
EndSelect

Последний раз редактировалось sattva, 22-08-2006 в 20:01.


Отправлено: 00:21, 22-08-2006 | #313


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


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

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


Нужен скрипт который бы сканировал текущий каталог и выводил в результате все подпапки, вот что у меня вышло
Код: Выделить весь код
;--------------------------------------Start Dir----------------------------------------
$searchdir = (@ScriptDir & "\")
$search = FileFindFirstFile($searchdir & "*")  
$dirtot = 0
$i1 = 0

While 1
If $search = -1 Then ExitLoop
	$file = FileFindNextFile($search) 
	If @error Then ExitLoop


$fs1 = StringReplace($file, ".", "-")
if @extended = 0 Then
$i1 = $i1 + 1
Assign ( "dirA" & $i1 , $searchdir & $file , 2)
$dirtot = $dirtot + 1
Assign ( "dirtot" & $dirtot , $searchdir & $file , 2)
EndIf
WEnd
FileClose($search)
;---------------------------------------------------------------------------------------



$is = $i1
$i1 = 0
For $i = 1 TO $is


$var = Eval( "dirA" & $i)
$searchdir = ( $var & "\") 

    
$search = FileFindFirstFile($searchdir & "*")
 
While 1
If $search = -1 Then ExitLoop
	$file = FileFindNextFile($search) 
	If @error Then ExitLoop


$fs1 = StringReplace($file, ".", "-")
if @extended = 0 Then
$i1 = $i1 + 1
Assign ( "dirB" & $i1 , $searchdir & $file , 2)
$dirtot = $dirtot + 1
Assign ( "dirtot" & $dirtot , $searchdir & $file , 2)
EndIf
WEnd
FileClose($search)


Next 

;---------------------------------------------------------------------------------------


$is = $i1
$i1 = 0
For $i = 1 TO $is


$var = Eval( "dirB" & $i)
$searchdir = ( $var & "\") 

    
$search = FileFindFirstFile($searchdir & "*") 
 
While 1
If $search = -1 Then ExitLoop
	$file = FileFindNextFile($search) 
	If @error Then ExitLoop


$fs1 = StringReplace($file, ".", "-")
if @extended = 0 Then
$i1 = $i1 + 1
Assign ( "dirC" & $i1 , $searchdir & $file , 2)
$dirtot = $dirtot + 1
Assign ( "dirtot" & $dirtot , $searchdir & $file , 2)
EndIf
WEnd
FileClose($search)


Next 

;---------------------------------------------------------------------------------------

$is = $i1
$i1 = 0
For $i = 1 TO $is


$var = Eval( "dirC" & $i)
$searchdir = ( $var & "\") 

    
$search = FileFindFirstFile($searchdir & "*") 
 
While 1
If $search = -1 Then ExitLoop
	$file = FileFindNextFile($search) 
	If @error Then ExitLoop


$fs1 = StringReplace($file, ".", "-")
if @extended = 0 Then
$i1 = $i1 + 1
Assign ( "dirD" & $i1 , $searchdir & $file , 2)
$dirtot = $dirtot + 1
Assign ( "dirtot" & $dirtot , $searchdir & $file , 2)
EndIf
WEnd
FileClose($search)


Next 






$swar = ("")
$i1 = 0
For $i = 1 TO $dirtot

$var = Eval( "dirtot" & $i)
$swar = ($swar & $var & "; ")
Next 
FileWrite("test.txt", $swar)
Как его можно оптимизировать чтобы он сканировал все папки независимо от уровня вложений?

-------
весь Unattended Soft на http://unattended.org.ua


Отправлено: 11:01, 22-08-2006 | #314


Googler


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

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


bodro
интересно чем не устраивает DIR?
Код: Выделить весь код
DIR /AD /S /B >test.txt
хотя можно и AutoIT-ом, что-нибудь типа:
Код: Выделить весь код
$root="C:"
DirList ($root,"test.txt")

Func DirList ($root,$file)
	$search = FileFindFirstFile($root & "\*.*")
	While 1
		$dir = FileFindNextFile($search) 
		If @error Then ExitLoop
		$dir =$root & "\" & $dir
		If FileExists($dir & "\") Then
			FileWriteLine($file,$dir)
			DirList ($dir,$file)
		EndIf
	WEnd
	FileClose($search)
	Return 0
EndFunc
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:57, 22-08-2006 | #315


Ветеран


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

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


конечно, синтаксическая ошибка. внимательнее надо быть, у Вас апостроф вместо & .

-------
Tega AutoPatcher. Все обновления для XP в одном пакете. http://tega.ru/dirk/links.html


Отправлено: 13:09, 22-08-2006 | #316


Аватара для XXXler

Ветеран


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

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


Код: Выделить весь код
;~ Функция вывода структуры каталогов
Func ParceDir($Path)
	Local $Pathes[2],$i,$Folders,$Str
	$Pathes[0]=1
	$Pathes[1]=$Path
	While $i<$Pathes[0]
		$i=$i+1
		$Folders=FileFindFirstFile($Pathes[$i]&"\*")
		If $Folders=-1 Then ContinueLoop
		While 1
			$Str=FileFindNextFile($Folders)
			If @error Then ExitLoop
			If $Str="." Or $Str=".." Then ContinueLoop
			$Str=$Pathes[$i]&"\"&$Str
			If StringInStr(FileGetAttrib($Str),"D")<>0 Then
				$Pathes[0]=$Pathes[0]+1
				ReDim $Pathes[$Pathes[0]+1]
				$Pathes[$Pathes[0]]=$Str
			EndIf
		WEnd
		FileClose($Folders)
	Wend
	Return $Pathes
EndFunc
Вызывается с полным путем к каталогу, возвращает одномерный массив, где [0] - количество каталогов, [x] - полный путь к каталогу
Есть минус - каталоги в массиве идут по вложенности (сначала верхний уровень, потом вложенные папки), да и быстродействие хромает...
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:12, 22-08-2006 | #317


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


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

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


спасибо DIR /AD /S /B >test.txt меня полностью удовлетворил

-------
весь Unattended Soft на http://unattended.org.ua


Отправлено: 19:15, 22-08-2006 | #318


Аватара для Creat0R

Must AutoIt


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

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


Такой вопрос - Как можно корректно, закрыть определённую программу (не убивать её процесс, а именно нормально закрыть). Эту программу не получается уловить через WinWaitActive, она находится в трее, а как из трея вызывать окно, я не знаю.

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

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

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

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:15, 24-08-2006 | #319


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


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

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


А ProcessClose разве его не корректно завершеает?
Кстати не нашел там ProcessKill

По поводу винампа попробуй
Код: Выделить весь код
AutoItSetOption("WinTitleMatchMode", 4)
WinClose("classname=Winamp v1.x", "")
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:32, 24-08-2006 | #320



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 1.2] 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.3] AutoIt скрипты biork AutoIt 503 09-06-2007 11:27
[Архив - Часть 1.1] AutoIt скрипты EgOrus AutoIt 335 04-02-2006 16:58




 
Переход