Ru-Board.club
← Вернуться в раздел «Программы»

» AutoIT

Автор: sproxy
Дата сообщения: 01.12.2008 15:53

Цитата:
Johny_x3mal



Цитата:
send ({"!Н"})


попробуй вот так:
Send ("!{H}") или Send ("!H")


Если не выйдет = код в студию ...
Автор: Johny_x3mal
Дата сообщения: 01.12.2008 16:26
...
...
WinClose ("Безымянный - Блокнот")
    WinWaitActive ("notepad.exe", "Текст в файле Безымянный был изменен")

; Предлагает на выбор: Да Нет Отмена    

Send ("{!H}")
------------

Цитата:
попробуй вот так:
Send ("!{H}") или Send ("!H")

не прокатило и ошибок не выдал

Добавлено:
Забыл сказать, при старте скрипта, доходит до WinClose, вижу нажатие ALT, далее он ожидает чего-то, т.е. скрипт не завершается, останавливаю в ручную.

Добавлено:
Я подозреваю, что русский шрифт не распознается, просто. Как - то применить кодировку DOS?
Автор: sproxy
Дата сообщения: 01.12.2008 16:57
Да, русский так просто не рапознается.
Необходимо переключить язык ввода.
Где гааараздо ранее в этой теме
усть куча примеров.

Как вариант, без отправки ALT+клавища:

Run ("notepad.exe")
WinWaitActive ("Безымянный - Блокнот")
Send ("Same text.....")
    Sleep (200)
WinClose ("Безымянный - Блокнот")
WinWaitActive ("Блокнот", "Текст в файле Безымянный был изменен.")
    Sleep (200)
ControlClick ("Блокнот", "Текст в файле Безымянный был изменен.", "Button2")

Sleep можно удалить, это для наглядности.
controlID ("Button2") кнопки "Нет" можно узнать с помощью
утилиты Au3Info.exe (находится в корне папки AutoIT).
Запустить и навести курсор на кнопку "Нет", в Au3Info,
на вкладке "Control", в поле "ClassnameNN" будет controlID
этой кнопки.

...вариант 2:

Run ("notepad.exe")
WinWaitActive ("Безымянный - Блокнот")
Send ("Same text.....")
    Sleep (200)
WinClose ("Безымянный - Блокнот")
WinWaitActive ("Блокнот", "Текст в файле Безымянный был изменен.")
    Sleep (200)
Send ("{TAB}")
Send ("{ENTER}")
Автор: Johny_x3mal
Дата сообщения: 01.12.2008 17:04
sproxy
Спс, сейчас опробую


Добавлено:
Вариант 2 пробовал, не прошло
Автор: sproxy
Дата сообщения: 01.12.2008 17:10
...пробуешь на Блокноте?
самое банальное и не заработало )))...
Автор: Johny_x3mal
Дата сообщения: 01.12.2008 17:12
Блииииин.... я "." в конце предложения пропустил "Текст в файле Безымянный был изменен."
Теперь работает )
sproxy
Спасибо
Автор: sproxy
Дата сообщения: 01.12.2008 17:25
вариант с переключением раскладки:


Код:
Run ("notepad.exe")
WinWaitActive ("Безымянный - Блокнот")
$win_handle = WinGetHandle ("Безымянный - Блокнот")

;~ переключение в английскую раскладку
_SetKeyboardLayout("00000409", $win_handle)
Send ("English")

;~ переключение в русскую раскладку
_SetKeyboardLayout("00000419", $win_handle)
Send (@CRLF & "Русский")
    Sleep (200)

WinClose ("Безымянный - Блокнот")
WinWaitActive ("Блокнот", "Текст в файле Безымянный был изменен.")
$win_handle = WinGetHandle ("Блокнот", "Текст в файле Безымянный был изменен.")
    Sleep (200)

;~ выбор кнопки нет вызовом ALT+н (буква Н - русская)
Send ("!{н}")

