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

» AutoIT

Автор: kpuk
Дата сообщения: 22.07.2010 20:58
удалить...
Автор: AZJIO
Дата сообщения: 23.07.2010 01:13
Обновил калькулятор (третий пост сверху), добавлена расширенная память (9 ячеек) и автосохранение памяти и позиции окна. Все операции доступны с клавиатуры. Добавил алгоритм повтора последней операции, т.е. если вы делите на 2, то повторное нажатие "Вычислить" опять делит число на 2.
Автор: madmasles
Дата сообщения: 23.07.2010 08:01
Dmitri_Andreev,
Так у меня показывает все ярлыки папки "Сетевые подключения" (Windows XP SP3):
Код: #include <GuiListView.au3>
#include <Array.au3>

Opt("WinWaitDelay", 0)

Local $sTitle = "Сетевые подключения", $hListView, $iNumber, $sName

Run("control ncpa.cpl")
;ShellExecute("::{7007ACC7-3202-11D1-AAD2-00805FC1270E}")
WinWait($sTitle)
If Not WinActive($sTitle) Then WinActivate($sTitle)
WinWaitActive($sTitle)
WinSetState($sTitle, "", @SW_MINIMIZE)
$hListView = ControlGetHandle($sTitle, "", "[CLASS:SysListView32; INSTANCE:1]")
$iNumber = _GUICtrlListView_GetItemCount($hListView)
Dim $aNetwork[$iNumber + 1]
For $i = 0 To $iNumber - 1
$sName = _GUICtrlListView_GetItemText($hListView, $i)
$aNetwork[$i + 1] = $sName
Next
$aNetwork[0] = UBound($aNetwork) - 1
WinClose($sTitle)
_ArrayDisplay($aNetwork)
Автор: Orion_76
Дата сообщения: 23.07.2010 10:19
Dmitri_Andreev

Цитата:
Подключение по локальной сети, Подключение по локальной сети 2, имена PPP, PPPoE, VPN соединений

на офф.форуме нашел только через ipconfig...
хотя что-то мне подсказывает, можно и из реестра выдернуть...

Автор: madmasles
Дата сообщения: 23.07.2010 11:42
Dmitri_Andreev
Вот ссылка на ScriptOmatic.au3.
Там много интересного.
Автор: AZJIO
Дата сообщения: 24.07.2010 19:02
Обновил генератор мелодий в двух вариантах, особенно для MIDI.
Автор: Zloy_Gelud
Дата сообщения: 24.07.2010 19:38
Возможно ли решить такую задачу:
1) сделать копию ветки реестра со всеми значениями
2) через некоторое время сделать повторную копию этой ветки
3) сравнить их на предмет изменения записей (добавление, удаление, изменение)
Автор: Zloy_Gelud
Дата сообщения: 24.07.2010 22:10
$s= 'text = "text1(text2)";'

Как вырезать в этом примере то, что находиться в кавычках, т.е. text1(text2) ?
Автор: AZJIO
Дата сообщения: 25.07.2010 05:28
Zloy_Gelud
$s = StringSplit('text = "text1(text2)";', '"')
MsgBox(0, 'Сообщение', $s[2])
Автор: madmasles
Дата сообщения: 25.07.2010 06:52
Zloy_Gelud
Можно еще так попробовать:
Код: $sString = 'text = "text1(text2)";'
; 1-ый вариант:
$sResult = StringRegExpReplace($sString, '(?s).*?\Q"\E(.*?)\Q"\E.*', '\1')
MsgBox(0, '1-Найдено:', $sResult)
; 2-ой вариант:
$aResult = StringRegExp($sString, '"(.*?)"', 3)
If IsArray($aResult) Then
MsgBox(0, '2-Найдено:', $aResult[0])
Else
MsgBox(0, 'NO', 'NO')
EndIf
; 3-ий вариант:
$sRes = StringMid($sString, StringInStr($sString, '"', 0, 1) + 1, StringInStr($sString, '"', 0, 2) - _
StringInStr($sString, '"', 0, 1) - 1)
MsgBox(0, '3-Найдено:', $sRes)
Автор: Zloy_Gelud
Дата сообщения: 25.07.2010 08:33
A не подскажите еще как заменить определенные слова в строке на другие?
Автор: madmasles
Дата сообщения: 25.07.2010 09:33
Zloy_Gelud

Код: $sString = 'text = "text1(text2)";'
$sWordOld = 'text'
$sWordNew = 'click'
$sResult = StringReplace($sString, $sWordOld, $sWordNew)
MsgBox(0, '', 'Old: ' & $sString & @CRLF & 'New: ' & $sResult)
Автор: AZJIO
Дата сообщения: 25.07.2010 10:11
Zloy_Gelud

Цитата:
Возможно ли решить такую задачу:

Слишком объёмный вопрос, решить можно, а можно взять готовую бесплатную программу regshot (с исходниками).
Автор: Kiev78
Дата сообщения: 25.07.2010 11:19

Цитата:
Возможно ли решить такую задачу:

Для этого не нужен АвтоИТ - есть специализированные программы, которые успешно делают подобные операции.
Если же нужно сделать это из АвтоИТа - то можно вызывать regedit с ключами командной строки.
Автор: assch11
Дата сообщения: 25.07.2010 22:49
Здравствуйте.Не подскажете
Можно ли средствами Autoit из формата - PNG - сделать формат - ICO
Я понимаю что для этого есть другие программы
Просто нужно именно на Autoit.
Если можно пример как это делается.
Автор: Zloy_Gelud
Дата сообщения: 26.07.2010 10:39
madmasles
Возможно я плохо объяснил тогда, но мне нужно немного другое..

Код: $sKeywords = 'function,if,and,or,then,while,repeat,end,until,else,elseif,local,in,do,for'
$aKeywords = StringSplit($sKeywords, ",")
$sText = 'for i, strPageName in pairs(tPages) do'
Автор: Kiev78
Дата сообщения: 26.07.2010 11:19

Цитата:
Если ты про команду reg, то она не имеет таких параметров, которые сравнят две копии ветки реестра. Или я плохо смотрел?

Она сделает тебе снимки - а сравнивать ты можешь уже средствами АвтоИТа (ты ведь в нём хочешь всё делать), или использовать другой софт (чисто для сравнения).
Автор: Kastermight
Дата сообщения: 26.07.2010 11:51
Zloy_Gelud
1. Заменить на что?
2. Я бы рекомендовал выделить в отдельные переменные ключевые слова, которые отделяются от других пробелами (do, while, for) и те, которые отделяются знаками "=", "(" и ")" (function). Думаю, что можно всю эту конструкция и в один регвыр засунуть, но логика выражения заметно усложниться, так же как и понимание. Лучше составить по регвыру для каждой группы ключевых слов и пройтись отдельными StringRegExpReplace'ами по каждому из них.

Добавлено:
К примеру вот так можно

Код: $sKeywords = 'function,if,and,or,then,while,repeat,end,until,else,elseif,local,in,do,for'
$sKeywords = StringReplace($sKeywords, ',', '|'); Ключевые слова разделять лучше "|", т.к. этот символ является оператором условия в регвырах
$sChange = "*magic_word*"; Слово на которое нужно заменить каждое из найденных ключевых слов
Dim $sText[3]
$sText[0] = 'for i, strPageName in pairs(tPages) for do while'
$sText[1] = 'strVar = var_for_table; but this for else while '
$sText[2] = 'function() XXX=function() but for do while _not_change_function function'

$sPattern1 = "^(" & $sKeywords & ")([\s\(])"; Шаблон поиска ключевых слов в начале строки
$sPattern2 = "([\s\=])(" & $sKeywords & ")([\s\(])"; Шаблон поиска ключевых слов в середине строки
$sPattern3 = "([\s\=])(" & $sKeywords & ")$"; Шаблон поиска ключевых слов в конце строки
For $i = 0 to 2
Do
$sText[$i] = StringRegExpReplace($sText[$i], $sPattern1, $sChange & "\2")
Until Not @extended
Do
$sText[$i] = StringRegExpReplace($sText[$i], $sPattern2, "\1" & $sChange & "\3")
Until Not @extended
Do
$sText[$i] = StringRegExpReplace($sText[$i], $sPattern3, "\1" & $sChange)
Until Not @extended
; Все циклы проводятся пока все ключевые слова не будут заменены
ConsoleWrite($sText[$i] & @CRLF)
Next
Автор: AZJIO
Дата сообщения: 26.07.2010 13:49
Zloy_Gelud
reg поддерживает сравнение из ком строки
Код: reg compare имя_раздела_1 имя_раздела_2 /v имя_записи | ve| oa|od|os|on |s
Автор: Zloy_Gelud
Дата сообщения: 26.07.2010 18:44

Код: $sSimv = '\.|\=|\/|\*|\-|\+|\<|\>|\~|\,|\[|\]|\{|\}'
$sKeywords = 'function|if|and|or|then|while|repeat|end|until|else|elseif|local|in|do|for'
$s = 'OnJump = function() do'

$s = StringRegExpReplace($s, '^('&$sKeywords&')[\s\(\)\;'&$sSimv&']', '##bC##$1##C## ')
$s = StringRegExpReplace($s, '[\s'&$sSimv&']('&$sKeywords&')[\s\(\)\;'&$sSimv&']', ' ##bC##$1##C## ')
$s = StringRegExpReplace($s, '[\s\(\)\;'& $sSimv &'](' & $sKeywords & ')$', ' ##bC##$1##C##')

MsgBox(0,"",$s)
Автор: AZJIO
Дата сообщения: 26.07.2010 20:52
Zloy_Gelud

