Войти

Показать полную графическую версию : [Архив - Часть 1.2] AutoIt скрипты


Страниц : 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

Sanja Alone
21-02-2006, 02:26
Dirk Diggler
хочу запустить regedit, а он запускаю купувшеА как у тебя такое вообще получается?
Я пробовал так:
Run('regedit.exe')
И так:
Send('#r')
WinWaitActive('Запуск программы')
Send('regedit.exe')
;или (как вариант)
ControlSetText('last','','Edit1','regedit.exe')
Send('{ENTER}')...и всегда запускается именно regedit, а не купувше. Причем, это не зависит от текущего состояния раскладки. Что нужно сделать, чтобы получить упомянутую тобой ошибку?

Ну у него есть же контрол TreeViewЕсли ты создаешь свой gui с пом. AutoIt, то им можно управлять. А "чужими" TreeView - шиш. Если знаешь WinAPI - попробуй через DllCall (тут я тебе не советчик).

Dirk Diggler
21-02-2006, 10:23
Что нужно сделать, чтобы получить упомянутую тобой ошибку?
Вводить имя файла вручную 8-)))) слово "он" во фразе “хочу запустить regedit, а он запускаю купувше“ - просто опечатка.

Dirk Diggler
21-02-2006, 10:44
Если ты создаешь свой gui с пом. AutoIt, то им можно управлять
А в чем отличие? Мне как-то казалосьь, что они общие для всех... я не в курсе подробностей реализации этого дела... Но все равно, как минимум, там предусмотрен стиль $TVS_DISABLEDRAGDROP...

У меня вопрос - как получить раскладку текущего окна???

Sanja Alone
22-02-2006, 06:00
Dirk Diggler
А в чем отличие?Этот вопрос нужно адресовать разработчикам АвтоИт, а не мне.

я не в курсе подробностей реализации этого дела... Вот-вот, и я тоже :)

там предусмотрен стиль $TVS_DISABLEDRAGDROP...А использовать этот стиль можно только в GUICtrlCreateTreeView, т.е. при создании эл-та TreeView в созданном ранее с пом. АвтоИт-а gui.

как получить раскладку текущего окна???WinAPI - GetKeyboardLayout (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputfunctions/getkeyboardlayout.asp).
А вот и еще один вариант ответа на вопрос "Как программно переключить раскладку клавиатуры? (http://forum.vingrad.ru/index.php?act=module&module=vingradfaq&article=2433&spider_enabled=)". Нужный кусочек с этой страницы:
Упрощенный пример смены текущего языка на русский:
ActivateKeyboardLayout(LoadKeyboardLayout(IntToHex(MAKELANGID(LANG_RUSSIAN, SUBLANG_DEFAULT), 8).c_str(), 0), 0);

на английский:
ActivateKeyboardLayout(LoadKeyboardLayout(IntToHex(MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT), 8).c_str(), 0), 0);

Для переключения между имеющимися языками:
ActivateKeyboardLayout(LoadKeyboardLayout(IntToHex(MAKELANGID(HKL_NEXT,SUBLANG_DEFAULT), 8).c_str(), 0), 0); — следующая раскладка

ActivateKeyboardLayout(LoadKeyboardLayout(IntToHex(MAKELANGID(HKL_PREV,SUBLANG_DEFAULT), 8).c_str(), 0), 0); — предыдущая.Ес-но, придется преобразовать эти простые строчки в АвтоИт-ные DllCall-ы, при этом нигде не перепутав типы переменных и т.п. Если есть желание - дерзай.

Dirk Diggler
23-02-2006, 12:43
Как работают функции типа TCPRecv? Они ждут получения данных или просто проверяют сокет и завершают работу? Их надо зацикливать или нет?

VelDmi
26-02-2006, 09:58
Как закрыть окно експлорера? Например после инсталляции antivir открывается папка C:\Documents and Settings\All Users\Главное меню\Программы\AntiVir - Personal Edition. Конструкция
If WinWait ("Главное меню\Программы\AntiVir - Personal Edition","", 10) Then WinClose ("Главное меню\Программы\AntiVir - Personal Edition")
не помогает. Где я туплю???

amel27
26-02-2006, 10:32
VelDmi

WinWait()
WinClose()

"If" зачем?