Func _SetKeyboardLayout($sLayoutID, $hWnd)
Local $WM_INPUTLANGCHANGEREQUEST = 0x50
Local $ret = DllCall("user32.dll", "long", "LoadKeyboardLayout", "str", $sLayoutID, "int", 0)
DllCall("user32.dll", "int", "SendMessage", "hwnd", $hWnd, _
"int", $WM_INPUTLANGCHANGEREQUEST, _
"int", 1, _
"int", $ret[0])
EndFunc
Автор: kronic
Дата сообщения: 01.12.2008 19:46
Может кто нибудь подсказать как можно взять из файла символы и отправить их в активное окно как нажатие их на клавиатуре
Автор: ViSiToR
Дата сообщения: 01.12.2008 19:57
kronic 20:46 01-12-2008
Цитата:
как можно взять из файла символы и отправить их в активное окно как нажатие их на клавиатуре

Так:


Код: [no]$sChars = FileReadLine($sFile, 3) ;Считывает символы с третьей строки файла
Send($sChars)[/no]
Автор: sproxy
Дата сообщения: 01.12.2008 20:01
kronic

поконкретнее, пож, какие символы?
из какого файла?

эмуляция нажатий на клавиатуре вызывается функцией: Send
файл считать можно с помощью функций: FileRead , FileReadLine, попутно ищя нужные символы...
Автор: kronic
Дата сообщения: 01.12.2008 20:04
sproxy
Из текстового файла
Например:
4567689DD
Автор: sproxy
Дата сообщения: 01.12.2008 20:05
ViSiToR, не знаешь ли, как как переименовать название ключа реестра?
что бы не заниматься перекопированием всего из страого в новый....

к примеру: HKEY_LOCAL_MACHINE\SOFTWARE\my_key
переименовать в: HKEY_LOCAL_MACHINE\SOFTWARE\my_key2
Автор: kronic
Дата сообщения: 01.12.2008 20:06
ViSiToR
А если в одной строчке много текстовых символов
Автор: sproxy
Дата сообщения: 01.12.2008 20:25
если уточнить:


Код:
$sFile = FileOpen ("test_file.txt", 0) ;Открыть файл test_file.txt только на чтение. Файл должен находиться рядом с файл этого скрипта AutoIT
$sChars = FileReadLine ($sFile, 3) ;Считывает символы с третьей строки файла
FileClose ($sFile)
MsgBox (0, "", "Прочитаны данные из файла:" & $sChars & @CRLF & "Откройте нужное окно и установите курсор в необходимое поле ввода.")
Sleep (2000) ;Пауза скрипта, что бы успеть открыть нужное окно
Send ($sChars) ;Отправка прочитанных данных из файла в текущее активное окно - необходимо установить курсор в нужное поле ввода
Автор: kronic
Дата сообщения: 01.12.2008 20:33
sproxy
ViSiToR
Спасибо очень помогли.
Автор: guest228977
Дата сообщения: 01.12.2008 22:25
Доброго времени суток!
Пробую в написании гуи к скрипту.
Задача состоит в том что на странице нужно вывести определенный список файлов с чекбоксами и при нажатии клавиши отмеченные пользователем файлы обработать.
Выбрал дерево treeview со стилем $TVS_CHECKBOXES.
Уважаемые знатоки подскажите пожалуйста как получить массив выделенных элементов дерева? Дерево может быть двухуровневым. Первый уровень папки или файлы, второй - файлы.
Заранее спасибо.
Автор: ViSiToR
Дата сообщения: 01.12.2008 22:55
sproxy 21:05 01-12-2008
Цитата:
как переименовать название ключа реестра?

Только пересозданием

Кстати, вот тут я выложил дополненную библиотеку для работы с реестром. В оригинале библиотека взята отсюда (от wraithdu). Там есть функции _RegMoveKey() и _RegMoveValue(), с их помощью можно переименовать ключ.


Код: _RegMoveValue("HKCU\Software\Test", "SomeKey", "HKCU\Software\Test", "NewKey")
Автор: sproxy
Дата сообщения: 02.12.2008 01:23
Спасибо, ViSiToR.
При использование были ошибки,
написал сам, заодно и понял почему были ошибки...)
....у меня только проверок на ошибки нет..


