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

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


Никак не могу разобраться со всем что связанно с кодировками...

При проверке на существование файла, если проверяемы путь в кодировке UTF-8, и содержит кериллицу (русские буквы), то файл не найден, перекодировать то можно, но что делать если заранее не известно какая будет кодировка (путь к примеру берётся из файла конфигурации)?

Можно ли написать функцию, которая будет определять кодировку строки?

А таже проблема с отображением кодировки в гуи, если язык в системе не русский и не английски, то ни одна функция не помагает нормально отобразить кириллицу. Есть функция _Utf8ToAnsi() (от amel27), но она тут не помагает (помагает если системный язык русский), есть также функция StringToUTF(), и она тоже не помагает... как сделать уникальное отображение кириллицы в гуи, чтобы на любом языке (установленном в системе), нормально всё отображалось?

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

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

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


Отправлено: 18:55, 15-01-2007 | #121



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

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


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


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

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


написал скрипт на AutoIt для установки Office 2000.
серийник там в SETUP.INI никак не задается,
поэтому серийный номер ввожу вот так:

Send('FXWX9QCJ4FGHCRYH9Y8FXQP6G')

но срабатывает это далеко не всегда. есть две проблемы:

1) если в винде язык по умолчанию - русский, то вместо латинских букв
скрипт вводит в поле ввода русские: АЧЦЧ9 ЙСО4А итд, то есть
те русские буквы, которые написаны на соответствующих клавишах.
2) иногда что-то протормаживает и вообще вводится мешанина из букв,
как будто из этой строки Send('FXWX9QCJ4FGHCRYH9Y8FXQP6G')
выбрали 7-9 букв, через каждые 2-3 буквы и разбавили их буквой "Ж",
которой вообще по-идее там быть не может, ведь она соответствует
на клавиатуре знаку ";"

сейчас попробую сделать ввод серийника с помощью ControlSetText,
но мне непонятно, почему так странно работает 'Send' если язык в винде
по умолчанию задан русский? может подскажет кто-нибудь?

спасибо.

p.s. с помощью 'ControlSetText' вроде получилось, хотя учитывая непонятность
работы 'Send' нет уверенности, что все и всегда будет работать корректно
пока работает...

Последний раз редактировалось i_mihal, 15-01-2007 в 20:49.


Отправлено: 20:41, 15-01-2007 | #122


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


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

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


i_mihal
Да, есть такая проблема... Я её решаю с помощью вставки из буфера обмена:
ClipPut("FXWX9QCJ4FGHCRYH9Y8FXQP6G")
Send("^м")
Цитата:
почему так странно работает 'Send'
Вопрос, скорее всего, относиться к разработчикам AutoIt.

Всем:
Оказывается, с помощью WinApi можно проделывать интересные манипуляции с окнами...
Анимация окон GUI, с помощью WinApi
Использование:
DllCall("User32.dll","long","AnimateWindow","hwnd",Идентификатор окна,"long",Продолжительность в миллисекундах,"long",Эффект)
Эффекты:
Эффекты имеет смысл задавать в качестве констант: Const $AW_ACTIVATE = 0x20000
AW_ACTIVATE = 0x20000 (Активирует окно, конфликтует с AW_HIDE)
AW_BLEND = 0x80000 (Постепенное исчезновение-появление)
AW_CENTER = 0x10 (Разворачивает окно из центра)
AW_HOR_POSITIVE = 0x1 (Слева направо)
AW_HOR_NEGATIVE = 0x2 (Справа налево)
AW_SLIDE = 0x40000 (Прокрутка)
AW_VER_POSITIVE = 0x4 (Сверху в низ)
AW_VER_NEGATIVE = 0x8 (Снизу в верх)
AW_HIDE = 0x10000 (Скрывает окно)
Эффекты по умолчанию ориентированны на появление окна, для скрытия окна используйте их совместно с AW_HIDE.
Можно получить интересные результаты комбинируя эффекты между собой. Например: 0x4 + 0x1 (анимация по диагонали)

Рабочий пример:
Код: Выделить весь код
#include <Guiconstants.au3>
Opt("GUIOnEventMode",1)
$test=GUICreate("WinApi_test",400,300)
GUISetOnEvent($GUI_EVENT_CLOSE,"ExitGui")
DllCall("User32.dll","long","AnimateWindow","hwnd",$test,"long",700,"long",0x8+0x40000)
GUISetState()

While 1
Sleep(100)
WEnd

Func ExitGui()
DllCall("User32.dll","long","AnimateWindow","hwnd",$test,"long",500,"long",0x10+0x10000)
Exit
EndFunc

Последний раз редактировалось Diamond, 15-01-2007 в 21:42. Причина: Два сообщения почему-то склеились вместе...

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

Отправлено: 21:34, 15-01-2007 | #123


Аватара для Creat0R

Must AutoIt


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

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


i_mihal
ControlCommand вроде будет всегда срабатывать:

