Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

Закрытая тема
Настройки темы
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

(*.*)


Сообщения: 36560
Благодарности: 6694


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Vadikan
Дата: 21-01-2009
Описание: архив
Внимание!


В связи с созданием отдельного форума по AutoIt, эта тема переводится в архивное состояние. Если у вас есть вопрос, создайте новую тему или поднимите существующую, если в ней обсуждается аналогичная проблема.

Пожалуйста, не создавайте тем с названием "Помогите!" или "Нужна помощь по AutoIt". Это и так понятно Заголовок темы должен быть осмысленным.



Сайт программы
Русская справка
Коллекция AutoIt скриптов от Sanja Alone
Коллекция AutoIt скриптов от MSFN (могут быть устаревшие).


Справочник по командам rundll32 (команды запуска диалоговых окон и не только...)

AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо).

Архивы старых тем по AutoIt или они же в 7z архиве (версии для печати) - 846 кб (настоятельно рекомендуется к прочтению/поиску)
(он же прикреплен в шапке)


Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров.
Цитата Vadikan:
В теме уже свыше 500 сообщений и поиск нужной информации в ней усложняется. Есть предложение собрать все решения (скрипты) и разместить их на Wiki по принципу "один скрипт - одна статья wiki", добавляя статьи в категорию Autoit. Речь, в принципе, идет об общих решениях, а не о скриптах для установки конкретной программы. Название статьи, очевидно, должно отражать назначение скрипта. Затем можно в шапке просто разместить ссылки на статьи Wiki.

-------
Канал Windows 11, etc | Чат @winsiders

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:02, 05-02-2006

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Maza Faka,
Цитата:
Воть
Спасибо.

Цитата:
протестируйте кому не лень
Потестировал на двух совершенно разных машинах, работает отлично!

На заметку UDF'о-строителю; плохая идея отображать MsgBox'ы прямо из функции, в случае ошибки всегда нужно возвращать её код, пользователь (функцией ) сам решит что нужно делать в случае ошибки.




ALL

Такой вопрос: Как можно перекодировать текст кириллицы в Java-юникод?
К примеру «Привет Мир!» будет кодирован так (это я редактор yudit использовал):

Код: Выделить весь код
\u041f\u0440\u0438\u0432\u0435\u0442 \u041c\u0438\u0440
Нашёл неплохую статью на эту тему, но самому не удаётся сообразить, как всё же (и можно ли вообще) средствами AutoIt'а кодировать кириллицу в Java-Unicode?

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 07:42, 22-04-2008 | #451



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для Maza Faka

Ветеран


Сообщения: 604
Благодарности: 133

Профиль | Отправить PM | Цитировать


Creat0R,
Цитата Creat0R:
На заметку UDF'о-строителю; плохая идея отображать MsgBox'ы прямо из функции, в случае ошибки всегда нужно возвращать её код, пользователь (функцией ) сам решит что нужно делать в случае ошибки. »
Спасибо, учту на будущее

-------
Сообщение помогло? Не забудьте нажать на Полезное сообщение


Отправлено: 08:31, 22-04-2008 | #452


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Creat0R
Цитата:
как всё же (и можно ли вообще) средствами AutoIt'а кодировать кириллицу в Java-Unicode? »
типа такого?
Код: Выделить весь код
MsgBox (0,"", _StringToJava("Привет Мир!"))

Func _StringToJava($sText)
    Local $tw = DllStructCreate("wchar["& StringLen($sText)+1 &"]"), $sOut=""
    Local $ts = DllStructCreate("ushort["&StringLen($sText)+1 &"]", DllStructGetPtr($tw))
    Local $tb = DllStructCreate("byte["&StringLen($sText)*2+2 &"]", DllStructGetPtr($tw))
    DllStructSetData($tw, 1, $sText)

    For $i=1 To StringLen($sText)
        If DllStructGetData($tb,1,$i*2) Then
            $sOut &= "\u"& Hex(DllStructGetData($ts,1,$i),4)
        Else
            $sOut &= DllStructGetData($tw,1,$i)
        EndIf
    Next
    Return $sOut
