|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 1.3] AutoIt скрипты |
|
[Архив - Часть 1.3] AutoIt скрипты
|
Старожил Сообщения: 250 |
Внимание! Тема переведена в архивное состояние (настоятельно рекомендуется к прочтению/поиску) Руководство к действию по работе 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 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать mrak1990
Цитата:
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "ShowSuperHidden", "REG_DWORD", 1) ;если 0, тогда файлы будут показываться. ![]() Цитата:
|
||
------- Отправлено: 21:12, 26-04-2007 | #331 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 387
|
Профиль | Отправить PM | Цитировать Задача - запуск и работа 1с с конкретной конфигурацией с флэш-диска на любом компьютере.
Платформа + база находятся на флэш. Т.е подключив флэшку и запустив 1с с нее же, загружалась нужная конфигурация. Чтобы 1с видел базы пути к ним должны быть прописаны пути в реестре. Я могу написать bat, au3 файл который вносил бы соотв. записи в реестр, но в путях к базам нужно указать букву диска. Проблема в том, что компьютеры разные, соответственно флэш-диск будет иметь разные буквы в системе. Как можно поэлегантнее реализовать? |
Отправлено: 10:11, 27-04-2007 | #332 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать qeraser
для BAT подстановка %~d0 возвращает букву диска, откуда запущен скрипт для AU3 выражение StringLeft (@ScriptDir, 2) работает аналогично |
Отправлено: 11:12, 27-04-2007 | #333 |
Старожил Сообщения: 387
|
Профиль | Отправить PM | Цитировать amel27
Спасибо, разобрался ![]() |
Отправлено: 11:49, 27-04-2007 | #334 |
![]() Ветеран Сообщения: 753
|
Профиль | Отправить PM | Цитировать Как определить - есть ли на диске свободных 1 гиг, если есть то вывести сообщений №1, если нет-вывести сообщение №2?!
amel27 А возможно чтобы обновления записывальсь в текстовый файл? где изменения сделать? |
Последний раз редактировалось TERMINAL, 27-04-2007 в 14:00. Отправлено: 13:47, 27-04-2007 | #335 |
Новый участник Сообщения: 38
|
Профиль | Отправить PM | Цитировать Цитата:
http://foxpopuli.narod.ru/books/api_help.zip |
|
Отправлено: 14:51, 27-04-2007 | #336 |
Новый участник Сообщения: 38
|
Профиль | Отправить PM | Цитировать Creat0R
Func UpdateExplorer() Local $WinExpListArr = _ExplWinGetList() Local $OldOpt = Opt("WinTitleMatchMode", 4) Local $GetWinState, $Hwnd If IsArray($WinExpListArr) Then For $iWin = 1 To $WinExpListArr[0] $GetWinState = WinGetState($WinExpListArr[$iWin]) $Hwnd = WinGetHandle($WinExpListArr[$iWin]) DllCall("user32.dll", "long", "SendMessage", "hwnd", $hWnd, "int", 0x111, "int", 28931, "int", 0) Next EndIf $Hwnd = WinGetHandle("classname=Progman") DllCall("user32.dll", "long", "SendMessage", "hwnd", $hWnd, "int", 0x111, "int", 28931, "int", 0) Opt("WinTitleMatchMode", $OldOpt) EndFunc Func _ExplWinGetList() Local $OldOpt = Opt("WinTitleMatchMode", 4) Local $WinList = WinList("classname=CabinetWClass") Opt("WinTitleMatchMode", $OldOpt) If IsArray($WinList) Then Local $WinListArr[$WinList[0][0]+1] For $iW = 1 To $WinList[0][0] $WinListArr[$iW] = $WinList[$iW][0] Next $WinListArr[0] = $WinList[0][0] Return $WinListArr Else Return "" EndIf EndFunc |
Отправлено: 15:49, 27-04-2007 | #337 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать TERMINAL
Цитата:
$CD = "C:\" $FreeSpace = DriveSpaceFree($CD) If $FreeSpace >= 1024 Then MsgBox(64, "", "Ok, есть на диске <" & $CD & "> " & $FreeSpace & " мб свободного места.") Else MsgBox(48, "", "На диске <" & $CD & "> не хватает свободного места (" & $FreeSpace & " мб).") EndIf Цитата:
Цитата:
Первая функция ( UpdateExplorer() ), в начале использует вторую ( _ExplWinGetList() ), чтобы получить список заголовок всех окон которые являются папками (мы же не хотим обновлять к примеру Internet Explorer ![]() Затем для каждого найденого окна (из полученного списка в массиве), происходит обновление (это делает вызов Dll), всё это в принципе для одной цели - обновить программно все открытые эксплореровские окна (в том числе и рабочий стол), не активируя их и не используя никаких посылании клавишь типа F5 ![]() |
|||
------- Отправлено: 17:49, 27-04-2007 | #338 |
Новый участник Сообщения: 38
|
Профиль | Отправить PM | Цитировать Creat0R
Остался один вопрос. Для чего ты вызываешь два раза функцию DllCall? Один раз для папок, а другой для рабочего стола? |
Отправлено: 17:53, 27-04-2007 | #339 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать mrak1990
Цитата:
![]() И ещё, $GetWinState = WinGetState($WinExpListArr[$iWin]) там уже лишнее, это раньше у меня не получалось напрямую обновлять окна, поэтому приходилось активировать их, посылать им обновление, и затем возвращать окно в исходное положение (свёрнутое/развёрнутое, активное/не активное). Вот обновил функции, теперь список всех окон возвращается средствами функции _ExplWinGetList(), а также убрал лишние строчки: Func UpdateExplorer() Local $OldOpt = Opt("WinTitleMatchMode", 4) Local $WinExpListArr = _ExplWinGetList() Local $Hwnd If IsArray($WinExpListArr) Then For $iWin = 1 To $WinExpListArr[0] $Hwnd = WinGetHandle($WinExpListArr[$iWin]) DllCall("user32.dll", "long", "SendMessage", "hwnd", $hWnd, "int", 0x111, "int", 28931, "int", 0) Next EndIf Opt("WinTitleMatchMode", $OldOpt) EndFunc Func _ExplWinGetList() Local $WinList = WinList("classname=CabinetWClass") If IsArray($WinList) Then Local $WinListArr[$WinList[0][0]+2] For $iW = 1 To $WinList[0][0] $WinListArr[$iW] = $WinList[$iW][0] Next $WinListArr[0] = $WinList[0][0]+1 $WinListArr[$WinListArr[0]] = "classname=Progman" Return $WinListArr Else Return "" EndIf EndFunc |
|
------- Последний раз редактировалось Creat0R, 27-04-2007 в 18:17. Отправлено: 18:10, 27-04-2007 | #340 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 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 |
|