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

Компьютерный форум 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 | Цитировать


Sylver Dragon,
Цитата Sylver Dragon:
как насчёт того, чтобы проверять не во время вызова контекстного меню, а прямо перед вставкой? »
Дело в том, что вся эта затея нужна для активирования/деактивирования пункта меню. Если буфер обмена позволяет вставить файлы, то при открытии меню пункт должен быть активен (GUISetState($Item, $GUI_ENABLE)), если вставка невозможна, то пункт следует деактивировать ($GUI_DISABLE).

P.S
В принципе (это я только щас додумал), достаточно лишь проверять расширение файлов, т.к у меня есть ещё и проверка типа данных содержащихся в буфере обмена (DROPEFFECT_COPY/MOVE).

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

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

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


Отправлено: 22:25, 17-11-2008 | #1171



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

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


Googler


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

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


Creat0R
Цитата:
такие выражения я ещё не видел »
большие выражения сложно контролировать, подстановки переменных существенно упрощают эту задачу
...хотя в итоговый скрипт можно включать только результат
Цитата:
Победители конкурса по Регулярным выражениям становятся... RegExp номер 3 и номер 4! »
там есть оптимизация - путь обсчитывается только один раз в первой строке, далее обрабатываются только имена файлов
Цитата:
достаточно лишь проверять расширение файлов, т.к у меня есть ещё и проверка типа данных содержащихся в буфере обмена »
главное вспомнить вовремя , тогда тебе хватит "^.*$extn$(?:\n.*$extn$)*$$"
жаль, нельзя сходу отличить файл от каталога, диска или другого элемента "сетевого окружения"
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:36, 18-11-2008 | #1172


Googler


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

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


Цитата amel27:
нельзя сходу отличить файл от каталога, диска или другого элемента "сетевого окружения" »
склероз однако... согласно этому посту наверное все-таки можно... во всяком случае попробовать

Отправлено: 13:05, 18-11-2008 | #1173


Аватара для Creat0R

Must AutoIt


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

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


Цитата amel27:
согласно этому посту наверное все-таки можно »
Кстати, я тут немного переделал функцию _FileSFCallbackProc, чтобы при выборе папки её полный путь отображался в строке под Prompt. Но проблема в том, что если путь слишком длинный, то он обрывается. Я это решил следующей функцией:

Код: Выделить весь код
ControlSetText($hWnd, "", "Static1", $sPromptData & @CRLF & @CRLF & _GetShortString($sSetData, 50))

Func _GetShortString($sString, $iMax_Ret_Lenght=30)
    If StringLen($sString) < $iMax_Ret_Lenght Then Return $sString

    If $iMax_Ret_Lenght <= 4 Then $iMax_Ret_Lenght = 5
    Local $iSide_Lenght = Round(($iMax_Ret_Lenght / 2) - 2, 0)

    Local $sLeft_Side = StringStripWS(StringLeft($sString, $iSide_Lenght), 3)
    Local $sRight_Side = StringStripWS(StringRight($sString, $iSide_Lenght), 3)

    Return $sLeft_Side & "...." & $sRight_Side
EndFunc
Внимание вопрос: Возможно ли сделать подобное укарачивание строки одними лишь RegExp'ресами?

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

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

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


Отправлено: 14:12, 18-11-2008 | #1174


Новый участник


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

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


Можно ли через autoit изменить реестр в ограниченой учетной записи?

Отправлено: 18:15, 18-11-2008 | #1175


Аватара для SyDr

Старожил


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

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


Цитата Creat0R:
Возможно ли сделать подобное укарачивание строки одними лишь RegExp'ресами? »
$Number = 30
$Array = StringRegExp($Expr, '^(.){' & $Number & '}',2)
$Array[0] - первые $Number символов строки. Если длина строки меньше $number - значение @error = 2 (А Array[0] - ХЗ, пустая строка вроде).

Цитата leprecon:
Можно ли через autoit изменить реестр в ограниченой учетной записи? »
Можно. Все те разделы, в которых при этом разрешена запись.
Если же нужна запись во все разделы - используй что-нибудь типа:

Код: Выделить весь код
If $CmdLine[1] = "/NeedAdmin" Then
$sUserName = "Username"
$sPassword = "Password"
$FileToRun = "ThisExe.exe"
RunAs($sUserName, @ComputerName, $sPassword, 0, $FileToRun)
Exit
EndIf
; Начало основного сценария

Последний раз редактировалось SyDr, 18-11-2008 в 22:53.

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

Отправлено: 19:31, 18-11-2008 | #1176


Новый участник


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

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


