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

» AutoIT

Автор: Maza Faka
Дата сообщения: 07.12.2007 12:58
Как при помощи StringRegExpReplace преобразовать строку вида: "\\ws1\c\folder\test\scite" в строку: "c:\folder\test\scite" ?
Автор: gen4gen
Дата сообщения: 07.12.2007 16:05
ViSiToR, так вот, каким образом можно закрыть процесс? Именно закрыть, имитировав нажатие Alt+F4 или пункта меню Exit, а не просто убить? Чтобы соответственно, если это Notepad.exe например, и в нем есть не сохраненный текст, блокнот выдал подтверждение сохранить или нет. И как быть с приложениями, которые спрятаны в трее? Например, qip, RoboForm, WinAmp и пр.

Автор: gregaz
Дата сообщения: 07.12.2007 18:39
Maza Faka


Цитата:
Если поставил новую версию, то какие проблемы с редактированием? В справке есть примеры

Я вернулся на старую-причин много
В новой примеры работают при создании ListYiew через UDF
Мне хотелось использовать более простой в управлении и с большими возможностями ListView ,созданный без UDF
Просьбу выставлял,не предполагая,что это достаточно сложно
Кстати версии (новая и старая)работают и без инсталяции (вернее без деинсталяции с разнесением в разные папки),хотя может где-то и откажут
В связи с этим вопрос : как грамотно выполнить оперативную передачу управления на запуск Autoit-овского файла с одного ехе файла на другой (с нового на старый и назад) ?
Версии в разных папках.
Наверное внести измения в системное меню контекста ?
Может подскажет кто. Я- не силен
Автор: ViSiToR
Дата сообщения: 07.12.2007 19:17
Baloven1

Цитата:
а что если его (скрипт раскраски постов) доработать и приклеить в код формы?

Ну это скоррее к администрации нужно направлять вопрос, хотя я сомниваюсь что подобное будет реализовано, на AutoIt форуме это необходимый (хотя тоже только как украшение/наглядность) тег, а тут нет.

Tipulatoid

Цитата:
С помощью какого элемента Gui можно нарисовать информационую панель

Можно _GuiCtrlStatusBarCreate(), но чтобы попроще, можно тот же Label...


Код: #include <GuiConstants.au3>

$Gui = GuiCreate("Test", 300, 140)

$SetData = GUICtrlCreateButton("Set Data", 20, 20)

$StatusBar_Label = GUICtrlCreateLabel("", 0, 122, 300, 20, $SS_SIMPLE+$SS_SUNKEN)

GUISetState()

While 1
$Msg = GUIGetMsg()
Switch $Msg
Case -3
Exit
Case
$SetData
GUICtrlSetData($StatusBar_Label, "Test")
EndSwitch
WEnd
Автор: Baloven1
Дата сообщения: 08.12.2007 04:30
gregaz
могу ошибаться, но попробуй передачу организовать через запуск скрипта подобно тому как ты бы его запустил из командной строки...
т.е. @ProgramFiles\AutoIt3Old\AutoIt3.exe test.au3
@ProgramFiles\AutoIt3NEW\AutoIt3.exe test1.au3
при таком раскладе запуск частей (имхо) нужно будет выполнять через внешний скрипт или bat-(cmd кому что нравится) файлы и организацию передачи переменных наверно только через файл или иное хранилище не имеющее отношения к AI... все это имхо и возможно работать и не будет, но вроде как должно заработать....
да кстати, возможно что прийдется и в #include прописывать полный путь к папке, дабы AI работающий в текущий момент брал только свои, а не от другой версии

Добавлено:
и кстати... ведь можно же из SciTE запустить обработчик (компиляцию, проверку синтаксиса, запуск и пр.) релиза или бета версии лежащей в подкаталоге @ProgramFiles\AutoIt3\Beta\