Код:
#region: - Скопировать или переместить ключ реестра
    Func reg_copy_move_key ($key_from, $key_to, $key_from_del)
        reg_serch_key ($key_from, $key_to)
        reg_copy_zn ($key_from, $key_to)
        If $key_from_del == 1 Then RegDelete ($key_from)
    EndFunc

    Func reg_serch_key ($key_from, $key_to)
        Local $i=1, $key_s
        While 1
            $key_s = RegEnumKey ($key_from, $i )
            If @error == -1 OR @error == 1 Then ExitLoop
            reg_copy_zn ($key_from & "\" & $key_s, $key_to & "\" & $key_s)
            reg_serch_key ($key_from & "\" & $key_s, $key_to & "\" & $key_s)
            $i+=1
        WEnd
    EndFunc

    Func reg_copy_zn ($in_key, $to_key)
        Local $n=1, $zn_name, $zn_data
        Local $zn_type[8] = [7, "REG_SZ", "REG_EXPAND_SZ", "REG_BINARY", "REG_DWORD", "REG_DWORD_BIG_ENDIAN", "REG_LINK", "REG_MULTI_SZ"]
        While 1
            $zn_name = RegEnumVal ($in_key, $n)
            If @error == -1 OR @error == 1 Then ExitLoop
            $zn_data = RegRead ($in_key, $zn_name)
            RegWrite($to_key, $zn_name, $zn_type[@extended], $zn_data)
            $n+=1
        WEnd
    EndFunc
#endregion
Автор: ViSiToR
Дата сообщения: 02.12.2008 01:29
sproxy 02:23 02-12-2008
Цитата:
При использование были ошибки

Какие?
Автор: sproxy
Дата сообщения: 02.12.2008 01:41
в куске:


Код:
Func _RegCopyValue($s_Key, $s_Val, $d_Key, $d_Val, $iDelete = False)
    Local $sData, $sType

    $sData = RegRead($s_Key, $s_Val)
    If @error Then Return SetError(1, 0, 0) ; some error reading Value, skip it
    
    $sType = _RegGetExtendedType(@extended)
..........
Автор: ViSiToR
Дата сообщения: 02.12.2008 08:40
sproxy 02:41 02-12-2008
Цитата:
Recursion level has been exceeded - AutoIt will quit to prevent stack overflow.:

Мда, рекурсия не самый лучший способ перебора ключей... кстати, там небольшой недочёт есть при проверке ошибок. Нужно заменить If @error Then.. на If @error <> 0 Then.. (после RegEnumKey($s_Key, $i)). Возможно из за этого цикл не прерывается во время.


Цитата:
Кстати, не ты ли автор прожки, у тебя в лаборатаротии, для чистки мыши и клавиатуры?
(KeyBoard and Mouse Cleaner!) Это же гениально...просто...хм, не всегда нужно....но как гениально и даже как то....мило...))))))).....

Я . Спасибо.
Автор: hunter19
Дата сообщения: 02.12.2008 08:42
Привет всем!
Подскажите, пожалуйста, можно создать такой скрипт, который мог бы внедряться в другой процесс и выполнять в нём команды? Пробовал эмуляцию нажатий клавиш в этом приложении(процессе), но не получается добиться высокой эффективности. Я во внедрениях не разбираюсь. Хотя бы пример посмотреть, как это делается.
Автор: ViSiToR
Дата сообщения: 02.12.2008 09:22
hunter19 09:42 02-12-2008
Цитата:
можно создать такой скрипт, который мог бы внедряться в другой процесс и выполнять в нём команды?

Какой процесс, какого рода команды? Желательно бы увидеть пример того, что уже имеется (чтобы лучше понять, что конкретно требуется).
Автор: hunter19
Дата сообщения: 02.12.2008 09:38
Процесс - hl.exe (Counter-Strike)
Надо, чтобы с помощью скрипта была возможность отправлять в консоль контры на выполнение некоторые команды.
Автор: Maza_Faka
Дата сообщения: 02.12.2008 11:09
sproxy

Цитата:
как переименовать название ключа?

Можно используя встроенную Windows утилиту reg.exe

Код: $sRegSource = "HKCU\Software\MyProgram"
$sRegPath = "HKCU\Software\MyProgramBK"

Run(@ComSpec & ' /c reg copy "' & $sRegSource & '" "' & $sRegPath & '" /s /f', @SystemDir, @SW_HIDE)
Run(@ComSpec & ' /c reg delete "' & $sRegSource & '" /f', @SystemDir, @SW_HIDE)
Автор: deadbead
Дата сообщения: 02.12.2008 12:23
Приветствую!

