PDA

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


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 [14] 15 16 17

bogomolv
17-12-2005, 07:40
kovdaev
Двумя страницами ранее уже приходлось писать, что
за поведение Панели Пуск отвечает ключ
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2]
"Settings"=
Настрой Панель под себя, скопируй ключ в reg-файл, а затем воспроизведи...

Sanja Alone
А зачем в твоем последнем скрипте проверка If ControlCommand ($Title,'','Button1','IsChecked','')=0 Then?

Sanja Alone
18-12-2005, 01:33
bogomolv
А зачем в твоем последнем скрипте проверкаЯ, как и ты, настраиваю панель Пуск "реестровым" методом (причем еще на этапе установки Винды) и уже не помню, что там стоит "по умолчанию". Человек просил скрипт - я наваял, ну и влепил проверки для примера.

kovdaev
19-12-2005, 15:33
Ответ на вопрос зачем это нужно,
в моем случае пользователи делают что хотят, но когда начинаются проблемы зовут меня при этом, мне удобно когда скажем панель задач не убиралась с экрана, пришел запустил скрипт и все галочки стаят там где надо и не стоят где ненадо, мне кажется это удобно.
Спасибо большое за помощь.

asdfghjk
21-12-2005, 22:08
Кто-нибудь знает, как переключить раскладку клавиатуры в En, например? Пробовал API функцию - "LoadKeyboardLayoutA"
$result = DllCall("user32.dll", "long", "LoadKeyboardLayoutA", "str", "00000409", "long", 1)
не отрабатывает.

Имхо, прежде чем пользоваться SEND, не мешало бы переключить клавиатуру.

Sanja Alone
22-12-2005, 02:45
asdfghjk
Кто-нибудь знает, как переключить раскладку клавиатуры в En, например?Немного выше (http://forum.oszone.net/showpost.php?p=375113&postcount=235) я описывал один метод - не подходит?

Имхо, прежде чем пользоваться SEND, не мешало бы переключить клавиатуру.АвтоИту все равно какая в данный момент раскладка - функция Send тупо посылает указанные символы. Единственная загвоздка возникает при висящих в памяти автопереключателях раскладки (Punto Switcher, Keyboard Ninja и т.п.) - но это опять-таки не вина АвтоИт-а, а юзера, забывшего закрыть процесс подобного приложения перед применением ф-ции Send.

asdfghjk
22-12-2005, 13:19
Спасибо за ответ. Вышеописанный метод я действительно не заметил. Однако,
функция Send тупо посылает указанные символыОчевидно, у меня она наделена интеллектом.(В отличии от меня). Подобный код выдает русские сообщения в другой кодировке:
Run("notepad.exe")
WinWaitActive("Безымянный - Блокнот")
;Run("regedit /s en.reg")

Send("This is some text.", 1)
Send("{Enter}")

;Run("regedit /s ru.reg")
Send("Это текст на русском.")
Send("Это текст на русском.", 1)

Если запустить из-под русской раскладки, наоборот, латиницу неправильно отображает. Скрипт сохраняю в ANSI-кодировке. У кого-то правильно работает?
Закомментированные reg-файлы (переключение клавиатуры, как ты рекомендовал) не отрабатывают ни в скрипте, ни при запуске руками (точнее, отрабатывают: реестр правят, но на раскладку это не влияет). WinXP RUS SP2. Никаких автопереключателей клавиатуры нет.

Sanja Alone
23-12-2005, 02:15
asdfghjk
Скрипт сохраняю в ANSI-кодировкеОна же Win1251 (CP1251) - это правильно.

Run("regedit /s en.reg")
1. Любой импорт данных в реестр нужно делать при пом. ф-ции RunWait - т.е. нужно дождаться окончания операции импорта. Ф-ция Run просто запускает приложение/команду, указанную ей в кач-ве аргумента и (не дожидаясь завершения) скрипт идет дальше.
2. Ты не до конца понял описанный мной метод. Импортируя в реестр вышеуказанные ключи, ты просто включаешь возможность переключения на разные языки с пом. разных комбинаций клавиш. Но ведь для самого переключения нужно еще сделать Send('^+1') /Send('^+2')/, а не просто импортировать reg-файлик :)