Sanja Alone
26-02-2006, 17:18
VelDmi
Как закрыть окно експлорера?
FAQ (http://oszone.net/display.php?id=3663) читай (раздел "Отлов "случайных" окон" -> пункт 4. Окно браузера).

VelDmi
27-02-2006, 16:13
Всем спасибо. Нашел ошибку. Почитал справку.

NikLok
28-02-2006, 15:34
Использую для установки скрипты автоита. Уже набралось пордка 15 и грозит добавиться еще! Каждый весит по 120 кило. Что можно предпринять для экономии места:
- паковать чем нибудь экзешники скриптов
- не создавать экзешники а ставить первым делом сам автоит и выполнять непосредственно тексты скриптов.

Скажите как культурно или как лучше?

amel27
28-02-2006, 15:59
NikLokСкажите как культурно или как лучше?AutoIT не нуждается в "установке" - достаточно одного autoit3.exe. Компиляция необходима в редких специальных случаях... Да и править AU3-файлы ИМХО удобней.

rhtu
01-03-2006, 12:42
Пожалуйста, представьте себе такой этап работы.
На локальной машине с OC Windows'98 установлен сервер, например, Apach.
Пользователь запустил броузер IE (4-я версия), выполнил некоторые дей-
ствия и переходит к работе в VB-форме, которая станет активной, а
окно IE перестанет быть нужным и его можно будет закрыть! Перед выводом
VB-формы на экран осуществляется по методу ieView.Navigate запуск файла
"_close.htm" (технол. VBScript), расположенного или где-то на диске C:,
или в директории /cgi-bin/ сервера Apach (выбор места размещения файла
"demo.htm" сейчас четко не определяю, об этом я попрошу позже, сформу-
лировав задачу до конца!). Предназначенный только, чтобы закрыть окно
броузера (т.е. сам IE), файл "_close.htm" имеет вид:
<html><head></head><body>
<form name="Form1">
</form>
<script for="Form1" language="VBScript">
Window.Close
</script>
</body></html>
Проблема стала заключаться в том, что на экране появилось меню с двумя
клавишами -- "Да" и "Нет" и необходимостью выбора "Да" без каких-либо
действий со стороны пользователя.
Мои мытарства по решению этой проблемы привели к знакомству с пакетом
AutoIt 3.1, программы которого я установил на компьютере. Далее я запи-
сал код (см. ниже) для "_close.au3" и откомпилировал его, воспользовав-
шись pop_up меню от правой клавиши мышки. Полученный "_close.exe" я
разместил в /cgi-bin/ сервера и запустил этот файл.
WinWaitActive("Microsoft Internet Explorer", "Просматриваемая веб-страница пытается закрыть это окно. Закрыть окно?")
Send("{ENTER}")
В функции ожидания приведены тексты, которые я списал с появляющегося
меню. Как можно догадаться, результат моих попыток обескураживающий!
Все галочки в свойствах броузера, разрешающих использование ActiveX
не помогли. Я упростил для себя задачу, записав в броузере страницу,
с которой следует начать обзор, файл "_close.htm". Так что, загрузив
страницу, броузер должен был сам себя закрыть без сервера... и тут я
окончательно запутался. Обращение к Форуму на OSzone_net.htm показало,
что на нем рассматриваются преимущественно "мягкие" способы установки
программных пакетов с винчестера. Моя же задача несколько иная и форму-
лируется традиционно по-русски: что делать? Прошу подсказки по разме-
щению "_close.exe" и закрытию этого ненужного мне меню!! Спасибо.

NikLok
02-03-2006, 10:39
Вот наверное дурацкий вопрос. Как средствами автоита работать с треем. То есть выбрать нужную программу в нем? При различных разрешениях экрана!

VelDmi
03-03-2006, 08:01
rhtu
Раз пока никто не ответил напишу я.

>> Полученный "_close.exe" я разместил в /cgi-bin/ сервера и запустил этот файл.
Надеюсь вы запустили его до того, как запустили скрипт на закрытие окна?

>> В функции ожидания приведены тексты, которые я списал с появляющегося меню.
Часто списывая тексты с окон допускаются ошибки. Лучше всего копировать текст из встроенной программы Au3Info.

>> Предназначенный только, чтобы закрыть окно броузера (т.е. сам IE), файл "_close.htm"
Предлагаю вам закрывать окно AutoIt-ом, а не скриптом, например: WinClose ("Microsoft Internet Explorer - моя страница"). Тогда меню появляться не будет.

nsergeip
03-03-2006, 14:19
Возникла следующая проблема. Я делаю дистрибутив винды с автоустановкрй необходимых приложений при первом запуске оси. Есть такая софтина - FinePrint (или pdf printer), которая печатает документ в pdf файл. Написал сценарий instPDF_Printer.au3 для autoit. При попытке запуска следующим методом из командной строки C:\install\AutoIt3.exe C:\install\FinePrint\instPDF_Printer.au3 вываливается сообщение 'Для установки и настройки компонентов системы воспользуйтесь панелью управления'.
И в трее появляется значек autoit. После повторного выполнения команды все работает. Как можно избавиться от этой проблемы?

nsergeip
03-03-2006, 14:41
Все разобрался AutoIt3.exe нужно кидать в одну папку вместе с исполняемым скриптом, в моем случае команда получилась такая: C:\install\FinePrint\AutoIt3.exe instPDF_Printer.au3/ Сам спросил - сам ответил. Мож кому и пригодиться!!!

samsobi
03-03-2006, 17:15
nsergeip
А почему нельзя скомпилить .au3 в ехе? И пользуй C:\install\instPDF_Printer.exe!

VelDmi
04-03-2006, 08:20
nsergeip

>> При попытке запуска следующим методом из командной строки C:\install\AutoIt3.exe C:\install\FinePrint\instPDF_Printer.au3
Должно работать, вероятно внутри скрипта что-то не так. Используй @ScriptDir для запуска приложений.

nsergeip
06-03-2006, 12:10
Столкнулся еще с одной проблемой: устанавливаю pdfFactory Pro 2.5! Инсталлятор кривучий такой или руки у меня такие, незнаю. В конце инсталляции вываливается информационное окно с кнопкой 'OK'. Его ничем не могу отловить, не WinWait, не WinActive, не WinWaitActive не помогает!!! Если кто с такой прогой сталкивался или мож знает как всетаки 'нажать' эту кнопку подскажите плиз...

nsergeip
06-03-2006, 12:13
VelDmi дело не в том что неработает то что в нутри скрипта, autoit не запускается таким образом, обычно он в трее висит при запуске, а так его там вообще нет...




© OSzone.net 2001-2012