Цитата:
Но не сравнит 2 REG или HIVE файла.
копируй раздел в другой раздел и сравнивай последующие изменения. Команда копирования у reg тоже есть.

Обновил калькулятор, добавил поддержку языковых файлов lng, возможность открывать файлы расширенной памяти, соответственно иметь их сколько угодно. Добавил защиту-индикатор, для действий "на 0 делить нельзя" и "корень отрицательного числа". Исправил ошибку на двух кнопках, когда переменные с числами воспринимаются как текстовые.
Автор: opt_step
Дата сообщения: 27.07.2010 10:00
Есть скрипт

Цитата:
RegDelete('HKEY_CURRENT_USER\Software\Microsoft\DrWatson')

как сделать, чтобы он повторялся в цикле каждые 10 мин и при нажатии клавиши выгружался из процессов?
Автор: Kastermight
Дата сообщения: 27.07.2010 10:37
opt_step

Код: HotKeySet("^{DEL}", "_Exit"); Ctrl+Del

While 1
    RegDelete('HKEY_CURRENT_USER\Software\Microsoft\DrWatson')
    Sleep(1000*60*10); 10 min
WEnd

Func _Exit()
Exit
EndFunc
Автор: opt_step
Дата сообщения: 27.07.2010 11:34

Цитата:
HKEY_CURRENT_USER\Software\Microsoft\DrWatson

а как выставить атрибуты (разрешения) у ветки ...\DrWatson?
Автор: Kastermight
Дата сообщения: 27.07.2010 11:56
opt_step
могу посоветовать использовать утилиту командной строки - SetACL.
Автор: degid
Дата сообщения: 27.07.2010 14:56
opt_step
тут пример проверки/изменения прав на VBS... Можно переделать в AutoIT
Автор: Kastermight
Дата сообщения: 27.07.2010 17:10
degid
Да, переделывается легко. Получается примерно следующее

Код: ;Этот скрипт проверяет наличие прав.
;Если делать не Check, а Set то будет менять


Const $KEY_QUERY_VALUE = 0x0001
Const $KEY_SET_VALUE = 0x0002
Const $KEY_CREATE_SUB_KEY = 0x0004
Const $DELETE = 0x00010000
Const $HKEY_LOCAL_MACHINE = 0x80000002
$strComputer = "."
$oReg = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & _
$strComputer & "\root\default:StdRegProv")
$strKeyPath = "SYSTEM\CurrentControlSet"

Local $bHasAccessRight
$oReg
.CheckAccess($HKEY_LOCAL_MACHINE, $strKeyPath, $KEY_QUERY_VALUE, $bHasAccessRight)
If $bHasAccessRight = True Then
ConsoleWrite("Have Query Value Access Rights on Key" & @CRLF)
Else
ConsoleWrite("Do Not Have Query Value Access Rights on Key" & @CRLF)
EndIf

$oReg.CheckAccess($HKEY_LOCAL_MACHINE, $strKeyPath, $KEY_SET_VALUE, $bHasAccessRight)
If $bHasAccessRight = True Then
ConsoleWrite("Have Set Value Access Rights on Key" & @CRLF)
Else
ConsoleWrite("Do Not Have Set Value Access Rights on Key" & @CRLF)
EndIf

$oReg.CheckAccess($HKEY_LOCAL_MACHINE, $strKeyPath, $KEY_CREATE_SUB_KEY, $bHasAccessRight)
If $bHasAccessRight = True Then
ConsoleWrite("Have Create SubKey Access Rights on Key" & @CRLF)
Else
ConsoleWrite("Do Not Have Create SubKey Access Rights on Key" & @CRLF)
EndIf

$oReg.CheckAccess($HKEY_LOCAL_MACHINE, $strKeyPath, $DELETE, $bHasAccessRight)
If $bHasAccessRight = True Then
ConsoleWrite("Have Delete Access Rights on Key" & @CRLF)
Else
ConsoleWrite("Do Not Have Delete Access Rights on Key" & @CRLF)
EndIf
Автор: AZJIO
Дата сообщения: 28.07.2010 02:56
Обновил калькулятор, и при тесте столкнулся с проблемой больших чисел (вскользь на офсайте читал)

Код: MsgBox(0, 'Message',7450580596923828125*5)
Автор: madmasles
Дата сообщения: 28.07.2010 08:29
AZJIO,
BigNum UDF - Библиотека для работы с большими числами.
Автор: AZJIO
Дата сообщения: 28.07.2010 08:48
madmasles
Уже лучше но запинается на следующем порядке
MsgBox(0, 'Message',_BigNum_Mul(37252902984619140625, 5))

Использовал числа как строковые переменные, тогда правильно считает...

Страницы: 12345678910111213

Предыдущая тема: Проблемы с VMware Workstation (часть 4)


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