Такая вот проблема...
Есть текстовый файл, например test.txt, в котором содержится:
Код: Выделить весь код
[19.11.08 07:51:20] Регистрация пользователя OPERATOR
[19.11.08 07:51:24] [4] cryptoserver authentication: one-way mode.eG#I
[19.11.08 07:51:25] Время сервера 19.11.2008 1:53:25
[19.11.08 07:51:28] OK:[3] valid O/R name.
[19.11.08 07:51:28] Доступ разрешен
[19.11.08 07:51:28] Просмотр исходящих файлов
[19.11.08 07:51:29] Отправка файла 47D43E1ANL18170549906E.XXX
[19.11.08 07:51:31] OK:All letters send successfully.
[19.11.08 07:51:31] Просмотр входящих файлов
[19.11.08 07:51:33] Нет входящих сообщений
[19.11.08 07:51:35] Сессия завершена
[19.11.08 11:08:12] Регистрация пользователя ws05285o
[19.11.08 11:08:16] [4] cryptoserver authentication: one-way mode.‰u#I
[19.11.08 11:08:17] Время сервера 19.11.2008 5:10:17
[19.11.08 11:08:20] OK:[3] valid O/R name.
[19.11.08 11:08:20] Доступ разрешен
[19.11.08 11:08:20] Просмотр исходящих файлов
[19.11.08 11:08:21] Отправка файла 9FBD57C0NL19110805312E.XXX
[19.11.08 11:08:23] OK:All letters send successfully.
[19.11.08 11:08:23] Просмотр входящих файлов
[19.11.08 11:08:26] Прием файла NKTF1027.000
[19.11.08 11:08:27] OK:message was successfully deleted from queue..
[19.11.08 11:08:29] Прием файла NKTF1030.000
[19.11.08 11:08:31] OK:message was successfully deleted from queue..
[19.11.08 11:08:33] Нет входящих сообщений
[19.11.08 11:08:35] Сессия завершена
Размер файла регулярно увеличивается... Надо проверить в файле наличие "OK:All letters send successfully" (без кавычек). А если реально, то и вернуть количество этих вхождений....
Тока напишите, пожалуйста, небольшое пояснение. А то хочется не просто тупо использовать кусок кода, но и понять КАК он работает....

-------
ira furor brevis est


Последний раз редактировалось Grammaton Cleric, 19-11-2008 в 09:03.


Отправлено: 07:50, 19-11-2008 | #1177


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

Ветеран


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

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


Цитата Grammaton Cleric:
Такая вот проблема »
Попробуй так:
Код: Выделить весь код
$sFile = @ScriptDir & "\test.txt"
$sRead = FileRead($sFile)

$aString = StringRegExp($sRead, "(?i)OK:All letters send successfully", 3)
If @error Then
    MsgBox(48, "Test.txt", "Совпадений не найдено")
    Exit
EndIf

MsgBox(64, "Test.txt", "Найдено " & UBound($aString) & " совпадений")

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

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

Отправлено: 09:17, 19-11-2008 | #1178


Googler


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

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


Creat0R
Цитата:
Возможно ли сделать подобное укарачивание строки одними лишь RegExp'ресами? »
Нет, одними нельзя - входными данными для регулярных выражений является сам текст, в твоем случае как раз наоборот - форматирование абсолютно не зависит от содержания самой строки, оно определяется длиной строки, длиной контрола, длиной вставки ("..."), на основании этих ГЛОБАЛЬНЫХ (по отношению к тексту) параметров рассчитываются длины левого и правого куска. RegExp же, являясь конечным автоматом, "мыслит" ЛОКАЛЬНО - в процессе "раскрутки" выражения он не знает какой текст его ждет впереди, сколько ему еще до конца строки, не помнит даже того текста, который им уже обработан... за исключением, пожалуй, выставленных "групп захвата". Конечно, можно заменить StringLeft() и StringRight() на StringRegExpReplace(), но выгода от этого сомнительна.

По ходу немного переделал твой UDF, стабилизировав длину выходной строки (имеет смысл только для непропорционального шрифта типа Courier) и добавил возможность смещения заполнителя в правую или левую сторону... Вариант для RegExp прилагается, но он некорректно обрабатывает нулевую длину $iLeft и $iRight:
Код: Выделить весь код
$s = "C:\Documents and Settings\Администратор\Рабочий стол\Текстовый документ.txt"
$s = _GetShortString($s, 30, -11)

ConsoleWrite('"'&$s&'"' &@CRLF)
ConsoleWrite("Output Length: "& StringLen($s) &@CRLF)

Func _GetShortString($sString, $iMaxRetLen = 30, $iShift = 0)
    Local $iString = StringLen($sString)
    If $iString <= $iMaxRetLen Then Return $sString

    Local $sMidl= "...", $iMidl = StringLen($sMidl)
    Local $iCut = $iString - $iMaxRetLen
    If $iCut<$iMidl Then $sMidl=StringLeft($sMidl, $iCut)

    $iMaxRetLen -= $iMidl
    If $iMaxRetLen <0 Then $iMaxRetLen = 0

    Local $iEven = BitShift($iMaxRetLen,1)
    If $iShift> $iEven Then $iShift= $iEven
    If $iShift<-$iEven Then $iShift=-$iEven
    Local $iLeft = $iEven+$iShift+BitAND($iMaxRetLen,1)
    Local $iRight= $iEven-$iShift

;   $sString = StringRegExpReplace($sString, "(.{"& $iLeft &"}).*(.{"& $iRight &"})", "\1"& $sMidl &"\2")
    $sString = StringLeft($sString,$iLeft) & $sMidl & StringRight($sString,$iRight)

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

Отправлено: 12:01, 19-11-2008 | #1179


Ветеран


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

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


Здравствуйте наблюдается проблемма на Vista 32 Ultimate при отработке команды Ping(), назависимо от состояния сети всегда выдает время отклика равное 1, тот же скрипт на Windows XP работает как надо. Втроенный брэндмауэр, Defender и т.п. отключены. Сеть и инет работает как надо. Может у кого-то будут мысли куда копать?
вот такой простенький скрипт
Код: Выделить весь код
$var = Ping("192.168.1.1")
While 1
	If $var Then
		MsgBox(4096, 'Сообщениe', 'Подключен. ' & $var)
		ExitLoop
	Else
		MsgBox(4096, 'Сообщениe', 'Не подключен. ' & $var & ' ' & @error)
		sleep(2000)
	EndIf
Wend

Отправлено: 14:49, 19-11-2008 | #1180



Компьютерный форум 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




 
Переход