Добавлено:
gregaz
хм... очень интересную инфу обнаружил в справке (!!! ) для себя (в английской справке раздел "Running Scripts"
цитата:

Цитата:
So if your script is run like this:
AutoIt3.exe myscript.au3 param1 "this is another param"
$CmdLine[0] equals... 2
$CmdLine[1] equals... param1
$CmdLine[2] equals... this is another param
@ScriptName equals... myscript.au3

и далее:

Цитата:
Note : only 63 parameters can be return by $CmdLine[...], but $CmdLineRaw will always returns the entire command line.

т.е. исходя из полученной инфы можно сделать вывод, что (опять же имхо): в теории можно написать один скрипт который будет отвечать за обмен переменными в синтаксисе обоих версий, (т.е. чтобы его синтаксис поддерживался обоими используемыми версиями, ну или принудительного его запускать на той версии, под которую он написан) и в тексте скрипта передавать значения переменных параметрами при запуске скрипта с нужным обработчиком...
что получится отпишись - пробовать времени нет, а результат интересен
Автор: gregaz
Дата сообщения: 09.12.2007 00:03
Baloven1

Цитата:
т.е. исходя из полученной инфы можно сделать вывод, что (опять же имхо): в теории можно написать один скрипт который будет ...запускать на той версии, под которую он написан)


Вопрос : как лучше идентифицировать версию AI ?




Автор: ViSiToR
Дата сообщения: 09.12.2007 00:20
gregaz

Цитата:
как лучше идентифицировать версию AI ?



Код:
MsgBox(64, "Info", "AutoIt Version Is: " & GetAutoItVersion())

Func GetAutoItVersion()
Local $Au3_Path = StringRegExpReplace(@AutoItExe, '\\[^\\]+$', '') & "\AutoIt3.exe"
If @Compiled Then $Au3_Path = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt", "InstallDir") & "\AutoIt3.exe"

If FileExists($Au3_Path) Then Return FileGetVersion($Au3_Path)

$Au3_Path = @ProgramFilesDir & "\AutoIt3\AutoIt3.exe"
If FileExists($Au3_Path) Then Return FileGetVersion($Au3_Path)

$Au3_Path = @ScriptDir & "\AutoIt3"
If FileExists($Au3_Path) Then Return FileGetVersion($Au3_Path)

Return "Unknown"
EndFunc
Автор: Tipulatoid
Дата сообщения: 09.12.2007 03:09
Вот фргмент моего кода:

Код: $GroupGui_2_6 = GUICtrlCreateGroup("", 20, 210, 350, 43)
$LabelGui_2_6_1 = GUICtrlCreateLabel("Введите количество периодов (от 1 до 20):", 30, 222, 220, 17)
$InputGui_2_6_1 = GUICtrlCreateInput("12", 1, 1, 1, 1)
$UpDownGui_2_6_1 = GUICtrlCreateUpdown($InputGui_2_6_1)
GUICtrlSetPos($InputGui_2_6_1, 250, 220, 40, 17 )
GUICtrlCreateGroup("", -99, -99, 1, 1)
Автор: gregaz
Дата сообщения: 09.12.2007 05:04
ViSiToR,спасибо

Baloven1
Я пошел другим ( может быть варварским, дилетантским), но простым путем :
Переименовал екзешник новой версии в AutoIt3.exe в AutoIt31.exe,а скрипты создаваемые в новой версии в *.au31.
Все работает вроде бы и иконки скриптов *.au3 и *.au31 отличаются

Тем самым я убедился в возможности параллельного функционирования обеих версий ,а дальше можно и выполнить все более грамотно.Позже ведь все равно придется уходить из старой версии


Автор: Baloven1
Дата сообщения: 09.12.2007 05:41
Tipulatoid
Открываем кошелку.... ой сорри... справку
и смотрим ее по функции GUICtrlCreateUpdown читаем ее, читаем и натыкаемся на раздел... "Remarks"

Цитата:
Max and min value can be set with GUICtrlSetLimit.
By default Windows increases the value when clicking the upper arrow button.
Default height resizing is done according to the one of the related input control.

кликаем на ниперссылку GUICtrlSetLimit и открывается нашему взору вот это:

Цитата:
GUICtrlSetLimit
--------------------------------------------------------------------------------
Limits the number of characters/pixels for a control.
GUICtrlSetLimit ( controlID, max [, min] )
Parameters
controlID        The control identifier (controlID) as returned by a GUICtrlCreate... function.
max         For List controls it is the extent you can scroll horizontally in pixels.
For Input/Edit controls it is the max number of characters that can be entered.
min [optional]     For Slider and UpDown controls you can specify a min value. Default = 0

т.е. добавь строку:
GUICtrlSetLimit ($UpDownGui_2_6_1, 20, 1)

Добавлено:
PS синтаксис действителен и для новой и для старых версий...

примерно вот так должно получится

Код: #include <GuiConstants.au3> ;#include <GuiConstantsEx.au3> - для новой версии привел их для примера что можно с самой формой делалть и как...
#include <GuiListView.au3>

