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

» AutoIT

Автор: telyakov
Дата сообщения: 28.10.2008 16:43
Спасибо, Уважаемый MazaFaka!

Код: _FileCopy("D:\wallpaper", "e:\test")

;~ 16 Respond with "Yes to All" for any dialog box that is displayed.
;~ 256 Display a progress dialog box but do not show the file names.


Func _FileCopy($Source, $Dest)
Local $FOF_RESPOND_YES = 16
Local $FOF_SIMPLEPROGRESS = 256

If Not FileExists($Dest) Then DirCreate($Dest)

$objShell = ObjCreate("Shell.Application")
$objFolder = $objShell.NameSpace($Dest)
$objFolder.CopyHere($Source)
EndFunc
Автор: ViSiToR
Дата сообщения: 28.10.2008 17:03
telyakov 14:01 28-10-2008
Цитата:
красиво копировать директорию

Я как то давно выкладывал функцию для копирования каталога с прогрессом, правда ещё многое нужно дорабатывать, скачать можно отсюда.

Nikkorot 14:39 28-10-2008
Цитата:
родных функций получается нет

Нет. Для создания массива на самом деле не нужны функции (см Dim в справке).


Цитата:
Получается на каждый столбец по функции

Нет, можно сделать также и для 3-его столбца, и т.д.
Автор: dzeday
Дата сообщения: 28.10.2008 17:08
Привет All
Помогите решить задачку: Необходимо запустить приложение на удаленной машине с админскими правами. машина в домене. Помогите решить данную проблему.
Автор: ViSiToR
Дата сообщения: 28.10.2008 17:11
telyakov 16:43 28-10-2008
Цитата:
Работает! Супер!

Мне почему то казалось что нужно не с системным диалогом, а с самопальным
Автор: telyakov
Дата сообщения: 28.10.2008 19:22
Спасибо!
Смотрю самопальный вариант!
Алик
Автор: timsky
Дата сообщения: 28.10.2008 20:07
Tipulatoid
Спасибо большое, пригодится. Как раз иногда подобное нужно.
Автор: Nikkorot
Дата сообщения: 28.10.2008 20:55
Спасибо за помощь. Пробовал с ftp получать атрибуты файла функцией _FTPFileFindFirst и _FTPFileFindNext, так кроме размера ничего не выдало. В чем может быть причина ?
Автор: NORIO
Дата сообщения: 29.10.2008 00:32
ViSiToR

Цитата:
В шапке есть функция для получения пронумерованного списка классов окна, вот на каждый класс нужно применить ControlGetHandle().

Добавлено:
Вот так примерно:


Пасиб. То что надо.
Автор: Tipulatoid
Дата сообщения: 29.10.2008 03:02
Nikkorot

Цитата:
Спасибо за помощь. Пробовал с ftp получать атрибуты файла функцией _FTPFileFindFirst и _FTPFileFindNext, так кроме размера ничего не выдало. В чем может быть причина ?


Функции _FTPFileFindFirst и _FTPFileFindNext возвращают массив метаданных о файле. Карта массива (я не все в ней понял, так что без перевода):
1-ая строка - File Attributes
2-ая строка - Creation Time Low
3-ья строка - Creation Time High
4-ая строка - Access Time Low
5-ая строка - Access Time High
6-ая строка - Last Write Low
7-ая строка - Last Write High
8-ая строка - File Size High
9-ая строка - File Size Low
10-ая строка - File Name
11-ая строка - Altername
В том примере, что я давал, мы записывали в массив $aFileList десятые строки - т.е. имена файлов. В этом случае тебе нужно записывать или выводить на экран каким-либо способом первые строки
timsky
Пожалуйста
Автор: Nikkorot
Дата сообщения: 29.10.2008 05:59
Так я так и делал, но почему-то возвращаются пустые строки. Единственно нормально возвращает только размер.
Автор: Tipulatoid
Дата сообщения: 29.10.2008 06:27
Nikkorot

Цитата:
Так я так и делал, но почему-то возвращаются пустые строки. Единственно нормально возвращает только размер.

Не знаю, у меня всё работает
Массив $aFileAttribsList содержит коды атрибутов (128 - для файла, 16 - для папки)


