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

» AutoIT

Автор: ViSiToR
Дата сообщения: 03.10.2007 19:38
euheny

Цитата:
как автоматизировать работу 7zip (gui-версию)

А почему именно Гуи? намного проще использовать консольную версию
Автор: aleax
Дата сообщения: 03.10.2007 23:02
Можно ли с помощью Auto it и RegExp из бинарного файла который начинается так:

Код: KLsw'
Serial Number: 04E8-000486-00DE599B
KLsw -- ь              ( Kaspersky Labs GmbH            ( ComputerBild      ( Germany      (1 leserfragen.kaspersky-vollversion@computerbild.de     я ( Kaspersky lab key file      Ч
Автор: ViSiToR
Дата сообщения: 04.10.2007 00:43
aleax


Цитата:
получить строчку

Можно конечно:


Код: $File = @ScriptDir & "\Serial.txt"
$ReadFile = FileRead($File)

$SN = StringRegExp($ReadFile, '(?i)Serial Number:(.*)', 3)
$SN = StringStripWS($SN[0], 3)

MsgBox(64, "Results", "The serial number is: " & $SN)
Автор: euheny
Дата сообщения: 04.10.2007 00:47
ViSiToR

причин много

отвратительное окошко
проблемы с unicode
ну и красота конечно

вот потылкался - вроде сдвинулся

но непонятно как узнать была-ли ошибка, да ещё хотелось бы и отчёт сохранить

а лично ты чем скрипты редактируеш ?

aleax
да выкладывали эту утилю - конвертит black.lst в txt

Автор: ViSiToR
Дата сообщения: 04.10.2007 01:09
euheny

Цитата:
как узнать была-ли ошибка

Консольная версия возвращает коды ошибок на выходе, почитай справку к 7z (там и об отчёте есть инфа ).


Цитата:
чем скрипты редактируеш ?

SciTE естественно
Автор: euheny
Дата сообщения: 04.10.2007 09:33
ViSiToR
Цитата:
Консольная версия
А мне нужна gui - у AutoIT вроде как чего-то есть для этого.
Цитата:
там и об отчёте есть инфа
ткни носом - в упор не вижу


Цитата:
SciTE естественно
А где берёш ?



Автор: Kauffman
Дата сообщения: 04.10.2007 13:33
Дайте кто-нить ссылки на российские ресурсы по AutoIt. А то сам не нашел.
Автор: Elroir
Дата сообщения: 04.10.2007 13:44
Kauffman
Если имеются в виду ресурсы на русском языке, тогда добро пожаловать в шапку, раздел "Помощь по AutoIT"
Автор: ViSiToR
Дата сообщения: 04.10.2007 16:39
euheny

Цитата:
ткни носом

Инструмент Au3Info + Справка.


Цитата:
А где берёш ?

Как где, он идёт в пакете с AutoIt
Автор: euheny
Дата сообщения: 04.10.2007 19:46
ViSiToR

Цитата:
Инструмент Au3Info + Справка.


так я вобщето

Цитата:
почитай справку к 7z (там и об отчёте есть инфа )



Цитата:
Как где, он идёт в пакете с AutoIt

тогда ребровидный вопрос :
почему не отсюда ?


Автор: ViSiToR
Дата сообщения: 05.10.2007 01:41
euheny

Цитата:
так я вобщето

Я это о справке к AutoIt ... но в справк к 7z есть и раздел о версии командной строки..

Если нужно управлять гуи элементами в обычной версии, то используй инструмент Au3Info, поизучай какие класы имеют эти элементы, и соотв-но используй нужные функции (ControlGetText, ControlCommand и т.д).


Цитата:
почему не отсюда

Потому что там не для AutoIt, в паке с AutoIt специально заточанная версия.. его (SciTE) кстати и отдельно можно скачать, со всеми фичами - http://www.autoitscript.com/autoit3/scite/downloads.shtml (по ссылке с шапки Страница загрузки: ).
Автор: euheny
Дата сообщения: 05.10.2007 07:55
ViSiToR

Цитата:
специально заточанная версия

интересно а в чём это проявляется ?


Цитата:
и соотв-но используй нужные функции

а для gui как нибудь применяются $STDERR_CHILD, $STDIN_CHILD и $STDOUT_CHILD ?
и если до, то есть примеры ?





Добавлено:
aleax

Цитата:
да выкладывали эту утилю - конвертит black.lst в txt

не то ответил
но KeyViewer также выкладывали
Автор: aleax
Дата сообщения: 05.10.2007 09:27
euheny

Цитата:
не то ответил
но KeyViewer также выкладывали

да знаю я и про KeyViewer и про KAVblackList,
но я писал небольшое дополнение к последнему
http://forum.ru-board.com/topic.cgi?forum=35&topic=34278&start=1700#3
Автор: ViSiToR
Дата сообщения: 05.10.2007 10:24
euheny

Цитата:
в чём это проявляется ?

Подсветка синтаксиса, проверка синтаксиса, дополнительные утилиты, и многое другое... а вот теперь мне стало интересно - в каком редакторе набираешь ты?


Цитата:
для gui как нибудь применяются $STDERR_CHILD, $STDIN_CHILD и $STDOUT_CHILD ?

Нет связи, что такое STDxxx почитай тут.

Если 7zip пишет в STD, тогда можно попробовать получить данные (я не вкурсе т.к не работал с графической версией).
Автор: euheny
Дата сообщения: 06.10.2007 07:14
ViSiToR

Цитата:
Если 7zip

Ладно, погоняю - а там видно будет

Есть ещё пара воросов :

Известен ли способ осуществления прямого достапа к диску ?

Можно-ли переключить разрешение экрана ?


Цитата:
Подсветка синтаксиса

А кто у нас главный раскрасчик ?


Цитата:
проверка синтаксиса, дополнительные утилиты, и многое другое...

давай обсудим конкретные случаи


Цитата:
в каком редакторе набираешь ты?

ответ логичен


Автор: ViSiToR
Дата сообщения: 06.10.2007 07:35
euheny

Цитата:
Известен ли способ осуществления прямого достапа к диску ?

Подробнее.


Цитата:
Можно-ли переключить разрешение экрана ?

Где на оф. форуме видел решение, найду, сообщу


Цитата:
А кто у нас главный раскрасчик ?

Не понял вопроса.


Цитата:
давай обсудим конкретные случаи

Не понял № 2


Цитата:
ответ логичен

В блокноте?

Добавлено:

Цитата:
Можно-ли переключить разрешение экрана ?


Цитата:
Где на оф. форуме видел решение, найду, сообщу

Нашёл:


Код: $iWidth = 1024
$iHeight = 768
$iBitsPP = 32
$iRefreshRate = 60

$vRes = _ChangeScreenRes($iWidth, $iHeight, $iBitsPP, $iRefreshRate)
If @error Then
MsgBox(262160, "ERROR", "Unable to change screen - check parameters")
EndIf

;===============================================================================
;
; Function Name: _ChangeScreenRes()
; Description: Changes the current screen geometry, colour and refresh rate.
; Version: 1.0.0.1
; Parameter(s): $i_Width - Width of the desktop screen in pixels. (horizontal resolution)
; $i_Height - Height of the desktop screen in pixels. (vertical resolution)
; $i_BitsPP - Depth of the desktop screen in bits per pixel.
; $i_RefreshRate - Refresh rate of the desktop screen in hertz.
; Requirement(s): AutoIt Beta > 3.1
; Return Value(s): On Success - Screen is adjusted, @ERROR = 0
; On Failure - sets @ERROR = 1
; Forum(s): http://www.autoitscript.com/forum/index.php?showtopic=20121
; Author(s): Original code - psandu.ro
; Modifications - PartyPooper
;
;===============================================================================

Func _ChangeScreenRes($i_Width = @DesktopWidth, $i_Height = @DesktopHeight, $i_BitsPP = @DesktopDepth, $i_RefreshRate = @DesktopRefresh)
Local Const $DM_PELSWIDTH = 0x00080000
Local Const $DM_PELSHEIGHT = 0x00100000
Local Const $DM_BITSPERPEL = 0x00040000
Local Const $DM_DISPLAYFREQUENCY = 0x00400000
Local Const $CDS_TEST = 0x00000002
Local Const $CDS_UPDATEREGISTRY = 0x00000001
Local Const $DISP_CHANGE_RESTART = 1
Local Const $DISP_CHANGE_SUCCESSFUL = 0
Local Const $HWND_BROADCAST = 0xffff
Local Const $WM_DISPLAYCHANGE = 0x007E
If $i_Width = "" Or $i_Width = -1 Then $i_Width = @DesktopWidth ; default to current setting
If $i_Height = "" Or $i_Height = -1 Then $i_Height = @DesktopHeight ; default to current setting
If $i_BitsPP = "" Or $i_BitsPP = -1 Then $i_BitsPP = @DesktopDepth ; default to current setting
If $i_RefreshRate = "" Or $i_RefreshRate = -1 Then $i_RefreshRate = @DesktopRefresh ; default to current setting
Local $DEVMODE = DllStructCreate("byte[32];int[10];byte[32];int[6]")
Local $B = DllCall("user32.dll", "int", "EnumDisplaySettings", "ptr", 0, "long", 0, "ptr", DllStructGetPtr($DEVMODE))
If @error Then
$B = 0
SetError(1)
Return $B
Else
$B = $B[0]
EndIf
If
$B <> 0 Then
DllStructSetData($DEVMODE, 2, BitOR($DM_PELSWIDTH, $DM_PELSHEIGHT, $DM_BITSPERPEL, $DM_DISPLAYFREQUENCY), 5)
DllStructSetData($DEVMODE, 4, $i_Width, 2)
DllStructSetData($DEVMODE, 4, $i_Height, 3)
DllStructSetData($DEVMODE, 4, $i_BitsPP, 1)
DllStructSetData($DEVMODE, 4, $i_RefreshRate, 5)
$B = DllCall("user32.dll", "int", "ChangeDisplaySettings", "ptr", DllStructGetPtr($DEVMODE), "int", $CDS_TEST)
If @error Then
$B = -1
Else
$B = $B[0]
EndIf
Select
Case
$B = $DISP_CHANGE_RESTART
$DEVMODE
= ""
Return 2
Case $B = $DISP_CHANGE_SUCCESSFUL
DllCall("user32.dll", "int", "ChangeDisplaySettings", "ptr", DllStructGetPtr($DEVMODE), "int", $CDS_UPDATEREGISTRY)
DllCall("user32.dll", "int", "SendMessage", "hwnd", $HWND_BROADCAST, "int", $WM_DISPLAYCHANGE, _
"int", $i_BitsPP, "int", $i_Height * 2 ^ 16 + $i_Width)
$DEVMODE = ""
Return 1
Case Else
$DEVMODE = ""
SetError(1)
Return $B
EndSelect
EndIf
EndFunc ;==>_ChangeScreenRes
Автор: Maza Faka
Дата сообщения: 06.10.2007 08:43
Очень часто спрашивают, как кликнуть по иконке программы в трее. С помощью библиотеки SysTray_UDF.au3, которую доработал amel27 сделать это очень просто:

Код:
#include <SysTray_UDF.au3>

$pid = ProcessExists("edialer.exe")
$index = _SysTrayIconIndex($pid)
If @error Then MsgBox(16, "Error", "This process not have tray icon")
$pos = _SysTrayIconPos($index)
MouseClick("right", $pos[0], $pos[1])
Автор: ViSiToR
Дата сообщения: 06.10.2007 09:37
Maza Faka

Цитата:
Не работает

Что происходит? у тебя последняя веерсия аутоита?
Автор: NIKZZZZ
Дата сообщения: 06.10.2007 09:38
euheny

Цитата:
Известен ли способ осуществления прямого достапа к диску ?

Пример:
FileOpen('\\.\c:', 4)




Добавлено:
Maza Faka

Цитата:
Можно-ли переключить разрешение экрана ?
Где на оф. форуме видел решение, найду, сообщу
Нашёл:
Не работает

У меня работает.
Автор: euheny
Дата сообщения: 06.10.2007 11:46
ViSiToR

Цитата:
Не понял вопроса.

Цитата:
Не понял № 2

Цитата:
В блокноте?

ладно, проехали



Цитата:
Подробнее.


Цитата:
FileOpen('\\.\c:', 4)

нужно читать(запись тоже интересует) конкретные сектора диска (желательно и физического)




Автор: NIKZZZZ
Дата сообщения: 06.10.2007 12:05
euheny

Цитата:
нужно читать(запись тоже интересует) конкретные сектора диска (желательно и физического)

Чтение - проверял, создавал образ диска, работает без проблем. Остальное не пробовал-не было необходимости.


Автор: ViSiToR
Дата сообщения: 07.10.2007 03:02
Обновил Au3ToPost 1.7

Список изменении:

Цитата:
v1.7
Ещё более надёжная интеграция в SciTE (теперь если файл настроек пуст или не найден, то используется шаблон стандартного файла, в который и пишутся необходимые пункты).
Изменён метод вставки символа Tab - оказывается можно использовать CTRL TAB
Исправлена ошибка некорректной вставки раскрашенного кода в форум.
В Главное Меню добавлен пункт "Добавлять тег [В] к коду".
Пункт "О Программе" перемещён в новое меню "Справка".
Добавлен пункт "Проверить обновления..." в меню "Справка".
Исправлена проблема при закрытии дочернего окна с результатом (возврат в главное окно) - управление в главное окно возвращалось не сразу после закрытия.
Теперь при установленной русской раскладки клавиатуры как раскладка по умолчанию, нажатие <Ctrl A> приведёт к выделению всего текста в Edit поле.
Теперь рядом с исходником должна быть папка с ресурсами программы (Resources) - Содержит в себе все необходимые ресурсы для работы скрипта.
Мелкие поправки в коде.
Автор: euheny
Дата сообщения: 07.10.2007 07:52
ViSiToR
так что там про чтение конкретных секторов диска - поидее через DllCall это должно работать
Автор: Kauffman
Дата сообщения: 07.10.2007 09:54
Как сделать, чтобы значение слайдера изменялось не только, когда отпускается ползунок, но и когда пользователь двигает его мышкой?
Автор: Maza Faka
Дата сообщения: 07.10.2007 12:54
Kauffman
Пример:

Код:
#include <GuiConstants.au3>

Global Const $WM_HSCROLL = 0x0114
Global Const $WM_VSCROLL = 0x0115

$Gui = GuiCreate("Slider Update Demo", 250, 200)

GUIRegisterMsg($WM_HSCROLL, "WM_HVSCROLL")
GUIRegisterMsg($WM_VSCROLL, "WM_HVSCROLL")

$Vertical_Label = GUICtrlCreateLabel("Vertical Slider Read: 0", 20, 20, 200)
$Horizontal_Label = GUICtrlCreateLabel("Horizontal Slider Read: 0", 80, 120, 200)

$Vertical_Slider = GUICtrlCreateSlider(20, 50, 30, 120, BitOr($GUI_SS_DEFAULT_SLIDER, $TBS_VERT))
$Horizontal_Slider = GUICtrlCreateSlider(60, 150, 160, 30)

GUISetState()

While 1
$Msg = GUIGetMsg()
Switch $Msg
Case -3
Exit
EndSwitch
WEnd

Func WM_HVSCROLL($hWndGUI, $MsgID, $WParam, $LParam)
Switch $LParam
Case GUICtrlGetHandle($Vertical_Slider)
GUICtrlSetData($Vertical_Label, "Vertical Slider Read: " & GUICtrlRead($Vertical_Slider))
Case GUICtrlGetHandle($Horizontal_Slider)
GUICtrlSetData($Horizontal_Label, "Horizontal Slider Read: " & GUICtrlRead($Horizontal_Slider))
EndSwitch
EndFunc
Автор: ViSiToR
Дата сообщения: 07.10.2007 16:57
euheny

Цитата:
так что там про чтение конкретных секторов диска

Я не вкурсе об этом, я если честно даже не знаю что значит чтение секторов диска (с точки зрения AutoIt)... для какой цели это нужно?
Автор: euheny
Дата сообщения: 08.10.2007 00:36
ViSiToR

Цитата:
что значит чтение секторов диска

чтение секторов с любой точки зрения есть способ прямого(минуя ФС) обращения к диску.

Цитата:
для какой цели это нужно?

ну к примеру для правки(редактирования) диска
а вобще ещё хочу бенч для флэшек сделать


Автор: Maza Faka
Дата сообщения: 08.10.2007 07:24
euheny

Цитата:
хочу бенч для флэшек сделать

Улыбнуло.
Без обид конечно, но такие проги пишут в основном на Assemblere и работают они под DOS-ом.
А AutoIt не предназначен для этого.

Цитата:
AutoIt v3 - это язык для написания сценариев, напоминающий BASIC и предназначенный для автоматизации Windows GUI (графического интерфейса пользователя MS Windows). Его возможности - это методы симуляций нажатий комбинаций клавиш клавиатуры и мыши, функции управления окнами и его визуальными элементами.

Автор: wicked_boy
Дата сообщения: 08.10.2007 11:18
Помогите разобраться
есть вот такой код:

Код: #include <GUIConstants.au3>
#include <file.au3>

AutoItSetOption ( "TrayIconHide", 1 )
dim $temp="C:\"
Dim $imagemagik
Dim $list
;---------------------------------------------------------------------------------------
;Поиск в Program Files папки imagemagik с возмложными вариациями

RunWait(@ComSpec & " /c "&"dir /B imagemagi* >"&$temp&"\temp.txt",@ProgramFilesDir,@SW_HIDE)
If Not _FileReadToArray($temp&"\temp.txt",$imagemagik) Then
MsgBox(4096,"Error", "Невозможно прочитать временный файл")
Exit
EndIf

$imagemagick=$imagemagik[1]
FileDelete($temp&"\temp.txt")
;---------------------------------------------------------------------------------------
GUICreate(" Перетащите папку для преобразования", 360,190, @DesktopWidth/2-160, @DesktopHeight/2-45, -1, 0x00000018); WS_EX_ACCEPTFILES
GUICtrlCreateLabel ( "Папка - источник", 10, 10, 300, 20 )
$input_dir = GUICtrlCreateInput ( "", 10, 25, 300, 20)
GUICtrlSetState(-1,$GUI_DROPACCEPTED)
GUICtrlCreateLabel ( "Папка - получатель", 10, 55 , 300, 20 )
$output_dir = GUICtrlCreateInput ("", 10, 70, 300, 20)
GUICtrlSetState(-1,$GUI_DROPACCEPTED)
GUICtrlCreateLabel ( "Начальный индекс", 10, 100, 300, 20 )
$start_index=GUICtrlCreateInput ("", 10, 115, 100, 20)
$btn = GUICtrlCreateButton ("Поехали!", 160, 160, 60, 20)

GUISetState ()
$msg = 0
While $msg <> $GUI_EVENT_CLOSE
$msg
= GUIGetMsg()
Select
Case
$msg = $btn
exitloop
Case
$msg = $GUI_EVENT_CLOSE
exit
EndSelect
Wend


list_of_files(GUICtrlRead($input_dir))
work(GUICtrlRead($input_dir), GUICtrlRead($output_dir), GUICtrlRead($start_index))
Exit

Func
list_of_files($dir)
$string=$temp&"\temp.cmd"
FileDelete($string)
$file=FileOpen($string,1)
FileWriteLine($file,"dir /B /TC /OD "&$dir&"\*.jpg >"&$temp&"\temp.txt")
FileClose($file)
RunWait($temp&"\temp.cmd","",@SW_HIDE)
If Not _FileReadToArray($temp&"\temp.txt",$list) Then
MsgBox(4096,"Error", "Невозможно прочитать временный файл")
Exit
EndIf

FileClose($temp&"\temp.cmd")
FileClose($temp&"\temp.txt")
FileDelete($temp&"\temp.cmd")
FileDelete($temp&"\temp.txt")

EndFunc

func
work($input, $output, $index)
$x=1
$y=1
$z=1
$number=1
$txt=$output&"\list.txt"
$list2 = FileOpen($txt, 1)
DirCreate($output&"\Fotki_big")

dim $counter=1
$files = FileFindFirstFile($input&"*.jpg")
while 1
$file2 = FileFindNextFile($files)
if @error Then ExitLoop
$counter=$counter+1
WEnd
$counter=$counter-1
;MsgBox("","",$list[1])
for $x=1 to $list[0]-1

$string=$temp&"\temp.cmd"
FileDelete($string)
$file=FileOpen($string,1)
FileWriteLine($file,"identify "&$input&"\"&$list[$z]& ">"&$temp&"temp.txt")
FileClose($file)
RunWait($temp&"\temp.cmd","",@SW_HIDE)
$file = FileOpen($temp&"\temp.txt", 0)
If $file = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf

$line = FileReadLine($file, 1)
if $line =" " Then
MsgBox(0,"Error", "Файл параметров файла пуст")
Exit
EndIf

FileClose($file)

$array=StringSplit ( $line, " ")
$array=StringSplit ($array[3], "x")
$shirina = $array[1]
$visota = $array[2]
;MsgBox("","",$visota)

Select
Case
$z >= 1 AND $z < 10
$filename="000"&$z&".jpg"
$number="000"&$z
Case $z >= 10 AND $z < 100
$filename="00"&$z&".jpg"
$number="00"&$z
Case $z >= 100
$filename="0"&$z&".jpg"
$number="0"&$z
EndSelect

FileDelete($string)
$file=FileOpen($string,1)
FileWriteLine($file,"convert "&$input&"\"&$list[$x]& " -resize 800 "&$output&"\Fotki_big\"&$filename)
FileClose($file)
RunWait($temp&"\temp.cmd","",@SW_HIDE)

$html=$output&"\"&$number&".html"
;MsgBox("","",$html)
$123 = FileOpen($html, 1)

FileWriteLine($123,Chr(60)&"HTML>")
FileWriteLine($123,Chr(60)&"HEAD>")
FileWriteLine($123,Chr(60)&"TITLE>Отдых в дельте Днестра</TITLE>")
FileWriteLine($123,Chr(60)&"/HEAD>")
FileWriteLine($123,Chr(60)&'BODY bgcolor="#cccc99" background="otdih_background.gif">')
FileWriteLine($123,Chr(60)&'P style="margin-left: 20px; font-weight: bold; font-style: italic">')
FileWriteLine($123,Chr(60)&'IMG src="Fotki_big/'&$filename&'">')
FileWriteLine($123,Chr(60)&"/BODY>")
FileWriteLine($123,Chr(60)&"/HTML>")
FileClose($123)

if $y=1 then
FileWriteLine($list,'<TR height="105"> ')
endif

FileWriteLine($list2,'<TD width="145" align="middle" valign="middle">')
if $visota>$shirina then
FileWriteLine($list2,'<A href='&$number&'.html target="_blank"><IMG src="Fotki_big/'&$filename&'" width="93" height="125" " alt="Закат на Днестре" border="0"></A>')
Else
FileWriteLine($list2,'<A href='&$number&'.html target="_blank"><IMG src="Fotki_big/'&$filename&'" width="125" height="93" " alt="Закат на Днестре" border="0"></A>')
Endif
FileWriteLine($list2,'</TD>')
if $y=5 then
FileWriteLine($list2,'</TR> ')
FileWriteLine($list2,'')
$y=0
endif
$Precent = $z/$counter*100
$y=$y+1
$z=$z+1
ProgressSet($Precent, "Выполнено: " & Round($Precent, 1) & " %")
Next
FileDelete($temp&"\temp.cmd")
FileDelete($temp&"\temp.txt")
FileClose($list2)
EndFunc
Автор: alur2005
Дата сообщения: 08.10.2007 11:47
подскажите как можно сделать что бы при запуск дистрибутива(exe -файл) не было видно что программа устанавливается,например в msi файлах параметр /quiet

или сделать окно установки прозрачным


можно ли при помощи AutoIt сделать это ?

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192

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


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