$Forms = GUICreate("Форма", 400, 400, 100, 100, BitOR($WS_MAXIMIZEBOX,$WS_MINIMIZEBOX,$WS_SIZEBOX, _
$WS_THICKFRAME,$WS_SYSMENU,$WS_CAPTION,$WS_OVERLAPPEDWINDOW,$WS_TILEDWINDOW,$WS_POPUP,$WS_POPUPWINDOW, _
$WS_GROUP,$WS_TABSTOP,$WS_BORDER,$WS_CLIPSIBLINGS)) ;стили назначил для примера
GUISetState(@SW_SHOW) ;отобразить окно

$GroupGui_2_6 = GUICtrlCreateGroup("", 20, 210, 350, 43)
$LabelGui_2_6_1 = GUICtrlCreateLabel("Введите количество периодов (от 1 до 20):", 30, 222, 220, 17)
$InputGui_2_6_1 = GUICtrlCreateInput("12", 1, 1, 1, 1) ;зачем перемещать control? его можно сразу в нужные координаты постовить вот так $InputGui_2_6_1 = GUICtrlCreateInput("12", 250, 220, 40, 17)
$UpDownGui_2_6_1 = GUICtrlCreateUpdown($InputGui_2_6_1)
GUICtrlSetPos($InputGui_2_6_1, 250, 220, 40, 17 )
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlSetLimit($UpDownGui_2_6_1, 20, 1)

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Автор: Baloven1
Дата сообщения: 09.12.2007 14:26

Цитата:
как подключится к SQL используюя доменные имя и пароль, при этом взяв их из системных данных

т.е. используюя Windows Authentication... Отвечу сам себе:
поискал по инету и нашел ответ на www.sql.ru в разделе программирование на Delfi
по сути все оказалось гораздо проще:

Код: Func SQLStart($BDConnect)
If @error then Msgbox(0,"Ошибка","Ошибка создания соединения ADODB.Connection")
$adCN = ObjCreate ("ADODB.Connection")
$sqlLastConnection = $adCN
;$sqlLastConnection.Open ("DRIVER={SQL Server};SERVER=ServerName;DATABASE=" & $BDConnect & ";uid=SQLLogin;pwd=Password;")
$sqlLastConnection.Open ("DRIVER={SQL Server};SERVER=sql;DATABASE=" & $BDConnect & ";")
if @Error then Msgbox(0,"",$SQLErr)
EndFunc
Автор: Tipulatoid
Дата сообщения: 10.12.2007 02:13
Baloven1
Да ... слона - то я и не приметил. Сорри за затуп.
Автор: dzeday
Дата сообщения: 10.12.2007 08:41
привет ALL
Помогите с такой проблемкой. Есть скрипт test.vbs, который лежит на шаре. Требуется запустить его от имени локального админа.
Вся проблема в том, что команда RunAsSet не не работает с ShellExecute. Пробывал запускать через IE
Run(@ProgramFilesDir&"\Internet Explorer\IEXPLORE.EXE \\путь\test.vbs")
не хочет запускать сам скрипт. Вопрос как реализовать запуск от имени VBS скрипта.
Автор: Tipulatoid
Дата сообщения: 10.12.2007 13:34
Рисую 3 Checkbox ' а : Checkbox1 , Checkbox1.1 и Checkbox1.2
Нужно, если в Checkbox1 пользователь галочку убирает, остальные 2 становились Disabled. Если ставит, то Enabled. Подскажите, плиз.
Добавлено:
Вроде решил.

Код: #include <GUIConstants.au3>


$Form1 = GUICreate("Form1", 633, 447, 193, 125)
$Group1 = GUICtrlCreateGroup("Group1", 80, 40, 297, 249)
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 136, 64, 81, 33)
GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox1_1 = GUICtrlCreateCheckbox("Checkbox2", 168, 104, 73, 49)
GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox1_2 = GUICtrlCreateCheckbox("Checkbox3", 168, 150, 73, 49)
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)

While 1
    $Msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
        ExitLoop
    Case $msg = $Checkbox1
        $CheckBox1Read = GUICtrlRead ($Checkbox1)
        If $CheckBox1Read = 4 Then
            GUICtrlSetState($Checkbox1_1, $GUI_DISABLE)
            GUICtrlSetState($Checkbox1_2, $GUI_DISABLE)
        Else
            GUICtrlSetState($Checkbox1_1, $GUI_ENABlE)
            GUICtrlSetState($Checkbox1_2, $GUI_ENABLE)
        EndIf
    EndSelect
