|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [архив - Часть 2] AutoIt скрипты |
|
[архив - Часть 2] AutoIt скрипты
|
(*.*) Сообщения: 36549 |
Профиль | Сайт | Отправить PM | Цитировать
Внимание! Тема переведена в архивное состояние Текущая тема http://forum.oszone.net/thread-98914.html (настоятельно рекомендуется к прочтению/поиску) Руководство к действию по работе c AutoIt. Сайт программы Русская справка Коллекция AutoIt скриптов от Sanja Alone Коллекция AutoIt скриптов от MSFN (могут быть устаревшие). Справочник по командам rundll32 (команды запуска диалоговых окон и не только...) AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо). Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров. Цитата Vadikan:
|
||
------- Отправлено: 00:02, 05-02-2006 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Скрипт для конвертирования выделенного текста (a.k.a SwitchIt ): Запускаем скрипт, выделяем текст в почти любом Edit поле, и жмё Ctrl ` (ё на рус. раскладке) - текст конвертится в набор символов противоположного языка (Eng - Rus) -> Если функции ConvertText как второй параметр передать 0, то всегда будет конвертировать в Русский, если 1 то в Английский (-1 в противоположный). #NoTrayIcon Opt("SendKeyDelay", 0) HotKeySet("^`", "ConvertProc") HotKeySet("^q", "Quit") While 1 Sleep(100) WEnd Func ConvertProc() Local $OldClip = ClipGet() ClipPut("") Send("^{Insert}") Local $SelectedText = ClipGet() If $SelectedText = "" Then Return Local $NewClip = ConvertText($SelectedText) ClipPut($NewClip) Sleep(10) Send("+{Insert}") Local $NewClipLenght = StringLen(StringStripCR($NewClip)) Send("+{LEFT " & $NewClipLenght & "}") Send("{CTRLDOWN}") Send("{CTRLUP}") ClipPut($OldClip) EndFunc ;If $Mode <> 1 and $Mode <> -1 Then Russian language used ;If $Mode = 1 Then English language used Func ConvertText($Text, $Mode=-1) Local $StringIsUpper = 0, $TextRet = "" Local $SplitTextArr = StringSplit($Text, "") Local $LettersArr = GetLettersArr() Local $i_0 = 0, $i_1 = 1 If $Mode = 1 Then Local $i_0 = 1, $i_1 = 0 For $i = 1 To $SplitTextArr[0] If StringIsUpper($SplitTextArr[$i]) Then $StringIsUpper = 1 Else $StringIsUpper = 0 EndIf If $Mode = -1 Then If StringIsASCII($Text) Then $i_0 = 0 $i_1 = 1 Else $i_0 = 1 $i_1 = 0 EndIf EndIf For $j = 1 To $LettersArr[0][0] If $SplitTextArr[$i] = $LettersArr[$j][$i_0] Then $SplitTextArr[$i] = $LettersArr[$j][$i_1] ExitLoop EndIf Next If $StringIsUpper = 1 Then $SplitTextArr[$i] = StringUpper($SplitTextArr[$i]) $TextRet &= $SplitTextArr[$i] Next Return $TextRet EndFunc Func GetLettersArr() Local $LettersArr = _Array2DCreate("`|q|w|e|r|t|y|u|i|o|p|[|]|a|s|d|f|g|h|j|k|l|;|'|z|x|c|v|b|n|m|,|.|/", _ "ё|й|ц|у|к|е|н|г|ш|щ|з|х|ъ|ф|ы|в|а|п|р|о|л|д|ж|э|я|ч|с|м|и|т|ь|б|ю|.") Return $LettersArr EndFunc Func _Array2DCreate($1DStr, $2DStr, $Delim="|") Local $2DArray[1][1], $iUbound Local $BiggestArray = StringSplit($1DStr, $Delim) Local $SmallestArray = StringSplit($2DStr, $Delim) If UBound($SmallestArray) > UBound($BiggestArray) Then Local $TempArray = $BiggestArray $BiggestArray = $SmallestArray $SmallestArray = $TempArray EndIf ReDim $SmallestArray[UBound($BiggestArray)] For $i = 1 To UBound($BiggestArray)-1 $iUbound = UBound($2DArray) ReDim $2DArray[$iUbound+1][2] $2DArray[$iUbound][0] = $BiggestArray[$i] If $SmallestArray[$i] <> "" Then $2DArray[$iUbound][1] = $SmallestArray[$i] Next $2DArray[0][0] = $iUbound Return $2DArray EndFunc Func Quit() Exit EndFunc |
------- Последний раз редактировалось Creat0R, 03-10-2007 в 04:31. Причина: Правка в коде Отправлено: 13:20, 01-10-2007 | #531 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать По поводу этого скрипта есть вопрос:
Возможно ли получить текст в реальном времени, даже если он не выделен? т.е каким то образом распознать (возможно через API-методы) расположение курсора, и получить текст со сфокусированного элемента? amel27, По поводу раскраски... как видно с моего последнего примера, все первые строки кода после одной пустой строки (если она имеет символ Tab'а в начале), сдвигаются как бы в право, я не могу понять в чём дело, это глюк форума или скрипта? и как это можно поправить? |
------- Отправлено: 13:23, 01-10-2007 | #532 |
Ветеран Сообщения: 604
|
Профиль | Отправить PM | Цитировать Как сделать, что бы при выборе любого элемента "WS", pattern- элемент "Выбрать всё" окрашивался в серый цвет?
#include <GUIConstants.au3> Global $one, $two, $three, $four, $five, $six, $seven, $eight, $nine, $ten GUICreate("Test", 460, 300) $tree = GUICtrlCreateTreeView(250, 70, 130, 200, BitOR($TVS_HASBUTTONS, $TVS_LINESATROOT, $TVS_CHECKBOXES, $TVS_HASLINES)) $all = GUICtrlCreateTreeViewItem("Выбрать все", $tree) Global $TreeArray[11] = [10, $one, $two, $three, $four, $five, $six, $seven, $eight, $nine, $ten] For $i = 1 To $TreeArray[0] $TreeArray[$i] = GUICtrlCreateTreeViewItem("WS " & $i, $all) Next GUISetState() While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $all If AllTreeCheck($all) Then For $a = 1 To $TreeArray[0] GUICtrlSetState($TreeArray[$a], $GUI_CHECKED) Next Else For $a = 1 To $TreeArray[0] GUICtrlSetState($TreeArray[$a], $GUI_UNCHECKED) Next EndIf EndSelect WEnd Func AllTreeCheck($all) Return BitAND(GUICtrlRead($all), $GUI_CHECKED) EndFunc |
Отправлено: 17:06, 01-10-2007 | #533 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Maza Faka,
Если я правильно понял, то вот: #include <GUIConstants.au3> Opt("GuiOnEventMode", 1) GUICreate("Test", 460, 300) GUISetOnEvent($GUI_EVENT_CLOSE, "MainEvents") $tree = GUICtrlCreateTreeView(20, 20, 420, 260, BitOR($TVS_HASBUTTONS, $TVS_LINESATROOT, $TVS_CHECKBOXES, $TVS_HASLINES), $WS_EX_DLGMODALFRAME+$WS_EX_CLIENTEDGE ) $all = GUICtrlCreateTreeViewItem("Select all", $tree) GUICtrlSetOnEvent(-1, "MainEvents") Global $TreeArray[11] For $i = 1 To UBound($TreeArray)-1 $TreeArray[$i] = GUICtrlCreateTreeViewItem("WS " & $i, $all) GUICtrlSetOnEvent(-1, "MainEvents") Next GUISetState() While 1 Sleep(10) WEnd Func MainEvents() Switch @GUI_CtrlId Case $GUI_EVENT_CLOSE Exit Case $all Local $State = $GUI_UNCHECKED If AllTreeCheck($all) Then $State = $GUI_CHECKED GUICtrlSetColor($all, 0x0) Else GUICtrlSetColor($all, 0x696969) EndIf For $a = 1 To UBound($TreeArray)-1 GUICtrlSetState($TreeArray[$a], $State) Next Case Else If AllUnChecked() Then GUICtrlSetColor($all, 0x696969) GUICtrlSetState($all, $GUI_CHECKED) Else GUICtrlSetColor($all, 0x0) GUICtrlSetState($all, $GUI_UNCHECKED) EndIf EndSwitch EndFunc Func AllUnChecked() For $i = 1 To UBound($TreeArray)-1 If BitAND(GUICtrlRead($TreeArray[$i]), $GUI_CHECKED) Then Return True Next Return False EndFunc Func AllTreeCheck($all) Return BitAND(GUICtrlRead($all), $GUI_CHECKED) EndFunc |
------- Отправлено: 20:38, 01-10-2007 | #534 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Creat0R:
Цитата Creat0R:
Цитата Creat0R:
|
|||
Отправлено: 07:41, 02-10-2007 | #535 |
Ветеран Сообщения: 504
|
Профиль | Отправить PM | Цитировать 2Гуру
Задал вопрос в теме по Прагме, но там пока молчок. Не пинайте ногами, здесь вроде точно по AutoIt'у. Проблема в активации переводчика Прагма5. Вот выдержки: 1. Перед установкой копируем словари в папку с инсталлятором 2. Во время установки программы вводим артикул 107F-B473 3. По окончании установки щелкаем правой кнопкой мышки по значку в системной панели и выбираем пункт "О программе" 4. Удерживая нажатой клавишу F2, щелкаем по кнопке "Активация... Интернет при этом ДОЛЖЕН быть отключен." 5. Переносим из формы активации в генератор ключей Holder Name и Identification Code, и щелкаем по кнопке "Сгенерировать" 6. Переносим из генератора ключей в форму активации Program Licence и Activation Key, и щелкаем по кнопке "Activate" Первые 2 пункта по установке никаких сложностей не вызвали - стандартные окна и соответственно скрипт AutoIt в режиме "кликанья". НО вот пункт 3 как AutoIt должен понять? Ведь после установки Прагмы иконка может появиться в любом месте систрея? AU3Info показывает ClassNameNN = ToolbarWindow321 и там находятся все иконки ( в том числе иконка Прагмы и сегодня она в одном месте, завтра уже в другом). Как мне найти ее истинные координаты и щелкнуть правой кнопкой мыши? |
------- Отправлено: 18:06, 02-10-2007 | #536 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27,
Цитата:
Цитата:
Цитата:
Цитата:
Понял, всё сработало, написал функцию для очистки лишних пробелов и табов, и теперь нормально вставляется (см. мой пост со скриптом конвертирования ). amel27, Цитата:
Func ConvertProc() Local $OldClip = ClipGet() Send("^{Insert}") Local $SelectedText = ClipGet() If $SelectedText = $OldClip Then Return Local $NewClip = ConvertText($SelectedText) ClipPut($NewClip) Sleep(100) Send("+{Insert}") Local $NewClipLenght = StringLen($NewClip) Send("{SHIFTDOWN}") Send("{LEFT " & $NewClipLenght & "}") Send("{SHIFTUP}") ClipPut($OldClip) EndFunc P.S Обновил свой пост. |
|||||
------- Последний раз редактировалось Creat0R, 02-10-2007 в 19:48. Отправлено: 18:55, 02-10-2007 | #537 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27,
Цитата Creat0R:
Оказывается, нажатие клавиш «Ctrl Shift + Стрелка влево», выделяет предыдущее слово, вот я и подумал, ведь можно подсчитать количество исходных слов в тексте, и соответственно нажимать столько раз «Ctrl Shift Left N» (где N это количество слов).. Вот примерно так: $aArray = StringRegExp($NewClip, "[\s\.:;,]*([a-zA-Z0-9-_]+)[\s\.:;,]*", 3) Send("^+{LEFT " & UBound($aArray) & "}") Цитата:
|
||
------- Отправлено: 04:25, 03-10-2007 | #538 |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать Creat0R,
Цитата:
Вот ещё, как вариант... Скрипт для Транслитерации текста (работает только в одну сторону): #NoTrayIcon $Dict = ObjCreate("Scripting.Dictionary") $ru = StringSplit("А|Б|В|Г|Д|Е|Ё|Ж|З|И|Й|К|Л|М|Н|О|П|Р|С|Т|У|Ф|Х|Ц|Ч|Ш|Щ|Ъ|Ы|Ь|Э|Ю|Я","|") $en = StringSplit("A|B|V|G|D|E|E|Zh|Z|I|Y|K|L|M|N|O|P|R|S|T|U|F|H|Ts|Ch|Sh|Sch|'|Y|'|E|Yu|Ya","|") For $i=1 To $ru[0] $Dict.Add($ru[$i],$en[$i]) Next HotKeySet("^ё", "Translit") HotKeySet("^й", "Quit") ;~ -------------------------- While 1 Sleep(1000) WEnd Func Translit() Local $String, $Key, $CheckStr, $str, $OldSymbol, $NewSymbol $CheckStr = ClipGet() Send("^{INS}") Sleep(10) $str = ClipGet() If $CheckStr = $str Then Return For $i=1 To StringLen($str) $OldSymbol = StringMid($str,$i,1) $Key = StringUpper($OldSymbol) If $Dict.Exists($Key) Then If StringIsLower($OldSymbol) Then $NewSymbol = StringLower($Dict.Item($Key)) Else $NewSymbol = $Dict.Item($Key) EndIf $String &= $NewSymbol Else $String &= $OldSymbol EndIf Next ClipPut($String) Sleep(10) Send("+{INS}") EndFunc Func Quit() Exit EndFunc |
|
Отправлено: 08:04, 03-10-2007 | #539 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Diamond,
Цитата:
К примеру я пишу: Ndjq crhbgn nj;t bynthtcty? rcnfnb z lkz 'njuj bcgjkmp Ой, забыл переключить раскладку на русский... Твой скрипт тоже интересен, кстати я для этого использ |
|
------- Отправлено: 08:35, 03-10-2007 | #540 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 7z архив пишет не удаётся открыть как архив. Можно ли его восстановить? | DreDo | Хочу все знать | 4 | 01-12-2009 18:54 | |
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. | Vadikan | AutoIt | 1543 | 18-01-2009 10:46 | |
[Архив - Часть 1.3] AutoIt скрипты | biork | AutoIt | 503 | 09-06-2007 11:27 | |
[Архив - Часть 1.2] AutoIt скрипты | Dirk Diggler | AutoIt | 505 | 02-12-2006 11:00 | |
[Архив - Часть 1.1] AutoIt скрипты | EgOrus | AutoIt | 335 | 04-02-2006 16:58 |
|