|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 1.3] AutoIt скрипты |
|
[Архив - Часть 1.3] AutoIt скрипты
|
Старожил Сообщения: 250 |
Профиль | Отправить PM | Цитировать
Внимание! Тема переведена в архивное состояние (настоятельно рекомендуется к прочтению/поиску) Руководство к действию по работе 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 |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать Цитата:
координаты конкретной иконки будут однозначно отличаться !?... Вопрос № 2. Как определить какая в текущий момент раскладка клавиатуры RU or EN и как переключать раскладку клавиатуры, не применяя эмуляцию нажатия клавиш ? Наверняка не сложный вопрос, просто нет времени разбираться. Извините, если эти вопросы уже обсуждались в форуме. Хочется услышать именно ответы. Спасибо. |
|
Отправлено: 18:20, 20-01-2007 | #151 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
AutoIt, AutoIt3, AutoIt3Help, и наконец UDFs3 - (User Defined Function). В первых трёх, есть описания этих команд (у меня). Цитата:
Цитата:
|
|||
Отправлено: 09:53, 21-01-2007 | #152 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Respect
Цитата:
Цитата:
Diamond Цитата:
Цитата:
Цитата:
@echo off Set Dir=c:\D If Not Exist "%Dir%" Goto ExitMsg Attrib %Dir% > "%temp%\~6456t56iu.tmp" For /f "delims= " %%a in (%temp%\~6456t56iu.tmp) Do If /i %%a==%Dir% ( Echo "%Dir%" Is a folder! ---^> Exit in 7 seconds ;-^) ) Else ( Echo "%Dir%" Is Not a folder! ---^> Exit in 7 seconds ;-^) ) Goto Exit :ExitMsg Echo This file ^<%Dir%^> was not found ---^> Exit in 7 seconds ;-) :Exit ping -n 7 localhost > nul Del "%temp%\~6456t56iu.tmp" |
|||||
------- Отправлено: 05:06, 22-01-2007 | #153 |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать Вопрос:
Можно ли как-то заставить GUI, игнорировать (установленый в системе по умолчанию) стиль Windows XP. Т.е чтобы окно отбражалось в классическом виде (как в 98-м) не зависимо от системного стиля? Второй вопрос: Сущесвует ли какой нибудь простой способ претаскивания окна стиля $WS_POPUP или это возможно только за счёт слежения за позицией курсора? Кому нибудь уже удавалось двигать такое окно с помощью мыши? Я написал код, окно двигается без проблем, только вот я не уверен что это правильный способ. #include <Guiconstants.au3> Opt("GUIOnEventMode",1) $test=GUICreate("",400,300,-1,-1,$WS_POPUP+$WS_BORDER) GUISetBkColor(0xBEFFBE) GUISetOnEvent($GUI_EVENT_CLOSE,"ExitGui") $Closed_button=GUICtrlCreateButton("X",377,3,18,18) GUICtrlSetFont(-1,10,700,0,"Tahoma") GUICtrlSetOnEvent(-1,"ExitGui") $Mim_button=GUICtrlCreateButton("-",337,3,18,18) GUICtrlSetFont(-1,13,700,0,"Arial Black") GUICtrlSetOnEvent(-1,"MimimizeGui") $Max_button=GUICtrlCreateButton(CHR(152),357,3,18,18) GUICtrlSetFont(-1,9,700,0,"Tahoma") GUICtrlSetState(-1,$GUI_DISABLE) $panel=GUICtrlCreateGraphic(0,0,400,24) GUICtrlSetOnEvent(-1,"MoveWindow") $text=GUICtrlCreateLabel("TEST",5,5,100,18) GUICtrlSetFont(-1,12,700,0,"Courier New") GUICtrlSetColor(-1,0xBEFFBE) GUICtrlSetBkColor(-1,0x000000) DllCall("User32.dll","long","AnimateWindow","hwnd",$test,"long",300,"long",0x10) GUICtrlSetBkColor($panel,0x000000) GUISetState() While 1 Sleep(100) WEnd Func MoveWindow() Opt("GUIOnEventMode",0) $Win=WinGetPos("") $Mouse=MouseGetPos() $fix_X=$Mouse[0]-$Win[0] $fix_Y=$Mouse[1]-$Win[1] Do $msg=GUIGetMsg() $move=MouseGetPos() $x=$move[0]-$fix_X $y=$move[1]-$fix_Y WinMove("","",$x,$y) Until $msg=$GUI_EVENT_PRIMARYUP Opt("GUIOnEventMode",1) EndFunc Func MimimizeGui() GUISetState(@SW_MINIMIZE) EndFunc Func ExitGui() DllCall("User32.dll","long","AnimateWindow","hwnd",$test,"long",300,"long",0x10+0x10000) Exit EndFunc Цитата:
Цитата:
|
||
Отправлено: 12:16, 22-01-2007 | #154 |
Старожил Сообщения: 282
|
Профиль | Отправить PM | Цитировать Хочется узнать, как бы сделать так, чтоб скрипт искал файл qip.exe во
всём каталоге Program Files, и если таковой найдется - возвратил бы тот каталог, в котором он лежит и запихнул бы в реестр полный путь к катлогу (не к файлу). Это вообще осуществимо? Заранее спасибо! |
Отправлено: 18:24, 22-01-2007 | #155 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Diamond
Цитата:
Цитата:
#include <Guiconstants.au3> Opt("GUIOnEventMode",1) $test=GUICreate("",400,300,-1,-1,$WS_POPUP+$WS_BORDER) GUISetBkColor(0xBEFFBE) GUISetOnEvent($GUI_EVENT_CLOSE,"ExitGui") $Closed_button=GUICtrlCreateButton("X",377,4,18,18) GUICtrlSetFont(-1,10,700,0,"Tahoma") GUICtrlSetOnEvent(-1,"ExitGui") $Mim_button=GUICtrlCreateButton("-",337,4,18,18) GUICtrlSetFont(-1,13,700,0,"Arial Black") GUICtrlSetOnEvent(-1,"MimimizeGui") $Max_button=GUICtrlCreateButton(CHR(152),357,4,18,18) GUICtrlSetFont(-1,9,700,0,"Tahoma") GUICtrlSetState(-1,$GUI_DISABLE) $text=GUICtrlCreateLabel("Manual GUI Drag",5,5,325,18, $SS_Center, $GUI_WS_EX_PARENTDRAG) GUICtrlSetFont(-1,12,700,0,"Courier New") GUICtrlSetColor(-1,0xBEFFBE) GUICtrlSetBkColor(-1,0x000000) DllCall("User32.dll","long","AnimateWindow","hwnd",$test,"long",300,"long",0x10) GUISetState() While 1 Sleep(100) WEnd Func MimimizeGui() GUISetState(@SW_MINIMIZE) EndFunc Func ExitGui() DllCall("User32.dll","long","AnimateWindow","hwnd",$test,"long",300,"long",0x10+0x10000) Exit EndFunc Цитата:
|
|||
Последний раз редактировалось Creat0R, 23-01-2007 в 06:49. Отправлено: 00:41, 23-01-2007 | #156 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать DenchikK
Цитата:
#include <File.au3> #include <Array.au3> $PathForSearch = @ProgramFilesDir $FileToFind = "Qip.exe" $RegKey = "HKEY_CURRENT_USER\Software\QIP" $RegValueName = "Path" ProgressOn("Please wait...", "Getting Folders Structure...", $PathForSearch, -1, -1, 16) $SearchResults = _FileFind($PathForSearch, $FileToFind) ProgressOff() If $SearchResults <> -1 Then RegWrite($RegKey, $RegValueName, "REG_SZ", $SearchResults) MsgBox(262144+64, "Done!", "File <" & $FileToFind & "> was found in this path <" & $SearchResults & ">, and the path was writen to registry key <" & $RegKey & "> under <" & $RegValueName & "> valuename.") Else MsgBox(262144+48, "Attention!", "File <" & $FileToFind & "> was not found on <" & $PathForSearch & "> and it subfolders." & @CR & @CR & "OK ---> EXIT") EndIf Func _FileFind($Path, $FileToFind) Local $RetPath = $Path If FileExists($Path & "\" & $FileToFind) Then Return $Path $SubFoldersArr = _DirListToArray($Path) If IsArray($SubFoldersArr) Then $PrgrsDelim = 100 / $SubFoldersArr[0] $Prgrrs = $PrgrsDelim ProgressSet($Prgrrs, $Path, "Search for <" & $FileToFind & "> is in process...") For $iF = 1 To $SubFoldersArr[0] ProgressSet($Prgrrs, $SubFoldersArr[$iF]) $Prgrrs = $Prgrrs + $PrgrsDelim If FileExists($SubFoldersArr[$iF] & "\" & $FileToFind) Then $RetPath = $SubFoldersArr[$iF] ExitLoop EndIf Next EndIf If $RetPath <> $Path Then Return $RetPath Else Return -1 EndIf EndFunc Func _DirListToArray ($sPath) Local $i, $j, $rlist[1]=[0], $blist, $alist=_FileListToArray ($sPath, '*', 2) If IsArray ($alist) Then For $i=1 To $alist [0] _ArrayAdd ($rlist, $sPath & "\" & $alist [$i]) $blist = _DirListToArray ($sPath & "\" & $alist [$i]) If $blist[0] > 0 Then $PrgrsDelim = 100 / ($blist[0] + $alist[0]) $Prgrrs = $PrgrsDelim For $j=1 To $blist[0] ProgressSet($Prgrrs, $blist[$j]) $Prgrrs = $Prgrrs + $PrgrsDelim _ArrayAdd ($rlist, $blist[$j]) Next EndIf Next EndIf $rlist [0] = UBound ($rlist) - 1 Return $rlist EndFunc |
|
------- Последний раз редактировалось Creat0R, 23-01-2007 в 06:46. Причина: Поправка кода Отправлено: 01:06, 23-01-2007 | #157 |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать DenchikK
Creat0R К сожалению, а может и к радости, мне не удалось найти уже готового решения и я решил написать функцию поиска сам. А сейчас захожу на форум и, вот тебе раз, опоздал... Ну да ладно... как вам такой вариант, вроде бы тоже ничего? P.S. Есть ещё перебор через VBScript с помощью ObjCreate(). Если интересно - выложу. $ret = find(@ProgramFilesDir,"qip.exe") If Not $ret=0 Then MsgBox(0,"",$ret) ; Записываем значение $ret в реестр... Else MsgBox(0,"","Файл не найден.") EndIf ;================================= ; $Path - Путь поиска. ( Не должен заканчиваться слэшем!!! ) ; $FileName - Имя искомого файла. ; Возвращает полный путь к каталогу (не к файлу), если файл осутствует возвращает 0 Func find($Path,$FileName) If Not IsDeclared("GetPath") Then Global $GetPath=0 EndIf $ModPath=$Path & "\*" ; Формирую строку поиска (толко для инициализации) $file=FileFindFirstFile($ModPath) ; Инициализация поиска While 1 $get=FileFindNextFile($file) ; Поиск... If @error Then ExitLoop $string=$Path & "\" & $get ; Формирую новый путь If Not StringInStr(FileGetAttrib($string),"D") Then ;Если не является папкой тогда: If $get=$FileName Then $GetPath=$Path ExitLoop EndIf Else find($string,$FileName) ; Запуск подфункции для поиска в подпапке EndIf WEnd FileClose($file) ;Завершение инициализации Return $GetPath EndFunc |
Последний раз редактировалось Diamond, 24-01-2007 в 02:51. Причина: Исправление кода Отправлено: 05:31, 23-01-2007 | #158 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Такой вопрос:
-Возможно ли получить иконку из файла, в случае если расширение файла не зарегистрированно в системе? Т.е мне нужно сделать GuiCtrlSetImage(), и указать так, чтобы та иконка которая отображается на файле, была считана для контроля ($CtrlID). К примеру, есть файл Program.exe, известно что далеко не все исполняемые файлы (и другие) содержат иконку, и нужно каким то образом определить, содержит ли этот файл иконку, если не содержит, то естественно путь к иконке можно указать к Shell32.dll, 2 (где 2 это ID иконки для екзешников не содержащих иконки), если содержит, то к самому файлу, и как ID ставить 0. А если файл не исполняемы, то можно по расширению читать из реестра путь к иконке. Вобщем-то сам вопрос - Как узнать, содержит ли файл иконку? и по возможности, получить путь к иконке для не зарегистрированных типов файлов. |
------- Отправлено: 05:47, 23-01-2007 | #159 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Diamond
Цитата:
Правда есть пару минусов - нет возможности заранее получить общее количество найденых папок (для точного подсчёта прогрессбара, или вывода прочей информации), также нельзя искать по маске, или ставить случайно слеш после пути . Но в данном случае, если требуется произвести исключительно поиск, то этот (твой) вариант идеальный! P.S. Немного изменил гуи для перетаскивания, и код для поиска (там в самой функции случайно указал \qip.exe ). |
|
Последний раз редактировалось Creat0R, 23-01-2007 в 06:53. Отправлено: 06:38, 23-01-2007 | #160 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 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 |
|