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

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

Закрытая тема
Настройки темы
[архив - Часть 2] AutoIt скрипты

(*.*)


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


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

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


Изменения
Автор: Vadikan
Дата: 27-01-2008
Внимание!
Тема переведена в архивное состояние







(настоятельно рекомендуется к прочтению/поиску)


Руководство к действию по работе c AutoIt.


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

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



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

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

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

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

 

Ветеран


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

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


Creat0R, amel27, мНЕ собственно нужен как основа скрипт взятия имен машин типа списка аналогичного "Сетевеое окружение". При этом акцент было бы интересно установить на взятие его на машинах с несколькими сетевыми интерфейсами!

Отправлено: 10:01, 23-10-2007 | #621



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

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


Googler


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

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


NikLok
Перед тем как писать скрипт нужно определиться как разрешать имена: широковещанием (NetBIOS), сервер WINS или DNS?.. Это определяется настройками локальной сети.

Отправлено: 11:32, 23-10-2007 | #622


Аватара для TERMINAL

Ветеран


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

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


У меня идёт опрос окон:
For $i = 0 To 25
MsgBox(64,"System disc","Идёт установка программы ! Подождите пожалуйста "& 26-$i &" секунд...", 2)
if WinWait("Окно 1","", 1) Then
ControlClick("Окно 1","","Button2")
EndIf
If WinWait("Окно 2","",1) Then
ControlClick("Окно 2","","Button2")
EndIf
If WinWait("Окно 3","", 1) Then
ControlClick("Окно 3","","Button2")
EndIf
If WinWait("Окно 4","", 1) Then
ControlClick("Окно 4","","Button2")
EndIf
Next

Дальше идёт продолжение выполнения скрипта....

Возможно ли сделать в цикле так, что если какое-то из окон определяется то заканчивает работать цикл и переходит к дальнейшему выполнению скрипта?

-------
Автоматизация прежде всего....


Отправлено: 12:01, 23-10-2007 | #623


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

Ветеран


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

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


TERMINAL
Цитата:
если какое-то из окон определяется то заканчивает работать цикл
ExitLoop

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


Отправлено: 12:15, 23-10-2007 | #624


Ветеран


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

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


amel27, Конечно лучше универсальный вариант. Но на худой конец и простой NetBios сгодится!

Отправлено: 15:06, 23-10-2007 | #625


Googler


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

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


Цитата NikLok:
на худой конец и простой NetBios сгодится »
1. "NET VIEW"
2. То же через API (функция возвращает массив):
Код: Выделить весь код
Global Const $SV_TYPE_WORKSTATION = 0x1
Global Const $SV_TYPE_SERVER = 0x2
Global Const $SV_TYPE_SQLSERVER = 0x4
Global Const $SV_TYPE_DOMAIN_CTRL = 0x8
Global Const $SV_TYPE_DOMAIN_BAKCTRL = 0x10
Global Const $SV_TYPE_TIME_SOURCE = 0x20
Global Const $SV_TYPE_AFP = 0x40
Global Const $SV_TYPE_NOVELL = 0x80
Global Const $SV_TYPE_DOMAIN_MEMBER = 0x100
Global Const $SV_TYPE_PRINTQ_SERVER = 0x200
Global Const $SV_TYPE_DIALIN_SERVER = 0x400
Global Const $SV_TYPE_XENIX_SERVER = 0x800
Global Const $SV_TYPE_NT = 0x1000
Global Const $SV_TYPE_WFW = 0x2000
Global Const $SV_TYPE_SERVER_MFPN = 0x4000
Global Const $SV_TYPE_SERVER_NT = 0x8000
Global Const $SV_TYPE_POTENTIAL_BROWSER = 0x10000
Global Const $SV_TYPE_BACKUP_BROWSER = 0x20000
Global Const $SV_TYPE_MASTER_BROWSER = 0x40000
Global Const $SV_TYPE_DOMAIN_MASTER = 0x80000
Global Const $SV_TYPE_WINDOWS = 0x400000
Global Const $SV_TYPE_CLUSTER_NT = 0x1000000
Global Const $SV_TYPE_TERMINALSERVER = 0x2000000
Global Const $SV_TYPE_CLUSTER_VS_NT  = 0x4000000
Global Const $SV_TYPE_LOCAL_LIST_ONLY = 0x40000000
Global Const $SV_TYPE_DOMAIN_ENUM = 0x80000000
Global Const $SV_TYPE_ALL = 0xFFFFFFFF