Похоже я нашел причину твоих проблем - это Блокнот.
В Блокноте должен быть указан шрифт с кириллическим набором символов (а по ум. там Terminal - без такового). Вот нужная ветка реестра:
[HKEY_CURRENT_USER\Software\Microsoft\Notepad]
;набор символов (00000000 - западноевропейский, 000000cc - кириллический)
"lfCharSet"=dword:000000cc
;шрифт (обязательно с кириллическим набором, иначе будут кракозяблы).
;Примеры шрифтов с кириллическим набором символов: Arial, Times New Roman, Tahoma, Lucida Console.
"lfFaceName"="Tahoma"

P.S. Ты бы не извращался с импортом reg-файликов, а юзал ф-ции АвтоИта: RegWrite/RegDelete (лишние reg-файлы неудобны в подобных ситуациях). Если лень переводить reg в АвтоИт - можешь воспользоваться моим конвертером crta (http://sanjaalone.h15.ru/files/crta.zip).

asdfghjk
24-12-2005, 02:14
Sanja Alone
Да, протупил я насчет Send('^+1'). Сейчас работает, только вместо точки "ю" вставляет.
Собственно, меня сей вопрос интересует только из любви к искусству. Практической необходимости в нем нет.
Хотелось бы все-таки уточнить, у кого-нибудь она (функция Send) просто "тупо посылает указанные символы "? Безо всяких раскладок клавиатуры.
Свой Блокнот я проверил - вышеописаные ключи соответствуют.

Sanja Alone
24-12-2005, 09:54
asdfghjk
у кого-нибудь она (функция Send) просто "тупо посылает указанные символы "?У меня.
Для примера возьмем твой код:
Run("notepad.exe")
WinWaitActive("Безымянный - Блокнот")
Send("This is some text.")
Send("{Enter}")
Send("This is some text.", 1)
Send("{Enter}")
Send("Это текст на русском.")
Send("{Enter}")
Send("Это текст на русском.", 1)Результат можешь посмотреть здесь (http://z19.zupload.com/download.php?file=getfile&filepath=5224)


Я решил написать это в форуме, т.к. от подобной проблемы не застрахован никто. Дело в том, что на моей рабочей машине стоит WinXP SP1. Я проверил скрипт на VMWare с установленной WinXP SP2 - н-рые кириллические символы заменились кракозяблами. Логически поразмыслив о возможной причине подобного казуса, я пришел к выводу, что все дело в настройках кодовой страницы в самой Винде. Короче говоря, идем по многократно описанному в свете борьбы с кракозяблами пути, и смотрим, чтобы там было такое:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"1250"="c_1251.nls"
"1251"="c_1251.nls"
"1252"="c_1251.nls"
"1253"="c_1251.nls"
"1254"="c_1251.nls"ВАЖНЫЙ момент! Буковки "c" должны быть в нижнем регистре ("c_1251.nls"). А у меня там были большие "C" ("C_1251.nls"). На SP1 это не влияло на ситуацию, а на SP2 стало причиной неправильного отображения н-рых (но не всех) кириллических символов в Блокноте - в других программах подобной зависимости на выявлено.

bogomolv
29-12-2005, 00:53
Sanja Alone

Саша, по поводу [HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage] могу лишь процитировать очень уважаемого специалиста, советы которого ни разу не оказались сомнительными: http://forum.ixbt.com/topic.cgi?id=22:29304:2488#2488.

Добавлено, спустя 1 мин.
Извиняюсь за прямую ссылку. Посмотри ее копи-пастом...

Sanja Alone
29-12-2005, 06:40
bogomolv
Все это понятно, но какая есть альтернатива? К тому же, я не собираюсь смотреть немецкие/японские/китайские и т.п. сайты, а видеть меню того же Алкоголя мне приятнее на русском (а не каракулями или знаками вопроса) :)

Из описанных в приведеной тобой теме форума способов решения проблем "кракозяблов" значатся (насколько я понял):

Cекция [RegionalSettings] файла winnt.sif. Тут у меня итак все выставлено правильно (ес-но, если оно реально применяется, а не игнорируется, как сказано здесь (http://oszone.net/display.php?id=3480));
Ветка HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes (а если посмотреть ту же статью (http://oszone.net/display.php?id=3480), так это вообще составляющая часть первого способа);
Ветка HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage (тот самый, неправильный способ; часто применяется совместно с пунком 2).

Какой способ является подходящим по твоему мнению?

Vadikan
29-12-2005, 07:45
Sanja Alone
Я у себя (XP EN) только 1251="c_1251.nls" выставляю, а шрифты даже не импортирую :) Ну и regopts.txt применяю, чтоб не дергаться. У меня, впрочем, очень мало русского софта, а при наличии двух языков я выберу английский. Остальные кодовые страницы были внесены в статью по причине "стандартности" решения и его многократном тиражировании на страницах форума. О побочных эффектах мне известно, как-то Павел Городянский упоминал на страницах форума (его сайт http://ourworld.compuserve.com/homepages/PaulGor/ ), но в реальности, люди которые хотят избежать проблем с отображением кириллицы, могут никогда и не столкнуться с некорректным отображением других языков :)

spol81
29-12-2005, 11:20
Возможно ли сделать так, что бы весь процесс установки программы был невидим?

bogomolv
29-12-2005, 14:46
Sanja Alone
Там описан еще один способ. Его и использую.
===== файл unattend.txt ========
[Shell]
DefaultStartPanelOff=Yes
CustomDefaultThemeFile="C:\WINDOWS\Resources\Themes\Windows Classic.theme"
Проблем нет.

Sanja Alone
30-12-2005, 04:04
Vadikan
люди которые хотят избежать проблем с отображением кириллицы, могут никогда и не столкнуться с некорректным отображением других языковЗакончу твою фразу: ...потому, что не пользуются этими языками. Собс-но, весь сыр-бор по поводу правильности был затеян "из прЫнцыпа". Ладно, не буду продолжать, т.к. это уже явно не про АвтоИт :)


spol81
Возможно ли сделать так
Ответ на твой вопрос краток: Да. Но нужно бы конкретизировать задачу: какого именно приложения? Не у всех ведь есть ключи тихой установки (точнее, не все ими дают пользоваться). Для начала определи какой инсталлятор исп-ся в этом приложении, затем прочитай статью Типы инсталляторов (http://oszone.net/display.php?id=2766). А уже потом обращайся к АвтоИту.


bogomolv
Там описан еще один способ
Угу, но я не посчитал его серьезным - нужно будет попробовать. Только потом придется привести все к более удобному виду ("Пуск" в 2 колонки):
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer]
"ShellState"=hex:24,00,00,00,33,a0,01,00,00,00,00,00,00,00,00,00,00,00,00,00,\
01,00,00,00,0d,00,00,00,00,00,00,00,03,00,00,00На какой стадии применять этот твик, чтобы не превратить новоявленный правильный метод в новый вариант неправильного?

bogomolv
30-12-2005, 09:25
Sanja Alone

В моем unattend.txt стоит вообще-то CustomDefaultThemeFile="C:\WINDOWS\Resources\Themes\Моя тема.theme".
Так что, скорее всего, "приводить что-либо к более удобному виду не приходится...

Zhiberya
03-01-2006, 05:42
Здравствуйте!
У меня вопрос общего характера, пишу на autoit'е небольшой авторан, с возможностью выбора простой или тихой установки. Хочу вставить в него красивый прогресс бар.
Посмотрел в хелпе, есть 2 функции одна- GUICtrlCreateProgress(рисует сам прогресс бар), другая- GUICtrlSetData(задает значение в процентах прогрессбару). К чему привязать ход процесса в прогресс баре? К месту на жестком диске, не есть гуд, т.к. у меня ntfs и она сразу выделяет место под весь файл. К чему можно еще привязать прогресс бар??

Astarot
06-01-2006, 13:28
Пытался сейчас установить Alcohol 120%, но при запуске установки появляется окошко с ошибкой там написано
RunWait ( @ScriptDir&'\'&$file & ' /qn REBOOT=Suppress' )
Error: Unable to execute the external program.

Потом пытался поставить Outpost, но там подобная ошибка в этом месте Run ( @ScriptDir&'\'&$file )

Что я делаю не правильно?

Astarot
06-01-2006, 13:50
Всё сам разобрался ;) Просто не заметил что там название файла переменной присваивается.

a-v-g-u-r
06-01-2006, 15:51
Возникла следующая проблема:
требуется установить программу в папку, которая находится на том же диске, что и Windows.

Вопрос:
Существует ли какая-нибудь переменная окружения, в которой бы хранилось имя диска, на котором Винда установлена (что-нибудь по аналогии с @ScriptDir или @WindowsDir)? Может есть способ выдрать эту букву из какой-то из этих переменных.

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




© OSzone.net 2001-2012