Код: Выделить весь код
ControlCommand("Title", "", "Edit1", "EditPaste", "FXWX9QCJ4FGHCRYH9Y8FXQP6G")
На счёт Send(), решение для смены раскладки клавиатуры вроде есть в Faq'е (см. “Как с помощью AutoIt сменить раскладку клавиатуры”)

Diamond

Красиво! :UP: но рамка всего гуи как бы нарисованна, т.е углы не округлённые как должны быть в XP, даже немного затемнённые, это можно поправить?

P.S
Цитата:
Я её решаю с помощью вставки из буфера обмена
Это тоже не всегда надёжно, буфер обмена может неправильно отдавать текст (при вставке в него текста Аутоитом).

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

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

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


Отправлено: 23:04, 15-01-2007 | #124


Аватара для Creat0R

Must AutoIt


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

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



Оказывается, возможно привязать функцию _MsgBox() (от amel27), и любое окно гуи к другому окну (не обязательно к гуи)....

На мысль меня навёл пример из Faq'а о переключении раскладки клавиатуры (а именно, пременная $hWnd):


Код: Выделить весь код
Opt("WinTitleMatchMode", 4)
Run("notepad.exe")
$NotPadTitle = "classname=Notepad"

WinWait($NotPadTitle, "", 5)
$hWnd = WinGetHandle($NotPadTitle)

WinSetState($NotPadTitle, "", @SW_DISABLE)
GuiCreate("Attach To Window Gui", 300, 400, -1, -1, -1, -1, $hWnd)
GuiSetState()

$Msg = 0
While $Msg <> -3
    $Msg = GuiGetMsg()
    Sleep(10)
Wend

WinSetState($NotPadTitle, "", @SW_ENABLE)

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

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

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


Отправлено: 23:42, 15-01-2007 | #125


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


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

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


Creat0R
Цитата:
углы не округлённые как должны быть в XP
Я тоже заметил этот дефект. Честно говоря, не знаю... Других вариантов или комбинаций для "AnimateWindow" пока найти не удалось. Разве что попытаться использовать другие стили окна... Во ещё что: Если окно имеет тень, анимация может происходить "рывками".
Цитата:
буфер обмена может неправильно отдавать текст (при вставке в него текста Аутоитом)
Наверное имелось ввиду: "буфер обмена может неправильно принимать текст"? Насколько неправильно? При копировании-вставке обычного текста, у меня ошибок пока не случалось...
Спасибо, приму к сведению.

Отправлено: 01:25, 16-01-2007 | #126


Аватара для Creat0R

Must AutoIt


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

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


Diamond
Цитата:
Разве что попытаться использовать другие стили окна
Перепробовал почти все, один только справляется почти нормально с задачей - $WS_EX_TOOLWINDOW - но как известно, это не совсем обычное окно - но всё же неплохая вещь которую ты привёл в студию спасибо!

Цитата:
Наверное имелось ввиду: "буфер обмена может неправильно принимать текст"?
Скорее так.

Цитата:
Насколько неправильно?
Ну возьмём к примеру кириллицу из ком. строки...

Вставляем так:

ClipPut($CmdLine[1])

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

Т.е вот к примеру если такой скрипт закомпилировать:

Код: Выделить весь код
ClipPut($CmdLine[1])
MsgBox(0, "", ClipGet())
А потом запустить его к примеру из батника так:

Код: Выделить весь код
Start ClipTest.exe тест
То в сообщении мы увидим ЄхёЄ (крякозябры)

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

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

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


Отправлено: 03:24, 16-01-2007 | #127


Аватара для Creat0R

Must AutoIt


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

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


Ещё один способ получить список существующих дисков на компьютере:

Код: Выделить весь код
$Drives = ""
For $iDrv = 65 to 90
    If DriveGetType(Chr($iDrv) & ":\") <> "" Then $Drives = $Drives & @CR & Chr($iDrv) & ":\"
Next
MsgBox(262144+64, "Existing Drives List", $Drives)

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

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

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

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

Отправлено: 03:55, 16-01-2007 | #128


Старожил


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

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


Creat0R
Цитата:
Оказывается, возможно привязать функцию _MsgBox() (от amel27)
Где эту функцию взять?

Отправлено: 18:22, 16-01-2007 | #129


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


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

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


Creat0R
Цитата:
всё же неплохая вещь которую ты привёл в студию
Спасибо. Мне тоже очень понравилось.
Цитата:
Если Ком. строка содержит кириллицу
Через командную строку проблема решается так:
graftabl 1251 | echo %username%>MyName.txt
Хотя конкретно для твоего случая это не сработает. При создании пакетного Файла возьми за привычку конвертировать текст в Dos(oem), например c помощью текстового редактора: BRED - хороший заменитель блокнота, или любой другой доступный редактор который умеет работать с кодировками, в самом крайнем случае открываешь пакетный файл в WordPad ( > Сохранить как > Текстовой документ MS-DOS), а затем меняешь расширение на *.bat

Последний раз редактировалось Diamond, 16-01-2007 в 21:53. Причина: Синтаксическая ошибка


Отправлено: 21:37, 16-01-2007 | #130



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




 
Переход