ftp2.au3 :
Код: #include <ftp.au3>
#include <Array.au3>

$server = 'ftp.narod.ru'
$username = 'delta-greit'
$pass = 'не_скажу'
$dir = '/Greit4/Semifinals/*.*'

$Hand =
_FTPOpen('Doesnt Matter')
$Ftpc =
_FTPConnect($Hand, $server, $username, $pass)
if @error then
MsgBox(0,"Error","Connect Error")
Exit
EndIf

Dim
$aFileNamesList[1]
Dim $aFileAttribsList[1]
$Ftpff=
_FTPFileFindFirst($Hand, $dir)
_ArrayAdd ($aFileNamesList, $Ftpff[10])
_ArrayAdd ($aFileAttribsList, $Ftpff[1])

While 1
$file =
_FTPFileFindNext($Hand)
If @error Then ExitLoop
_ArrayAdd ($aFileNamesList, $file[10])
_ArrayAdd ($aFileAttribsList, $file[1])
WEnd

$Ftpffc =
_FTPFileFindClose($Hand)
$Ftpc =
_FTPClose($Hand)

_ArrayDisplay($aFileNamesList)
_ArrayDisplay($aFileAttribsList)
Автор: Nikkorot
Дата сообщения: 29.10.2008 06:52
Да коды атрибутов тоже показывает, а вот все остальное (дату создания, время создания) нет.
Автор: Tipulatoid
Дата сообщения: 29.10.2008 07:26
Nikkorot

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

Да, у меня тоже. Думаю, лучше в топике этой UDF спросить.
Автор: Nikkorot
Дата сообщения: 29.10.2008 08:12
запостил туда, но по моему туда редко кто заходит.
Автор: Tipulatoid
Дата сообщения: 29.10.2008 08:32
Nikkorot

Цитата:
запостил туда, но по моему туда редко кто заходит.

Ты не туда запостил. Есть несколько версий ftp.au3, написанных разными авторами. Надо постить в тот топик, на который я дал ссылку предыдущем сообщении. А вообще что-нибудь да ответят, у меня еще не было случая, чтоб не ответили.
Автор: ziherun
Дата сообщения: 29.10.2008 10:08
Народ помогите плз. Нужно чтобы при появлении определенного цвета пикселя на экране нажималась определенная клавиша. Только не посылайте мня в поиск или справку все перерыл, но так и не понял ничего. В скрипте нужно заранее указать цвет пикселя, а не снять его с помощью команды PixelGetColor(x,y)
Автор: Maza Faka
Дата сообщения: 29.10.2008 11:05
ziherun

Цитата:
Только не посылайте мня в поиск или справку

Ну запости хотя-бы код, что пытался сделать.
Автор: ziherun
Дата сообщения: 29.10.2008 11:15
#include <GUIConstants.au3>
Global $Paused
HotKeySet("{home}", "bu")

Func bu()
    $Paused = NOT $Paused
    $hWnd = WinGetHandle("")
    $checksum = PixelGetColor (20, 20) ;Указываем координаты в которых будем отслеживать изменение контрольной суммы пикселей
$checksum = ;думал сюда надо написать цвет
while $Paused
    ToolTip("Run",0,20)
If $checksum <> PixelGetColor (20, 20) Then
ControlSend($hWnd, "", "", "{f1}")
EndIf
WEnd
    ToolTip("")
EndFunc

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Автор: lex83_2002
Дата сообщения: 29.10.2008 11:55
Ребят, подскажите
Func
If $a<$b Then "EndFunc"

Else
.
.
.

EndIf
.
.
.

EndFunc
Т.е. как закончить выполнение данной функции по условию, но не выходит полностью из программы, т.е завершить только данную функцию!
Автор: Loopback
Дата сообщения: 29.10.2008 12:44
ziherun

Цитата:
$checksum = ;думал сюда надо написать цвет

Правильно, сюда и надо, а предыдущую строчку можно убрать. Цвет задается в формате RGB, например 0x00FF00 - зеленый.

Цитата:
If $checksum <> PixelGetColor (20, 20) Then

А тут должно быть равенство, иначе кнопка будет нажиматься, когда цвет другой.

lex83_2002

Return тебе поможет