WEnd
Автор: Maza Faka
Дата сообщения: 10.12.2007 15:56
Tipulatoid

Цитата:
Может изящнее способ есть?

Можно использовать функцию:

Код: #include <GUIConstants.au3>

$Form1 = GUICreate("Form1", 633, 447, 193, 125)

$Group1 = GUICtrlCreateGroup("Group1", 80, 40, 297, 249)
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 136, 64, 81, 33)
GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox1_1 = GUICtrlCreateCheckbox("Checkbox2", 168, 104, 73, 49)
GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox1_2 = GUICtrlCreateCheckbox("Checkbox3", 168, 150, 73, 49)
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlCreateGroup("", -99, -99, 1, 1)

GUISetState(@SW_SHOW)

While 1
$Msg = GUIGetMsg()
Select
Case
$msg = $GUI_EVENT_CLOSE
ExitLoop
Case
$msg = $Checkbox1
If GUICtrlRead($Checkbox1) = $GUI_UNCHECKED Then
Check($GUI_DISABLE)
Else
Check($GUI_ENABLE)
EndIf
EndSelect
WEnd

Func
Check($sState)
For $i = $Checkbox1_1 To $Checkbox1_2
GUICtrlSetState($i, $sState)
Next
EndFunc
Автор: Baloven1
Дата сообщения: 11.12.2007 07:45
dzeday
vbs скрипты нужно запускать с их обработчиком, т.е. набирая в строке (в консоли например) test.vbs винда фактически при водит ее к виду cscript.exe test.vbs или wscript.exe test.vbs
чем они отличаются? - ищем ответ в справке винды по словосочетанию "Сервер сценариев Windows" - ТАМ ВСЕ ЕСТЬ
и тогда у тебя должно все работать, т.е. твой скрипт должен иметь синтаксис примерно следующий:

Код: If Not IsAdmin() Then
RunAsSet('USER', @Computername, 'PASSWORD')
Run("wscript.exe \\путь\test.vbs")
Exit
EndIf
Автор: dzeday
Дата сообщения: 11.12.2007 09:49
спасибо. так и сделал. вопрос закрыт.
Автор: Sergey_AV
Дата сообщения: 12.12.2007 11:49
Народ, подскажите плииз - не могу понять в чем дело. Сделал скрипт для автоматической установки AutoCAD 2006 Russian:[more]
; User Var's
$SF_1 = "setup.exe"                ;         Setup File Name
$UR_1 = "xxx"                    ;         User Registration Code Part 1
$UR_2 = "xxxxxxxx"                ;         User Registration Code Part 2
$UR_3 = "Name"                 ;         User Registration Name
$UR_4 = "o"             ;         User Registration Surname
$UR_5 = "Firme"                 ;         User Registration Organization
$UR_6 = "o"                    ;         User Registration Supplier
$UR_7 = "o"                     ;         User Registration Phone No.


Run($SF_1)

; Welcome
WinWaitActive    ("Установка Autodesk","Перед установкой AutoCAD 2006 ","Button1")
ControlClick ("Установка Autodesk","Перед установкой AutoCAD 2006 ","Button1")
WinWaitActive    ("Установка AutoCAD 2006","Добро пожаловать в Мастер уста","Button1")
Sleep ( 5000 )
ControlClick ("Установка AutoCAD 2006","Добро пожаловать в Мастер уста","Button1")

; License
WinWait("Установка AutoCAD 2006","Страна или территори")
WinWaitActive("Установка AutoCAD 2006","Страна или территори")
Sleep ( 2000 )
Send("{TAB}{TAB}{UP}{ENTER}")

; Serial
WinWait("Установка AutoCAD 2006","Серийный номер ")
WinWaitActive("Установка AutoCAD 2006","Серийный номер ")
Sleep        ( 1550 )
SEND        ( $UR_1 )
Sleep        ( 250 )
SEND        ( $UR_2 )
ControlClick    ( "Установка AutoCAD 2006", "", "Button1" )