EndFunc
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:13, 23-04-2008 | #453


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


amel27,
Цитата:
типа такого?
Супер!!! Спасибо

P.S
А обратно можно перекодировать?

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 13:41, 23-04-2008 | #454


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Creat0R
Цитата:
Супер!!!»
да нет, нашел ошибку
Цитата:
А обратно можно перекодировать? »
получилось вот что (включая исправленный вариант):
Код: Выделить весь код
MsgBox (0,"_StringToJava()", '"Привет Мир!" ->'& @CRLF &'"'& _StringToJava("Привет Мир!") &'"')
MsgBox (0,"_JavaToString()", '"\u041f\u0440\u0438\u0432\u0435\u0442 \u041c\u0438\u0440!"'& @CRLF &'-> "'& _
    _JavaToString("\u041f\u0440\u0438\u0432\u0435\u0442 \u041c\u0438\u0440!") &'"')

Func _StringToJava($sText)
    Local $il = StringLen($sText)
    Local $tw = DllStructCreate("wchar["& $il+1 &"]"), $sOut=""
    Local $ts = DllStructCreate("ushort["&$il+1 &"]", DllStructGetPtr($tw))
    DllStructSetData($tw, 1, $sText)

    For $i=1 To StringLen($sText)
        If DllStructGetData($ts,1,$i)<128 Then
            $sOut &= DllStructGetData($tw,1,$i)
        Else
            $sOut &= "\u"& Hex(DllStructGetData($ts,1,$i),4)
        EndIf
    Next
    Return $sOut
EndFunc

Func _JavaToString($sText)
    Local $sOut="", $aText=StringRegExp($sText,"(?:\\u([[:xdigit:]]{4})|[[:ascii:]])",3)
    For $i=0 To UBound($aText)-1
        If StringLen($aText[$i])=1 Then
            $sOut &= $aText[$i]
        Else
            $sOut &= ChrW(Dec($aText[$i]))
        EndIf
    Next
    Return $sOut
EndFunc
ADD: Возник вопрос с управляющими символами: я тут поиграл Yudit и не совсем понял как должно быть в формате Java, редактор часть ASCII-символов преобразует в Unicode, часть нет... и как быть с символом "\"?.. в Java вроде обозначается "\\" но редактор оставляет одиночным, или нужно учитывать только комбинацию "\u"?.. но тогда как она должна представляться если это обычный текст?... или не заморачиваться и преобразовывать в Unicode все подряд включая ASCII?

Последний раз редактировалось amel27, 24-04-2008 в 04:46.

Это сообщение посчитали полезным следующие участники:

Отправлено: 02:03, 24-04-2008 | #455


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


amel27,
Цитата:
как быть с символом "\"?.. в Java вроде обозначается "\\" но редактор оставляет одиночным
Редактор расчитан на Java-приложения как я понимаю, но в действительности (а точнее в браузерах), для управляющих символов нужно добавлять \.

Простой пример; если вставить это в адресную строку браузера (Opera / IE / FireFox):