Автор: XpycTMD
Дата сообщения: 29.10.2008 12:52
Всем Привет

Есть программа для просмотра результатов тестирования. Выглядит вот так:


Вот то что выдает [more=AutoIt Info]>>>> Window <<<<
Title:    UniTest System: Report - {Z:\Results\UTResults.utr}
Class:    TMemoMenu
Position:    -4, -4
Size:    1688, 1028
Style:    0x17CF0000
ExStyle:    0x00010100
Handle:    0x001D0562

>>>> Control <<<<
Class:    TRxDBGrid
Instance:    1
ClassnameNN:    TRxDBGrid1
Advanced (Class):    [CLASS:TRxDBGrid; INSTANCE:1]
ID:    30279214
Text:    
Position:    0, 28
Size:    1680, 704
ControlClick Coords:    1238, 212
Style:    0x54210000
ExStyle:    0x00000000
Handle:    0x01CE062E

>>>> Mouse <<<<
Position:    1238, 278
Cursor ID:    2
Color:    0xD4D0C8

>>>> StatusBar <<<<

>>>> Visible Text <<<<
Помощь
Навигация
Печать
Редактирование
Безопасность
Основные


>>>> Hidden Text <<<<
[/more]

Необходимо узнать кол-во строк в списке.
Пробовал использовать ControlListView("UniTest System: Report - {Z:\Results\UTResults.utr}", "", "TRxDBGrid1", "GetItemCount")
Возращает 0

Подскажите плизз как узнать кол-во строк в списке.


Зараниее благодарен.
Автор: Loopback
Дата сообщения: 29.10.2008 13:58
XpycTMD
Судя по названию контрола - это не ListView, а грид, причем программа на Delphi. А раз так, работать с ним функцией ControlListView не получится.

Глянул исходники гридов в VCL - ничего майкрософтовского под ними нет, контрол полностью рисованный. Сомневаюсь, что с ним что-то удастся сделать извне.
Автор: XpycTMD
Дата сообщения: 29.10.2008 15:16
Loopback
Спасибо за пояснения.

Буду надеятся что народные умельцы что нибудь да и придумают.
Автор: Nikkorot
Дата сообщения: 29.10.2008 15:21
Уважаемый ViSiToR, не могли бы вы расписать вот эту функцию подробно. а то я чего-то туплю.

#include <Array.au3> ;Only for _ArrayDisplay

Dim $a2DArray = _Array2DCreate("Jon|Jimmy|Mike|George|Gary", "1|2|3|4|5")

_ArrayDisplay($a2DArray, "_Array2DCreate Demo")

Func _Array2DCreate($s1DStr, $s2DStr, $sDelim="|")
Local $a2DArray[1][1], $iUbound
Local $aBiggestArray = StringSplit($s1DStr, $sDelim)
Local $aSmallestArray = StringSplit($s2DStr, $sDelim)

If UBound($aSmallestArray) > UBound($aBiggestArray) Then
Local $aTmpArr = $aBiggestArray
$aBiggestArray = $aSmallestArray
$aSmallestArray = $aTmpArr
EndIf

ReDim $aSmallestArray[UBound($aBiggestArray)]

For $i = 1 To UBound($aBiggestArray)-1
$iUbound = UBound($a2DArray)
ReDim $a2DArray[$iUbound+1][2]

$a2DArray[$iUbound][0] = $aBiggestArray[$i]
If $aSmallestArray[$i] <> "" Then $a2DArray[$iUbound][1] = $aSmallestArray[$i]
Next

$a2DArray[0][0] = $iUbound
Return $a2DArray
EndFunc

Не могу понять как функция присваивается раньше чем описывается.
Переменной $iUbound = UBound($a2DArray) присваивается пустое значение.
Но ведь работает.

Извиняюсь за непонимание.
Спасибо.
Автор: ViSiToR
Дата сообщения: 29.10.2008 23:49
Nikkorot 15:21 29-10-2008
Цитата:
как функция присваивается раньше чем описывается.

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


Цитата:
Переменной $iUbound = UBound($a2DArray) присваивается пустое значение

Где? UBound возвращает размерность массива
Автор: Tipulatoid
Дата сообщения: 30.10.2008 04:24
Как известно, Windows имеет встроенную функциональность по работе с zip-архивами. Если в системе не стоит WinZip, WinRar или что подобное; Проводник отображает zip-архивы как сжатые папки.