; User Information
WinWait("Установка AutoCAD 2006","Укажите в полях этог")
WinWaitActive("Установка AutoCAD 2006","Укажите в полях этог")
Sleep        ( 1250 )
SEND        ( $UR_3 )
SEND        ("{TAB}")
SEND        ( $UR_4 )
SEND        ("{TAB}")
SEND        ( $UR_5 )
SEND        ("{TAB}")
SEND        ( $UR_6 )
SEND        ("{TAB}")
SEND        ( $UR_7 )
SEND        ("{TAB}")

;ControlClick    ( "Установка AutoCAD 2006", "", "Button4" )
Send("{ENTER}")
Sleep        ( 250 )
Send("{ENTER}")
Sleep        ( 250 )
Send("{ENTER}")
Sleep        ( 250 )
Send("{ENTER}")
Sleep        ( 250 )
Send("{ENTER}")
Sleep        ( 250 )
Send("{ENTER}")

; Install Ends
WinWait( "Установка AutoCAD 2006","В&ывести файл Readme")
WinWaitActive( "Установка AutoCAD 2006","В&ывести файл Readme")
ControlClick    ( "Установка AutoCAD 2006", "", "Button1" )
Sleep(1000)
Send("{SPACE}")
Send("{ENTER}")

Exit
[/more] на основе скрипта для установки AutoCAD 2005, взятым на форуме MSFN. Для мониторинга вводимых команд использовал тулзу из шапки (ScriptWriter). Все вроде работает, НО... только с жесткого диска .
При попытке запустить установку с DVD-ROM (одновременно с Unattended-установкой Windows), все срубается. Такое ощущение, что "кто-то" (что-то) жмёт на клавиши раньше записанных действий, и весь автоматизм нарушается. Попытки отмониторить весь процес уже при установке с DVD-ROM к успеху не привели - ScriptWriter тупо зависает, и не дает сохранить лог действий. Ничего больше в голову не приходит - я в AutoIT начинающий. И ведь при установке с винта все РАБОТАЕТ БЕЗ ПРОБЛЕМ - пробовал на разных компах...
Что тут можно посоветовать?
И еще. При выполнении даже скомпиленного AutoIT-скрипта в трее остается значок, который продолжает "висеть", когда весь процесс нарушается (Script paused). Этого можно как-нибудь избежать? В опциях компиллера (Aut2Exe) я ничего об этом не нашел . Дело в том, что из-за этого нарушается весь процесс дальнейшей установки...



Добавлено:
Up
Автор: Widok
Дата сообщения: 12.12.2007 14:38
Sergey_AV

Цитата:
Добавлено:
Up


запрещено поднимать сообщения. в данном случае без наказания т.к попытка пресеклась антифлуд защитой.
Автор: dzeday
Дата сообщения: 12.12.2007 15:20
привет ALL
Подскажите как средствами AutoIT получить список нужной папки со всеми файлами и папками, что в ней?
Автор: Maza Faka
Дата сообщения: 12.12.2007 16:49
dzeday
Один из множества вариантов:

Код: Dim $Found

FileView("c:\temp", 1) ;Первый параметр путь к папке; второй параметр: "0" для отображения только каталогов, "1" для отображения каталогов и файлов

MsgBox(0, "", $Found)

Func FileView($sPath = @ScriptDir, $Flag = 1)
Local $sRet
Local $Find_First = FileFindFirstFile($sPath & "\*.*")
If @error Then Return