Необходимо сделать псевдоактивное окно!) Расскажу в чем суть)

Однажды случайно что-то ткнув на клаве+мыше наблюдал такую ситуацию: Активное окно, а за ним Второе и тоже активное! Причем второе окно еще было выделено на панели задач (как будто ему послали Flash) Это 2 окна одной и той-же игрушки... при этом на кнопки управления реагировало оба окна!

В описании функции WinActivate присутствуют следующие строки: "Если окно свёрнуто, оно будет автоматически восстановлено перед активацией."

Собственно вопрос в том как активировать свернутое окно не восстанавливая его?
Автор: ViSiToR
Дата сообщения: 02.12.2008 12:50
hunter19 10:38 02-12-2008
Цитата:
Процесс - hl.exe (Counter-Strike)
Надо, чтобы с помощью скрипта была возможность отправлять в консоль контры на выполнение некоторые команды.

Это почти ни о чём не говорит. Но вобщем случае подобная затея не реализуема.

deadbead 13:23 02-12-2008
Цитата:
как активировать свернутое окно не восстанавливая его?

Интересно, мне что-то не удаётся вообразить эту картину... Окно активное, но свёрнутое? Парадокс однако
Автор: sproxy
Дата сообщения: 02.12.2008 22:35
Maza_Faka,волшебно работает! Спасибо!

Может быть есть общая справка (список имеющихся) по всем встроенным\стандартным утилитам windows на подобии этой?

hunter19, так а чем эмуляция нажатий не подходит, чем не так?
а встроенный скрипт язык? можно же на одну клавищу куууучу команд
записать: покупка всего что угодно, настройки сервера и т.д.....пока
понять не могу смысла сложных действий с внедрением в консоль,
если встроенный язык может многое...

deadbead, свернуто, но активно - и в правду парадокс))
но в тему "непонятного", можно сделать окно активным и задать ему
позицию за экран, тогда и активно будет, но не видно)))

Добавлено:
к стати ребята, ViSiToR, Maza_Faka, по поводу Tollbar buttons.
Нашел в UDF как создать такю панель, сделал, все ок.
Вот только она всегда распологается в верху окна, а нужна заданная
позиция, скажем х=300, у=100. Тогда сделал дочерное окно
в нужной позиции и уже в нем разместил панель Tollbar buttons.
И все это находится в родительском окне на одной из вкладок Tab.
Пока таких Tollbaк buttons панелей не много. Но вот если приспичет
по более, да и по разнообразней: по 1, 2, 3 кнопки, и таких штук 20
на вкладке. думаю уже это будет не очень в работе....даже сейчас
при смене вкладок видно как прорисовываются эти дочерные окна
с панельками Tollbar. Не смертельно и не тормазнуто, но если их
будет много будет не айс.......

Вопрос: возможно ли разместить Tollbar в заданной позиции окна?
Или может есть другой способ создать такие же кнопки как создаются
в Tollbar buttons ?
Автор: Maza_Faka
Дата сообщения: 03.12.2008 07:36
sproxy

Цитата:
Может быть есть общая справка

c:\WINDOWS\Help\ntcmds.chm


Цитата:

Или может есть другой способ создать такие же кнопки как создаются
в Tollbar buttons ?

Вроде бы мы с ViSiToR-ом уже отвечали на этот вопрос?
Автор: sproxy
Дата сообщения: 03.12.2008 13:55
Есть код, помогите разобраться пожалуйста:


Код:
#include <Constants.au3>

$ipconfig_all = Run(@ComSpec & " /k ipconfig /all", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

While 1
$line = StdoutRead ($ipconfig_all)
If @error Then ExitLoop
;~     $line = StringRegExpReplace ($line, @CR, "")
    MsgBox (0, "STDOUT read:", $line)
Wend

While 1
$line = StderrRead ($ipconfig_all)
If @error Then ExitLoop
    StringStripWS ($line, 8)
MsgBox (0, "STDERR read:", $line)
Wend

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192

Предыдущая тема: Quintura Search


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.