Можно ли использовать эту функциональность для создания zip - архивов?
На офф. форуме есть пример такого скрипта, но чего-то у меня не работает. Пустой zip-архив создает, а файлы в него не добавляет. Может, из-за того, что у меня в системе WinRar стоит?
пример неработающего скрипта

Код: _ZipCreate(@ScriptDir & "\test.zip")
_ZipAdd(@ScriptDir & "\exit64.ico", @ScriptFullPath)

Func _ZipCreate($sZip)
If not StringLen(Chr(0)) Then Return SetError(1)
Local $sHeader = Chr(80) & Chr(75) & Chr(5) & Chr(6), $hFile
For $i = 1 to 18
$sHeader &= Chr(0)
Next
$hFile = FileOpen($sZip, 2)
FileWrite($hFile, $sHeader)
FileClose($hFile)
EndFunc

Func _ZipAdd($sZip, $sFile)
If not StringLen(Chr(0)) Then Return SetError(1)
     ConsoleWrite ("ok1" & @CRLF)
If not FileExists($sZip) or not FileExists($sFile) Then Return SetError(2)
     ConsoleWrite ("ok2" & @CRLF)
Local $oShell = ObjCreate('Shell.Application')
    ConsoleWrite ("ok3" & @CRLF)
If @error or not IsObj($oShell) Then Return SetError(3)
     ConsoleWrite ("ok4" & @CRLF)
Local $oFolder = $oShell.NameSpace($sZip)
    ConsoleWrite ("ok5" & @CRLF)
If @error or not IsObj($oFolder) Then Return SetError(4)
     ConsoleWrite ("ok6" & @CRLF)
$oFolder.CopyHere($sFile)
    ConsoleWrite ("ok7" & @CRLF)
Sleep(500)
    ConsoleWrite ("ok8" & @CRLF)
EndFunc

Func _ZipList($sZip)
If not StringLen(Chr(0)) Then Return SetError(1)
If not FileExists($sZip) Then Return SetError(2)
Local $oShell = ObjCreate('Shell.Application')
If @error or not IsObj($oShell) Then Return SetError(3)
Local $oFolder = $oShell.NameSpace($sZip)
If @error or not IsObj($oFolder) Then Return SetError(4)
Local $oItems = $oFolder.Items()
If @error or not IsObj($oItems) Then Return SetError(5)
Local $i = 0
For $o in $oItems
$i += 1
Next
Local $aNames[$i + 1]
$aNames[0] = $i
$i = 0
For $o in $oItems
$i += 1
$aNames[$i] = $oFolder.GetDetailsOf($o, 0)
Next
Return $aNames
EndFunc
Автор: Maza Faka
Дата сообщения: 30.10.2008 06:30
Tipulatoid
У меня этот код отрабатывает нормально, но архив получается битым. Глянь здесь, вроде бы по тому же алгоритму вполне рабочий код
Автор: Tipulatoid
Дата сообщения: 30.10.2008 11:05
Maza Faka
Да, смотрел тот пример тоже. Мне он не понравился, т.к. тормозит у меня дюже (1.1 секунды на 8,5 Kb файл - по-моему много). Буду использовать твою UDF, это быстрее и надежнее
Я тут подумал: может у меня COM - объекты в системе отключены, как Visitor говорил. Как это проверить можно?
Автор: ViSiToR
Дата сообщения: 30.10.2008 13:58
Tipulatoid 11:05 30-10-2008
Цитата:
Как это проверить можно?

Например так:


Код:
$oShell = ObjCreate("WScript.Shell")
$oShell.Run("Notepad.exe")
Автор: telyakov
Дата сообщения: 30.10.2008 16:00
Спасибо, ViSiToR a.k.a CreatoR! 17:03 28-10-2008


Цитата:
telyakov 14:01 28-10-2008
Цитата:
красиво копировать директорию

Я как то давно выкладывал функцию для копирования каталога с прогрессом, правда ещё многое нужно дорабатывать, скачать можно отсюда.


Код работает чудесно!

С уважением Алик Теляков!

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192

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


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