[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
-
leprecon
Re: [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
Сама программа - нет, скрипт по эмуляции работы человека - на AutoIT
-
Maza Faka
Re: [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
amel27,
Нужна твоя помощь
Необходимо получить список компьютеров локальной сети, в принципе решение есть (твой скрипт для Nicklock-a), но из "спортивного" интереса хотелось бы получить список с помощью нижеуказанных функций:
Код:
Ссылки:
Нужна твоя помощь
Необходимо получить список компьютеров локальной сети, в принципе решение есть (твой скрипт для Nicklock-a), но из "спортивного" интереса хотелось бы получить список с помощью нижеуказанных функций:Код:
Код: Выделить всё
Global Const $RESOURCE_CONTEXT = 0x5
Global Const $RESOURCETYPE_DISK = 0x1
Global Const $NO_ERROR = 0
Global Const $ERROR_NO_MORE_ITEMS = 259
Global Const $ERROR_INVALID_ADDRESS = 487
$lpBuffer = DllStructCreate("dword[16384]")
$pBuffer = DllStructCreate("hwnd")
$aRet = DllCall("mpr.dll", "dword", "WNetOpenEnum", "dword", $RESOURCE_CONTEXT, "dword", $RESOURCETYPE_DISK, "dword", 0, "ptr", 0, _
"ptr", DllStructGetPtr($pBuffer))
If $aRet[0] $NO_ERROR Then
MsgBox(16, "Error", "Dll call error")
Exit
EndIf
$hWnd = DllStructGetData($pBuffer, 1)
$aRet = DllCall("mpr.dll", "int", "WNetEnumResource", "hwnd", $hWnd, "dword", -1, _
"ptr", DllStructGetPtr($lpBuffer), "dword", DllStructGetSize($lpBuffer))
ConsoleWrite("!> Ret: " & $aRet[0] & @LF)
DllCall("mpr.dll", "int", "WNetCloseEnum", "hwnd", $hWnd)Ссылки:
WNetOpenEnum
WNetEnumResource
-
amel27
Re: [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
Maza Faka
примерно так, но функция сама не ищет во вложенных контейнерах,
в твоем случае она возвратит только объект "Вся сеть"
Код:
примерно так, но функция сама не ищет во вложенных контейнерах,
в твоем случае она возвратит только объект "Вся сеть"

Код:
Код: Выделить всё
Global Const $NO_ERROR = 0
Global Const $ERROR_NO_MORE_ITEMS = 259
Global Const $ERROR_MORE_DATA = 234
Global Const $MAX_RESOURCES = 256
Global Const $NOT_A_CONTAINER = -1
Global Const $RESOURCETYPE_ANY = 0
Global Const $RESOURCETYPE_DISK = 1
Global Const $RESOURCETYPE_PRINT = 2
Global Const $RESOURCE_CONNECTED = 1
Global Const $RESOURCE_GLOBALNET = 2
Global Const $RESOURCE_REMEMBERED = 3
Global Const $RESOURCE_CONTEXT = 5
Func _WNet_EnumResource($iType = $RESOURCETYPE_ANY, $iScope = $RESOURCE_CONTEXT)
Local $tBuf = DllStructCreate("hwnd"), $pBuf = DllStructGetPtr($tBuf)
Local $aRet = DllCall("mpr.dll", "int", "WNetOpenEnum", "int", $iScope, "int", $iType, "int", 0, "ptr", 0, "ptr", $pBuf)
If $aRet[0] Then Return SetError(2, $aRet[0])
Local $hEnum = DllStructGetData($tBuf,1)
Local $tCount = DllStructCreate("int"), $pCount = DllStructGetPtr($tCount)
Local $tBSize = DllStructCreate("int"), $pBSize = DllStructGetPtr($tBSize)
DllStructSetData($tCount, 1, -1)
$aRet = DllCall("mpr.dll", "int", "WNetEnumResource", "hwnd", $hEnum, "ptr", $pCount, "ptr", $pBuf, "ptr", $pBSize)
If $aRet[0]=0 Then
DllCall("mpr.dll", "int", "WNetCloseEnum", "hwnd", $hEnum)
Return SetError(1, 0)
ElseIf $aRet[0]$ERROR_MORE_DATA Then
DllCall("mpr.dll", "int", "WNetCloseEnum", "hwnd", $hEnum)
Return SetError(3, $aRet[0])
EndIf
DllStructSetData($tCount, 1, -1)
$tBuf = DllStructCreate("byte["& DllStructGetData($tBSize,1) &"]")
$pBuf = DllStructGetPtr($tBuf)
$aRet = DllCall("mpr.dll", "int", "WNetEnumResource", "hwnd", $hEnum, "ptr", $pCount, "ptr", $pBuf, "ptr", $pBSize)
If $aRet[0] Then
DllCall("mpr.dll", "int", "WNetCloseEnum", "hwnd", $hEnum)
Return SetError(4, $aRet[0])
EndIf
DllCall("mpr.dll", "int", "WNetCloseEnum", "hwnd", $hEnum)
Return SetError(0, DllStructGetData($tCount,1), $tBuf)
EndFunc-
Maza Faka
Re: [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
amel27
Спасибо за пример. А поиск во вложенных контейнерах сложная задача?
Спасибо за пример. А поиск во вложенных контейнерах сложная задача?
-
Mogidin
Re: [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
Информация к размышлению. Сам только что случайно увидел.
При копировании файла с одного диска на другой время последнего изменения у нового файла увеличивается на 1 секунду. Это происходит и при копировании в эксплорере, и в автоите функцией FileCopy. Можно этого как-нибудь избежать (кроме варианта с FileSetTime, менять время у кучи файлов непонтово)?
При копировании файла с одного диска на другой время последнего изменения у нового файла увеличивается на 1 секунду. Это происходит и при копировании в эксплорере, и в автоите функцией FileCopy. Можно этого как-нибудь избежать (кроме варианта с FileSetTime, менять время у кучи файлов непонтово)?
-
Maza Faka
Re: [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
Mogidin
Вроде бы уже обсуждали такую проблему, поищи в версии для печати.
Вроде бы уже обсуждали такую проблему, поищи в версии для печати.
-
Maza Faka
Re: [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
Есть ли возможность принудительно завершить скрипт через какое-то время, если не были приняты никакие действия?
Сейчас я делаю это через задницу. У меня есть два скрипта один из которых запускает второй и через 20 секунд прибивает его. Но хочется сделать одним скриптом и покрасивее. С прогрессбаром.
Вот код скрипта
Код:
После завершения прогрессбара скрипт закрывается как и нужно. Но проблема в том, что он в это время не обрабатывает сообщения. Можно как-то сделать, чтобы он и сообщения обрабатывал и закрывался самостоятельно?
Сейчас я делаю это через задницу. У меня есть два скрипта один из которых запускает второй и через 20 секунд прибивает его. Но хочется сделать одним скриптом и покрасивее. С прогрессбаром.
Вот код скрипта
Код:
Код: Выделить всё
GuiCreate("Переименование учетной записи администратора", 300, 100)
$name=GUICtrlCreateInput("",25,30)
GuiCtrlCreateLabel("Введите имя Вашей учетной записи", 5, 1, 300, 10)
$rename=GuiCtrlCreateButton("Переименовать", 10, 60, 100, 30)
$chanel=GuiCtrlCreateButton("Отменить", 190, 60, 100, 30)
$progressbar = GUICtrlCreateProgress (10,10,200,20)
; GUI MESSAGE LOOP
GuiSetState()
For $i = 1 To 100
GUICtrlSetData ($progressbar,(100 - $i))
Sleep(30)
Next
ProcessClose("Rename_User.exe")
While 1
$msg = GUIGetMsg()
Select
Case $msg = $rename
FileCopy("RENUSER.EXE",@SystemDir)
Sleep (1000)
Run("RENUSER.EXE Администратор " & GUICtrlRead($name))
Sleep (1000)
FileDelete(@SystemDir & "\RENUSER.EXE")
ExitLoop
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $chanel
ExitLoop
EndSelect
WEndПосле завершения прогрессбара скрипт закрывается как и нужно. Но проблема в том, что он в это время не обрабатывает сообщения. Можно как-то сделать, чтобы он и сообщения обрабатывал и закрывался самостоятельно?
-
Creat0R
Re: [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
amel27,
Цитата:
опять не понял смысл квадратных скобок в твоем выражении
- Я не знал как указать движку RegExp что я хочу искать в начале либо одно, либо другое, но при этом чтобы то что я ищу не попало в результат.
Цитата:
попробуй так:
Спасибо огромное! Вроде всё отлично отрабатывает, но хотелось бы понять как?!
Почему то, что в первых круглых скобках не попадает в результат (в строки массива)? И что означает «:?» ?
Ответ на последеий мой вопрос предоставляет объяснение и на первый вопрос
Цитата:
(?: ... ) - Non-capturing group. Behaves just like a normal group, but does not record the matching characters in the array nor can the matched text be used for back-referencing.
И как я это мог упустить в справке...
Цитата:
опять не понял смысл квадратных скобок в твоем выражении
- Я не знал как указать движку RegExp что я хочу искать в начале либо одно, либо другое, но при этом чтобы то что я ищу не попало в результат.Цитата:
попробуй так:
Спасибо огромное! Вроде всё отлично отрабатывает, но хотелось бы понять как?!
Почему то, что в первых круглых скобках не попадает в результат (в строки массива)? И что означает «:?» ?Ответ на последеий мой вопрос предоставляет объяснение и на первый вопрос

Цитата:
(?: ... ) - Non-capturing group. Behaves just like a normal group, but does not record the matching characters in the array nor can the matched text be used for back-referencing.
И как я это мог упустить в справке...
-
266903582
Re: [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
В windowinfo есть инструмент finder tool: наводим его на объект и получаем информацию о нем. Хочу написать что-то подобное для получения только некоторой необходимой информации и сбрасывать ее в файл, осталось только разобраться как получать инфо об объекте под курсором...