Код: Выделить весь код
javascript: alert('\u041F\u0440\u0438\u0432\u0435\u0442 \u041C\u0438\u0440 \ ' test');
То ничего не произойдёт, а если подставить \ под служебные символы:

Код: Выделить весь код
javascript: alert('\u041F\u0440\u0438\u0432\u0435\u0442 \u041C\u0438\u0440 \\ \' test');
то будет отображено «Привет мир \ ' test».

Т.е по сути нужно в самом начале функции добавить примерно это:

Код: Выделить весь код
$sText = StringRegExpReplace($sText, "(['\\])", "\\\1")
Только вопрос как пропарсить обратно в _JavaToString() ? хотя тоже наверно можно через RegExp...

P.S
Кстати, не помешало бы отключать «Opt("Expand(Var/Env)Strings", 0)» для подобной функции, для ускорения обработки

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 18:44, 24-04-2008 | #456


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Creat0R
исправил с учетом твоих замечаний:
Код: Выделить весь код
Func _StringToJava($sText)
    Local $iLen = StringLen($sText), $sChr, $iAsc
    Local $tChr = DllStructCreate("wchar["& $iLen+1 &"]"), $sOut=""
    Local $tAsc = DllStructCreate("ushort["&$iLen+1 &"]", DllStructGetPtr($tChr))
    DllStructSetData($tChr, 1, $sText)

    For $i=1 To StringLen($sText)
        $sChr = DllStructGetData($tChr,1,$i)
        $iAsc = DllStructGetData($tAsc,1,$i)
        If $sChr = "\" Or $sChr = "'" Then
            $sOut &= "\"& $sChr
        ElseIf $iAsc<128 Then
            $sOut &= $sChr
        Else
            $sOut &= "\u"& Hex($iAsc,4)
        EndIf
    Next
    Return $sOut
EndFunc

Func _JavaToString($sText)
    Local $sOut="", $aText=StringRegExp($sText,"(\\\\|\\'|\\u[[:xdigit:]]{4}|[[:ascii:]])", 3)
    For $i=0 To UBound($aText)-1
        Switch StringLen($aText[$i])
            Case 1
                $sOut &= $aText[$i]
            Case 2
                $sOut &= StringRight($aText[$i],1)
            Case 6
                $sOut &= ChrW(Dec(StringRight($aText[$i],4)))
        EndSwitch
    Next
    Return $sOut
EndFunc
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:50, 25-04-2008 | #457


Ветеран


Сообщения: 825
Благодарности: 50

Профиль | Отправить PM | Цитировать


amel27, Осеньно надоть в скрипте определять, данная директория или файл реальные или это ссылки ( в смысле NTFS связи ) И самое главное если связи, то на что они указывають?! С надеждой!

Отправлено: 00:52, 26-04-2008 | #458


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


amel27,
Цитата:
исправил с учетом твоих замечаний:
Спасибо огромное, всё отлично работает!

У меня тут возникла проблема с твоими самопальными _FileSave/OpenDialog() и _FileSelectFolder(); на системе где нет поддержки кириллицы, заголовок с русским текстом отображается некорреткно. Как известно в AutoIt добавили поддержку юникода, и как раз оригинальные функции нормально отображают символы кириллицы, вот можно как то поправить и твои функции, чтобы поддерживали Unicode?

Кстати, в последних бетах к подобным функциям (практический ко всем диалоговым) приделали наконец дополнительный параметр Win Handle , но для моих целей нет возможности перейти на эти беты, слишком многое менять нужно в скриптах .

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 01:36, 26-04-2008 | #459


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


NikLok
Насколько я понял речь о символических ссылках, так как для жестких ссылок нельзя отличить ссылку от файла... Имхо различить линк и экземпляр вполне реально через стандартные файловые API, а вот найти путь к оригиналу пока проблематично - полноценные API-функции добавили только в Vista/2008... хотя помнится у API-аналога FileOpenDialog() был флаг, задающий что фозвращает ф-ция - линк или путь к оригиналу... хотя вполне возможно это обычные ярлыки (*.LNK)

Creat0R
дай линки на используемые редакции (а то их уже было немеренно) или кинь в личку

Отправлено: 13:05, 26-04-2008 | #460



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[архив - Часть 2] AutoIt скрипты Vadikan AutoIt 985 21-01-2008 09:58
Вопрос - [Архив] Антивирусные программы - ОБЩИЕ ВОПРОСЫ FOX RED Защита компьютерных систем 67 21-11-2007 15:05
[Архив - Часть 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




 
Переход