Func _NetServerEnum ($iSrvType = -1, $sDomain = '')
    Local $uBufPtr = DllStructCreate("ptr;int;int"), $res[1]=[0], $i
    Local $uRecord = DllStructCreate("dword;ptr"), $iRecLen = DllStructGetSize($uRecord)
    Local $uString = DllStructCreate("char[16]")
    Local $uDomain = DllStructCreate("byte[32]"), $pDomain = 0
    If Not ($sDomain='' Or $sDomain='*') Then
         DllStructSetData($uDomain, 1, StringToBinary($sDomain,2))
        $pDomain = DllStructGetPtr($uDomain)
    EndIf
    Local $ret = DllCall ("netapi32.dll", "int", "NetServerEnum", _
        "ptr", 0, "int", 100, _
        "ptr", DllStructGetPtr($uBufPtr,1), "int", -1, _
        "ptr", DllStructGetPtr($uBufPtr,2), _
        "ptr", DllStructGetPtr($uBufPtr,3), _
        "int", $iSrvType, "ptr", $pDomain, "int", 0 )
    If $ret[0] Then Return SetError(1, $ret[0], '')
    Local $res[DllStructGetData($uBufPtr,3)+1]=[DllStructGetData($uBufPtr,3)]
    For $i=1 To DllStructGetData($uBufPtr,3)
        Local $uRecord = DllStructCreate("dword;ptr", DllStructGetData($uBufPtr,1)+($i-1)*$iRecLen)
        Local $sNBName = DllStructCreate("byte[32]", DllStructGetData($uRecord,2))
        DllStructSetData($uString,1,BinaryToString(DllStructGetData($sNBName,1),2))
        $res[$i] = DllStructGetData($uString,1)
    Next
    $ret = DllCall ("netapi32.dll", "int", "NetApiBufferFree", "ptr", DllStructGetData($uBufPtr,1))
    Return $res
EndFunc

Последний раз редактировалось amel27, 25-10-2007 в 05:23.

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

Отправлено: 11:55, 24-10-2007 | #626


Ветеран


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

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


amel27, Спасибо! Буду изучать, но пока не понял как указать конкретную сеть для просмотра?! У меня 4 карточки стоит!
Во блин ты даешь! И ведь работает! Я так понимаю параметр ей давть бессмысленно, или там при объявлении он задан на случай отсутствия?

Последний раз редактировалось NikLok, 24-10-2007 в 12:56.


Отправлено: 12:20, 24-10-2007 | #627


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

Ветеран


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

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


Как создать 24 размерный массив со случайным числом от 1 до 13, причём числа должны быть парными, то есть у каждого числа должна быть пара и расположение их в массиве всегда должно быть случайным.

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


Отправлено: 16:57, 24-10-2007 | #628


Аватара для Creat0R

Must AutoIt


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

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


Maza Faka,
Цитата:
Как создать 24 размерный массив со случайным числом от 1 до 13, причём числа должны быть парными
Возможно 24 элементный, не размерный? т.е двумерный, но содержащий 24 элемента?

Вобщем если я правильно понял, то вот:

Код: Выделить весь код
#include <Array.au3>

Dim $Array[25][2]

For $i = 1 To 24
    $iRandom = Random(1, 13, 1)
    $Array[$i][0] = $iRandom
    Do
        $jRand = Random(1, 24, 1)
    Until $Array[$jRand][1] = ""
    $Array[$jRand][1] = $iRandom
Next

_ArrayDisplay($Array)

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

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

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


Отправлено: 21:30, 24-10-2007 | #629


Googler


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

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


NikLok
Цитата:
не понял как указать конкретную сеть для просмотра?! У меня 4 карточки стоит! »
В NetBIOS нельзя ограничить широковещание одной карточкой... Если все подсети (карточки) находятся в одном широковещательном домене или если именование настроено через WINS, то ограничение не имеет смысла. Если же подсети имеют свои системы именования, то во-первых, "многокарточный" комп не должен быть мастер-браузером (подробно: KB191611). Во-вторых, можно попытаться отобрать компы явно задав имя домена/группы (скрипт подправил), список всех доменов/групп можно получить передав 1-м параметром $SV_TYPE_DOMAIN_ENUM.

Цитата:
Я так понимаю параметр ей давть бессмысленно, или там при объявлении он задан на случай отсутствия? »
На случай отсутствия ($SV_TYPE_ALL). Вот кстати еще вариант через ADSI:
Код: Выделить весь код
Func _GetDomainComputers($sDomain)
    Local $objComp, $res[1]=[0], $aType[1] = ["computer"]
    Local $objDom = ObjGet('WinNT://'& $sDomain)
    If $objDom=0 Then Return SetError(1)
    $objDom.Filter = $aType
    For $objComp In $objDom
        $res[0]+=1
        ReDim $res[$res[0]+1]
        $res[$res[0]]=$objComp.Name
    Next
    Return $res
EndFunc

Последний раз редактировалось amel27, 25-10-2007 в 12:47.

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

Отправлено: 05:45, 25-10-2007 | #630



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Открывая 7z архив пишет не удаётся открыть как архив. Можно ли его восстановить? DreDo Хочу все знать 4 01-12-2009 18:54
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. Vadikan AutoIt 1543 18-01-2009 10:46
[Архив - Часть 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




 
Переход