While
1
$FindNext = FileFindNextFile($Find_First)
If @error Then ExitLoop
$Full_File = $sPath &"\"& $FindNext
If StringInStr(FileGetAttrib($Full_File), "D") Then
$Found &= $Full_File & @CRLF
$sRet = FileView($Full_File, $Flag)
ElseIf $Flag Then
$Found &= $Full_File & @CRLF
EndIf
WEnd
FileClose($Find_First)
EndFunc
Автор: Baloven1
Дата сообщения: 12.12.2007 17:50
Sergey_AV
в товоем скрипте пожалуй не хватает фокусировки на конкретные Control'ы без наличия самого инсталятара сказать сложно, но не факт что во время инстала винды на чистой системе попросту успевает сфокусироваться нужный контрол в который посылаться должны клавиши.... и второе вполне возможно что и фокус-то не на этом окне: делаем вывод:
строки вида WinWaitActive("название окна","текст") (данная строка ждет когда же появится окно но написанное ниже имхо будет не лишним)
меняем на 3 строки вида:
WinWait ("название окна","текст")
WinActivate("название окна","текст")
WinWaitActive("название окна","текст")
далее:
вот это фрагмент:
; License
WinWait("Установка AutoCAD 2006","Страна или территори")
WinWaitActive("Установка AutoCAD 2006","Страна или территори")
Sleep ( 2000 )
Send("{TAB}{TAB}{UP}{ENTER}")
здесь ты пытаешься клавишами перейти к нужному контролу!!!! - это вовсе не всегда работает пользуй фокус на конкретные контролы в которые тебе необходимо отправить (ввести) данные:
команда фокусировки
"Установить фокус ввода на указанном элементе окна.
ControlFocus ( "title", "text", controlID)"
указать данные для контрола:
"Указать текст для управляющего элемента.
ControlSetText ( "title", "text", controlID, "new text" [, flag] )"
или просто имитировать нажатие клавишь через Send (имхо крайне нежелательно )
нажатия на кнопки в форме (имитация нажатия мышкой):
"Симулировать нажатие кнопки мыши для заданного управляющего элемента.
ControlClick ( "title", "text", controlID [, button] [, clicks]] )"
при таком раскладе Sleep можно вообще поубивать
теперь предвещая вопрос "Где взять controlID?"
в комплекте в AI есть утилита "AutoIt Window Info" она и текст и положение контролов покажет и из controlID... напиши все ручками - и тебе же полезней будет...
все утилиты подобной что ты использовал - после них все равно нужно все править руками... а один раз почитав справку (на сайте AI есть рускоязычная справка для версии v3.2.5.4 - собственно из нее описание выше и привел...
будут вопросы спрашивай - ответим

PS. бывают случаи когда контролы попросту не имеют названий или их невозможно получить средствами "AutoIt Window Info" (имею богатый опыт создания дисков автоматической установки винды в полном боекомплекте, но в основном из сети ) в данном случае лично я пользовал фокусировку мышью по относительным координатам внутри окна формы диалоги... если это твой случай - то смотри в сторону:
"Выполнить нажатие клавиши мыши
MouseClick( "button" [[[,x ,y] ,clicks],speed] )"
Автор: ViSiToR
Дата сообщения: 12.12.2007 18:17
Maza Faka

Цитата:
Один из множества вариантов

Вот ещё один, только без рекурсии и глобальных переменных


Код: #include <Array.au3>

$aFilesList = _FileListToArrayParse(@SystemDir & "\Config", "*", -1)
_ArrayDisplay($aFilesList)

Func _FileListToArrayParse($sPath, $sMask="*", $iMode=-1) ;$iMode > 0 только папки, иначе папки + файлы
If Not StringInStr(FileGetAttrib($sPath), "D") Then Return SetError(1, 0, 0)

Local $PathesArr[2] = [1, $sPath]
Local $hSearch, $sFindNext, $i

While $i < $PathesArr[0]
$i += 1
$hSearch = FileFindFirstFile($PathesArr[$i] & "\" & $sMask)
If $hSearch = -1 Then ContinueLoop
While
1
$sFindNext = FileFindNextFile($hSearch)
If @error Then ExitLoop
$sFindNext = $PathesArr[$i] & "\" & $sFindNext
If $iMode <= 0 Or ($iMode = 1 And StringInStr(FileGetAttrib($sFindNext), "D")) Then
$PathesArr[0] += 1
ReDim $PathesArr[$PathesArr[0]+1]
$PathesArr[$PathesArr[0]] = $sFindNext
EndIf
WEnd

FileClose($hSearch)
Wend
Return
$PathesArr
EndFunc
Автор: Sergey_AV
Дата сообщения: 13.12.2007 08:17
Baloven1

Спасибо, буду пробовать. Наверняка еще и вопросы появятся .
Мне просто повезло наткнуться на код командной строки для Автокада, но, думаю, разобраться в скрипте будет не лишним - на "подходе" SPDS Graphics (приблуда для Автокада), там заблокированна silent-установка .
Автор: Tipulatoid
Дата сообщения: 13.12.2007 17:23
Kirillhome мне дал очень хороший скрипт VBS, что выводит список всех подключений в системе:

Код: Const NETWORK_CONNECTIONS = &H31&
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(NETWORK_CONNECTIONS)
Set objFolderItem = objFolder.Self
Wscript.Echo objFolderItem.Path
Set colItems = objFolder.Items
For Each objItem in colItems
Wscript.Echo objItem.Name
Next
Автор: ViSiToR
Дата сообщения: 13.12.2007 21:58
Представляю вашему вниманию “AutoIt Menu для Opera!




Это меню предназначено для быстрого/удобного доступа к ресурсам AutoIt'а (как сетевые ресурсы, так и локальные инструменты).

[more=Скриншоты (спрятанный фрагмент)...]

Main Menu [AutoIt Forum Expanded]


Tools Menu


Preferences Dialog


Integration Dialog
[/more]


Качаем отсюда


P.S
Меню полностью на Английском, правда имя самого меню может быть указано на любом языке при интеграции, но рекомендуется прописать его латиницей (во избежании конфликтов с кодировками).
При желании/знании можно всё изменить (перепаковать исходники с ресурсами, которые могут быть доступны по запросу).


P.P.S
Принимаются с радостью комменты/замечания/предложения/оскорбления/бросание помидоров и т.д.

А также хотел бы узнать, кто юзает Opera среди AutoIt-скриптеров?

Добавлено:

Tipulatoid


Цитата:
перепишите его на Autoit



Код:
Const $NETWORK_CONNECTIONS = 49

$objShell = ObjCreate("Shell.Application")
$objFolder = $objShell.Namespace($NETWORK_CONNECTIONS)
$objFolderItem = $objFolder.Self

MsgBox(0, "", $objFolderItem.Path)

$colItems = $objFolder.Items

For $objItem In $colItems
MsgBox(0, "", $objItem.Name)
Next
Автор: euheny
Дата сообщения: 14.12.2007 07:52
ViSiToR

Цитата:
Представляю вашему вниманию

А чего толстое такое ? (пока не качал)

Цитата:
кто юзает Opera среди AutoIt-скриптеров?

а зачем это - я вот предлагал сделать выборочную чистку кэша (вроде как) - а толку ?

такой вот вопросик по AutoIt
как остановить на время процесс (а потом продолжить) ?

ну и ещё раз хочу поднять тему по поводу запускака AutoIt-прог как сервисов - есть какая инфа ?
Автор: ViSiToR
Дата сообщения: 14.12.2007 19:15
euheny

Цитата:
А чего толстое такое ?

Там инструменты для AutoIt включены.


Цитата:
а зачем это

Поставь, узнаешь


Цитата:
я вот предлагал сделать выборочную чистку кэша

Не реализуемо (имхо) - и я если честно не вижу в этом особого смысла.


Цитата:
как остановить на время процесс

Есть функция:


Код:
_ProcessPauseSwitch("ProcName.exe", True)
Sleep(1500)
_ProcessPauseSwitch("ProcName.exe", False)

Func _ProcessPauseSwitch($iPIDOrName, $iSuspend = True)
If IsString($iPIDOrName) Then $iPIDOrName = ProcessExists($iPIDOrName)
If Not $iPIDOrName Then Return SetError(1, 0, 0)
Local $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $iPIDOrName)
If $iSuspend Then
Local
$i_sucess = DllCall("ntdll.dll", "int", "NtSuspendProcess", "int", $ai_Handle[0])
Else
Local
$i_sucess = DllCall("ntdll.dll", "int", "NtResumeProcess", "int", $ai_Handle[0])
EndIf
DllCall('kernel32.dll', 'ptr', 'CloseHandle', 'ptr', $ai_Handle)
If IsArray($i_sucess) Then Return 1
Return SetError(2, 0, 0)
EndFunc
Автор: Tipulatoid
Дата сообщения: 15.12.2007 06:30
ViSiToR

Цитата:
А также хотел бы узнать, кто юзает Opera среди AutoIt-скриптеров?

Я юзаю Opera - forever.
Классное меню Скачал и пользуюсь Удобно! Thnx
Автор: euheny
Дата сообщения: 16.12.2007 00:15
ViSiToR

Цитата:
Поставь, узнаешь

Слушай - не получаетя
1.Не находит аутоит
2.Мне вобще нужен выбор директории - ведь толстоват !

Может скажи что делать с

AutoIt_Menu_Tools
AutoIt_Menu_Icons
AutoIt_Menu.ini
AutoIt_Menu_Skin.ini

а я уж дальше потиху сам доделаю


А что ты думаеш по-поводу того, что аутоит содержит внутри слишком много функций, которые можно было бы сделать УДФ, таким образом уменьшив толстеющего в стиле $MS$ AutoItSC.bin ?
Исходники доступны ?

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192

Предыдущая тема: Quintura Search


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