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

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

 

Аватара для Creat0R

Must AutoIt


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

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


mrak1990
Цитата:
Просто уменя не пашет через реестр одна из опций: Скрывать защищённые системные файлы.
Всё очень просто:

Код: Выделить весь код
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "ShowSuperHidden", "REG_DWORD", 1) ;если 0, тогда файлы будут показываться.
Если нужно обновить программно все папки и даже рабочий стол, см. мою утилитку для отката расширении файлов и скрытых папок тут (исходники естественно в архиве прилагаются ).

Цитата:
раскопал справочник по WinAPI
На русском? можно ссылку на источник?

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

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

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


Отправлено: 21:12, 26-04-2007 | #331



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

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


Аватара для qeraser

Старожил


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

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


Задача - запуск и работа 1с с конкретной конфигурацией с флэш-диска на любом компьютере.
Платформа + база находятся на флэш.
Т.е подключив флэшку и запустив 1с с нее же, загружалась нужная конфигурация.
Чтобы 1с видел базы пути к ним должны быть прописаны пути в реестре.

Я могу написать bat, au3 файл который вносил бы соотв. записи в реестр, но в путях к базам нужно указать букву диска. Проблема в том, что компьютеры разные, соответственно флэш-диск будет иметь разные буквы в системе.

Как можно поэлегантнее реализовать?

Отправлено: 10:11, 27-04-2007 | #332


Googler


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

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


qeraser

для BAT подстановка %~d0 возвращает букву диска, откуда запущен скрипт
для AU3 выражение StringLeft (@ScriptDir, 2) работает аналогично
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:12, 27-04-2007 | #333


Аватара для qeraser

Старожил


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

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


amel27
Спасибо, разобрался

Отправлено: 11:49, 27-04-2007 | #334


Аватара для TERMINAL

Ветеран


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

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


Как определить - есть ли на диске свободных 1 гиг, если есть то вывести сообщений №1, если нет-вывести сообщение №2?!

amel27
А возможно чтобы обновления записывальсь в текстовый файл?
где изменения сделать?

Последний раз редактировалось TERMINAL, 27-04-2007 в 14:00.


Отправлено: 13:47, 27-04-2007 | #335


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


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

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


Цитата:
На русском? можно ссылку на источник?
Без проблем:

http://foxpopuli.narod.ru/books/api_help.zip
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:51, 27-04-2007 | #336


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


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

Профиль | Отправить 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


Аватара для Creat0R

Must AutoIt


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

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


TERMINAL
Цитата:
Как определить - есть ли на диске свободных 1 гиг, если есть то вывести сообщений №1, если нет-вывести сообщение №2?!
Код: Выделить весь код
$CD = "C:\"
$FreeSpace = DriveSpaceFree($CD)
If $FreeSpace >= 1024 Then
    MsgBox(64, "", "Ok, есть на диске <" & $CD & "> " & $FreeSpace & " мб свободного места.")
Else
   MsgBox(48, "", "На диске <" & $CD & "> не хватает свободного места (" & $FreeSpace & " мб).")
EndIf
mrak1990

Цитата:
Без проблем:
Спасибо!

Цитата:
Можешь просто описать в общих чертах, как он работает?
Конечно...

Первая функция ( UpdateExplorer() ), в начале использует вторую ( _ExplWinGetList() ), чтобы получить список заголовок всех окон которые являются папками (мы же не хотим обновлять к примеру Internet Explorer ).
Затем для каждого найденого окна (из полученного списка в массиве), происходит обновление (это делает вызов Dll), всё это в принципе для одной цели - обновить программно все открытые эксплореровские окна (в том числе и рабочий стол), не активируя их и не используя никаких посылании клавишь типа F5 , а просто прямой вызов функции (для конкретного окна) обновления окна (та же функция которая выполняется Windows после нажатия F5).

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

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

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


Отправлено: 17:49, 27-04-2007 | #338


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


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

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


Creat0R
Остался один вопрос. Для чего ты вызываешь два раза функцию DllCall? Один раз для папок, а другой для рабочего стола?

Отправлено: 17:53, 27-04-2007 | #339


Аватара для Creat0R

Must AutoIt


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

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


mrak1990
Цитата:
Для чего ты вызываешь два раза функцию DllCall? Один раз для папок, а другой для рабочего стола?
Да, для рабочего стола класс заголовка окнка немного другой, поэтому получить его из списка одновременно не получается... хотя можно было конечно во второй функции добавить последний элемент в массив который содержал бы заголовок окна для рабочего стола, но так тоже нормально работает

И ещё, $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

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

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

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, 27-04-2007 в 18:17.

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

Отправлено: 18:10, 27-04-2007 | #340



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




 
Переход