удалить...
» AutoIT
Обновил калькулятор (третий пост сверху), добавлена расширенная память (9 ячеек) и автосохранение памяти и позиции окна. Все операции доступны с клавиатуры. Добавил алгоритм повтора последней операции, т.е. если вы делите на 2, то повторное нажатие "Вычислить" опять делит число на 2.
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)
Так у меня показывает все ярлыки папки "Сетевые подключения" (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)
Dmitri_Andreev
Цитата:
на офф.форуме нашел только через ipconfig...
хотя что-то мне подсказывает, можно и из реестра выдернуть...
Цитата:
Подключение по локальной сети, Подключение по локальной сети 2, имена PPP, PPPoE, VPN соединений
на офф.форуме нашел только через ipconfig...
хотя что-то мне подсказывает, можно и из реестра выдернуть...
Обновил генератор мелодий в двух вариантах, особенно для MIDI.
Возможно ли решить такую задачу:
1) сделать копию ветки реестра со всеми значениями
2) через некоторое время сделать повторную копию этой ветки
3) сравнить их на предмет изменения записей (добавление, удаление, изменение)
1) сделать копию ветки реестра со всеми значениями
2) через некоторое время сделать повторную копию этой ветки
3) сравнить их на предмет изменения записей (добавление, удаление, изменение)
$s= 'text = "text1(text2)";'
Как вырезать в этом примере то, что находиться в кавычках, т.е. text1(text2) ?
Как вырезать в этом примере то, что находиться в кавычках, т.е. text1(text2) ?
Zloy_Gelud
$s = StringSplit('text = "text1(text2)";', '"')
MsgBox(0, 'Сообщение', $s[2])
$s = StringSplit('text = "text1(text2)";', '"')
MsgBox(0, 'Сообщение', $s[2])
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)
Можно еще так попробовать:
Код: $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)
A не подскажите еще как заменить определенные слова в строке на другие?
Zloy_Gelud
Код: $sString = 'text = "text1(text2)";'
$sWordOld = 'text'
$sWordNew = 'click'
$sResult = StringReplace($sString, $sWordOld, $sWordNew)
MsgBox(0, '', 'Old: ' & $sString & @CRLF & 'New: ' & $sResult)
Код: $sString = 'text = "text1(text2)";'
$sWordOld = 'text'
$sWordNew = 'click'
$sResult = StringReplace($sString, $sWordOld, $sWordNew)
MsgBox(0, '', 'Old: ' & $sString & @CRLF & 'New: ' & $sResult)
Zloy_Gelud
Цитата:
Слишком объёмный вопрос, решить можно, а можно взять готовую бесплатную программу regshot (с исходниками).
Цитата:
Возможно ли решить такую задачу:
Слишком объёмный вопрос, решить можно, а можно взять готовую бесплатную программу regshot (с исходниками).
Цитата:
Возможно ли решить такую задачу:
Для этого не нужен АвтоИТ - есть специализированные программы, которые успешно делают подобные операции.
Если же нужно сделать это из АвтоИТа - то можно вызывать regedit с ключами командной строки.
Здравствуйте.Не подскажете
Можно ли средствами Autoit из формата - PNG - сделать формат - ICO
Я понимаю что для этого есть другие программы
Просто нужно именно на Autoit.
Если можно пример как это делается.
Можно ли средствами Autoit из формата - PNG - сделать формат - ICO
Я понимаю что для этого есть другие программы
Просто нужно именно на Autoit.
Если можно пример как это делается.
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'
Возможно я плохо объяснил тогда, но мне нужно немного другое..
Код: $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'
Цитата:
Если ты про команду reg, то она не имеет таких параметров, которые сравнят две копии ветки реестра. Или я плохо смотрел?
Она сделает тебе снимки - а сравнивать ты можешь уже средствами АвтоИТа (ты ведь в нём хочешь всё делать), или использовать другой софт (чисто для сравнения).
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
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
Zloy_Gelud
reg поддерживает сравнение из ком строки
Код: reg compare имя_раздела_1 имя_раздела_2 /v имя_записи | ve| oa|od|os|on |s
reg поддерживает сравнение из ком строки
Код: reg compare имя_раздела_1 имя_раздела_2 /v имя_записи | ve| oa|od|os|on |s
Код: $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)
Zloy_Gelud
Цитата:
Обновил калькулятор, добавил поддержку языковых файлов lng, возможность открывать файлы расширенной памяти, соответственно иметь их сколько угодно. Добавил защиту-индикатор, для действий "на 0 делить нельзя" и "корень отрицательного числа". Исправил ошибку на двух кнопках, когда переменные с числами воспринимаются как текстовые.
Цитата:
Но не сравнит 2 REG или HIVE файла.копируй раздел в другой раздел и сравнивай последующие изменения. Команда копирования у reg тоже есть.
Обновил калькулятор, добавил поддержку языковых файлов lng, возможность открывать файлы расширенной памяти, соответственно иметь их сколько угодно. Добавил защиту-индикатор, для действий "на 0 делить нельзя" и "корень отрицательного числа". Исправил ошибку на двух кнопках, когда переменные с числами воспринимаются как текстовые.
Есть скрипт
Цитата:
как сделать, чтобы он повторялся в цикле каждые 10 мин и при нажатии клавиши выгружался из процессов?
Цитата:
RegDelete('HKEY_CURRENT_USER\Software\Microsoft\DrWatson')
как сделать, чтобы он повторялся в цикле каждые 10 мин и при нажатии клавиши выгружался из процессов?
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
Код: 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
Цитата:
HKEY_CURRENT_USER\Software\Microsoft\DrWatson
а как выставить атрибуты (разрешения) у ветки ...\DrWatson?
opt_step
могу посоветовать использовать утилиту командной строки - SetACL.
могу посоветовать использовать утилиту командной строки - SetACL.
opt_step
тут пример проверки/изменения прав на VBS... Можно переделать в AutoIT
тут пример проверки/изменения прав на VBS... Можно переделать в AutoIT
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
Да, переделывается легко. Получается примерно следующее
Код: ;Этот скрипт проверяет наличие прав.
;Если делать не 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
Обновил калькулятор, и при тесте столкнулся с проблемой больших чисел (вскользь на офсайте читал)
Код: MsgBox(0, 'Message',7450580596923828125*5)
Код: MsgBox(0, 'Message',7450580596923828125*5)
madmasles
Уже лучше но запинается на следующем порядке
MsgBox(0, 'Message',_BigNum_Mul(37252902984619140625, 5))
Использовал числа как строковые переменные, тогда правильно считает...
Уже лучше но запинается на следующем порядке
MsgBox(0, 'Message',_BigNum_Mul(37252902984619140625, 5))
Использовал числа как строковые переменные, тогда правильно считает...
Предыдущая тема: Проблемы с VMware Workstation (часть 4)
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.