Войти

Показать полную графическую версию : [Архив - Часть 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

proxy
03-04-2006, 08:14
Доброго Времени Суток.
Подскажите пожалуйста, как отследить нажатую - какая именно была нажата?

bogomolv
03-04-2006, 13:27
Vadikan

Да я не ради спора. :)

NikLok
03-04-2006, 15:21
Неожиданно выяснилось, что AutoIt вставляет символы в зависимости от текущей раскладки клавиатуры. В частности при вводе серийного номера в AcdSee 8 при русской раскладке, всталвяется левый номер! Вопрос как узнать текущую раскладку? Ну не анализировать же собственный воод?

amel27
03-04-2006, 16:09
NikLok
Неожиданно выяснилось, что AutoIt вставляет символы в зависимости от текущей раскладки клавиатуры.Поконкретней - "вставляет" какой командой?.. И, кстати, AutoIT посвящена отдельная ветка (http://forum.oszone.net/showpost.php?p=402617&postcount=1).

NikLok
04-04-2006, 10:01
amel27
Поконкретней - "вставляет" какой командой?.. И, кстати, AutoIT посвящена отдельная ветка.
"Вставляет" командой - Send("DKXDVH-3348T-3NHQXB-GHCPRXQ")
Хотя в строке посылаются английские символы, увы попадает кракозябра. Получается, он настолько честно эмулирует, что посылает не те коды которые указаны в строке, а скан коды соотв. клавиш!?
Не смотрел как работает команда посылки в окно ввода (забыл как она называется - SendEdit может?). Неужели у нее те же грабли?

Выяснилось все это когда систему которая ставится с MUI, поставилась без него. Причем непонятно почему то раскладка клавы по умолчанию все ранво всегда русская!
Я уже всю страницу по локализации прочитал и воплотил а воз и ныне там.
Видать где то, что накрутил.
О существовании отдельной ветки знаю и читаю. Но мне кажется этот нюанс должен учитываться и в этой ветке.

amel27
04-04-2006, 10:51
Не смотрел как работает команда посылки в окно ввода (забыл как она называется - SendEdit может?). Неужели у нее те же грабли?ControlSetText()
О существовании отдельной ветки знаю и читаю. Но мне кажется этот нюанс должен учитываться и в этой ветке.Все-таки это ветка ИМХО для готовых решений, а особенности конкретного ПО лучше обсуждать отдельно.

bogomolv
04-04-2006, 18:52
NikLok

Используй
ClipPut('DKXDVH-3348T-3NHQXB-GHCPRXQ')
Send('+{Ins}')

Vadikan
07-04-2006, 00:25
В шапку добавлена ссылка на справочник по rundll32 - мне показалось, что в AutoIt это пригодится.

NikLok
07-04-2006, 17:49
Подскажите, как из автоит скрипта запустить другие автоит скрипты?

bogomolv
08-04-2006, 03:13
NikLok
Сначала поблагодари за предыдущий ответ :)

proxy
08-04-2006, 18:03
Доброго Времени Суток ещё раз.
1. Подскажите пожалуйста, как отследить нажатую клавишу? - какая именно была нажата?

bogomolv
09-04-2006, 06:13
proxy
Поясни вопрос. Обычно AutoIt сам эмулирует нажатие нужных клавиш. А ты хочешь от него обратного?

proxy
09-04-2006, 09:30
Я хочу узнать какую клавишу (к примеру ASCII код) нажал пользователь, для последующей записи в log.
.......проще говоря: Как в AutoIt реализовать перехват клавиш, без их замены как это делает HotKeySet.
К примеру я пишу текст в блокноте, а программа будет показывать все нажатые клавиши.

bogomolv
09-04-2006, 11:00
proxy
На мой взгляд, ты хочешь от AutoIt то, для чего он не предназначен. "AutoIt", - все-таки, это: "a freeware BASIC-like scripting language designed for automating the Windows GUI".
Наверное, тебе больше подойдет брат AutoIt'а - AutoHotKey. Без труда найдешь его в сети.

proxy
10-04-2006, 13:12
Большое Спасибо, по обилию функций в справке - AutoHotKey - это именно то, что я искал.

NikLok
10-04-2006, 14:38
bogomolv Канычна сапасиба. Везде поменял на твой вариант и усе замечательно за...лось!


В раже даже написал скрипт для смены веремени выбора систеым в файле BOOT.INI
мОЖЕТ ЕГО еще как можно было изменить, но я сделал так!


$file = FileOpen("c:\boot.ini",0)
; Check if file opened for writing OK
If $file = -1 Then
MsgBox(0, "Error", "Unable to open c:\boot.ini file.")
Exit
EndIf

$newfile = FileOpen('c:\boot_new.ini',2)
; Check if file opened for writing OK
If $newfile = -1 Then
MsgBox(0, "Error", "Unable to open c:\boot_new.ini file.")
Exit
EndIf

; Read in lines of text until the EOF is reached
While 1
$line = FileReadLine($file)
If @error = -1 Then ExitLoop
If StringInSTr( $line, "timeout=", 0) = 1 Then
FileWriteLine($newfile, "timeout=7")
Else
FileWriteLine($newfile, $line)
EndIf
; MsgBox(0, "Line read:", $line)
Wend

FileClose($file)
FileClose($newfile)

FileSetAttrib ( "c:\boot.ini", "-R-S-H" )
FileCopy ( "c:\boot.ini" , "c:\boot_old.ini", 1 )
FileCopy ( "c:\boot_new.ini", "c:\boot.ini" , 1 )
FileDelete("c:\boot_new.ini")
FileSetAttrib ( "c:\boot.ini", "+R+S+H" )
Exit


Может кому надоть.

VelDmi
10-04-2006, 17:31
Имеется следующий скрипт:

$netsh = @ScriptDir & '\netsh.cfg'
RunWait (@SystemDir & '\netsh.exe interface ip dump > ' & $netsh, @SystemDir, @SW_HIDE)

Так вот файл netsh.cfg создается в ДОС кодировке. И я не могу прочитать русские слова командами автоита.
$file = FileOpen($netsh, 0)
$line = FileReadLine($file)
Получаесся абракадабра. Что делать?

bogomolv
10-04-2006, 19:28
NikLok
Пожалуйста! Приходите еще! :)
RunWait('AutoIt3 script.au3')

bogomolv
11-04-2006, 07:52
VelDmi
Когда-то решал подобную проблему так:
$f = 'C:\1.txt'
$aa = FileRead($f, FileGetSize($f))
$a1 = " ЎўЈ¤Ґс¦§Ё©Є«¬*®ЇабвгдежзийклмнопЂЃ‚ѓ„…р†‡?‰Љ‹ЊЌЋЏђ‘’“”•–—?™љ›њќћџ"
;переменная $a1 взята из ECHO "абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ" > C:\1.txt
$a2 = "абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"
For $i = 1 To StringLen($aa)
$k = StringInStr($a1, StringMid($aa, $i, 1))
If $k>0 Then $aa = StringReplace($aa, $i, StringMid($a2, $k, 1))
Next
msgbox(0,'',$aa)

VelDmi
11-04-2006, 08:11
bogomolv
Спасибо, решил свою проблему так:
RunWait (@COMSPEC & ' /c chcp 1251 && netsh.exe interface ip dump > netsh.cfg', @SystemDir, @SW_HIDE)
Файл создается в нужной кодировке.




© OSzone.net 2001-2012