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

» AutoIT

Автор: IvAgros
Дата сообщения: 04.01.2008 22:23
Tipulatoid


Цитата:
[/q]
Цитата: С точки зрения скорости как лучше будет - формируемые строки сразу писать в конец html (FileWrite или FileWriteLine), или добавлять их в конец массива (_ArrayAdd), а затем этот массив разом писать в файл (_FileWriteFromArray)?
[q]С точки зрения скорости как лучше будет - формируемые строки сразу писать в конец html (FileWrite или FileWriteLine), или добавлять их в конец массива (_ArrayAdd), а затем этот массив разом писать в файл (_FileWriteFromArray)?
Автор: Maza Faka
Дата сообщения: 05.01.2008 06:46
IvAgros

Цитата:
- меньше обращений к носителю (немного критично для флэшки, к примеру)

Если предварительно открыть файл функцией FileOpen(), то не критично.
Цитата:
If a filename is given rather than a file handle, the file will be opened and closed during the function call. For parsing large text files this will be much slower than using filehandles.



Цитата:
меньше шансов возможной фрагментации файла

Ну это вряд ли


Цитата:
и вообще, логичнее выглядит

Ага, но вот попробуй поработать с файлом в котором свыше 100.000 строк при помощи массивов.
Автор: ViSiToR
Дата сообщения: 05.01.2008 08:23
Библиотека автоматизации для браузера Opera!

24 (планируется ещё больше) полезных функции для решения задач связанных с браузером Opera.

Примечание: Библиотека тестировалась под Opera начиная с версии 8.54 и до версии 9.5.

[Страница закачки], [Зеркало]
Автор: ViSiToR
Дата сообщения: 06.01.2008 16:37
Kauffman
По поводу редактора, вот ещё неплохой редактор на AutoIt - AutoIt Editor, использует Scintila, и даже чем то напоминает SciTE
Автор: zero1632
Дата сообщения: 07.01.2008 22:48
LEX , а если в качестве параметра используется такая комбинация

$file_FR_path=(@WorkingDir & "\F8.0\fineocr.exe " & $file & " /send clipboard")
Run ($file_FR_path)

не получается - если a имени файла в $file есть пробел, запускается два раза, а в кавычки или апострофы поставить не могу.

Добавлено:
пардон разобрался.

$file_FR_path=(@WorkingDir & "\F8.0\fineocr.exe " & '"' & $file & '"' & " /send clipboard")
Автор: gregaz
Дата сообщения: 08.01.2008 05:11
Подскажите,пожалуйста
Как получить в окне GUI TreeView комьютера ?
Через функции AutoIt -процесс очень длительный
Наверняка просто решается средствами Windows ,но как ?
Автор: ViSiToR
Дата сообщения: 08.01.2008 05:43
gregaz

Цитата:
Как получить в окне GUI TreeView комьютера ?

Дерево папок?


Цитата:
Через функции AutoIt -процесс очень длительный

Если вместе с подкаталогами, то да, это сложновато... хотя я это как то уже делал (пункты гинерируются “на лету”)...


Цитата:
Наверняка просто решается средствами Windows

Для каких целей? FileSelectFolder()?
Автор: gregaz
Дата сообщения: 08.01.2008 05:57
ViSiToR
Хотелось бы внутри окна GUI ,созданного средствами AutoIt ,наряду с другими элементами получить и элемент TreeView с папками и файлами компьютера ,а не в отдельном окне,как в FileSelectFolder()
Автор: Maza Faka
Дата сообщения: 11.01.2008 08:35
gregaz

Цитата:
элемент TreeView с папками и файлами компьютера

Вот тебе пример с форума на офф. сайте:

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

Opt("GUIOnEventMode", 1)

$Gui = GUICreate("TreeView", 400, 400)
$treeview = GUICtrlCreateTreeView(20, 20, 200, 200, -1, $WS_EX_CLIENTEDGE)
Root($treeview)
GUISetOnEvent($GUI_EVENT_CLOSE, "_close")
GUISetState(@SW_SHOW)

While 1
Sleep(500)
WEnd

Func
TellMe()
MsgBox(0,'', GUICtrlRead(@GUI_CtrlId, 1))
EndFunc

Func
Root($tvcID)
Dim $DGD = DriveGetDrive("ALL")
For $i = 1 To $DGD[0]
GUICtrlCreateTreeViewItem("(" & $DGD[$i] & ")", $tvcID)
GUICtrlSetState(-1, $GUI_FOCUS)
GUICtrlSetOnEvent(-1, "TellMe")
GUICtrlSetImage(-1, "shell32.dll", FindIcon($DGD[$i]), 2)
GUICtrlSetImage(-1, "shell32.dll", FindIcon($DGD[$i]), 4)
If $DGD[$i] = @HomeDrive Then
$FL2A = _FileListToArray($DGD[$i], "*", 2)
For $j = 1 To $FL2A[0]
GUICtrlCreateTreeViewItem($FL2A[$j], GUICtrlRead($tvcID))
GUICtrlSetImage(-1, "shell32.dll", -5, 2)
GUICtrlSetImage(-1, "shell32.dll", -4, 4)
GUICtrlSetOnEvent(-1, "TellMe")
Next
EndIf
Next
EndFunc

Func
FindIcon($dI)
Local $DGT = DriveGetType($dI)
Switch $DGT
Case "Removable"
If $dI = "a:" Or $dI = "b:" Then
Return
-7
Else
Return
-8
EndIf
Case
"Fixed"
Return -9
Case "Network"
If DriveMapGet($dI) <> "" Then
Return
-10
Else
Return
-11
EndIf
Case
"CDROM"
Return -12
Case "RAMDisk"
Return -13
Case "Unknown"
Return -54
EndSwitch
EndFunc

Func
_close()
Exit
EndFunc
Автор: Kauffman
Дата сообщения: 11.01.2008 09:40
ViSiToR
SciTe не нравится из-за оформления (классич. Win 9x), хочу чё-нить красивое и мощное!
И профессиональное (AutoIt Editor не доделан).
Автор: gregaz
Дата сообщения: 11.01.2008 10:54

Цитата:
Вот тебе пример с форума на офф. сайте:

Maza Faka,спасибо
Я примерно так и пробовал,но попытка углубиться в подпапки (цикл в цикле)
сильно затягивает процесс на десятки секунд (если еще файлы находить и иконки расставлять,то...).
Я надеялся,что есть возможность средствами Windows ( ведь Windows выполняет это моментально).



Автор: Maza Faka
Дата сообщения: 11.01.2008 11:03
gregaz

Цитата:
Я надеялся,что есть возможность средствами API

Возможно.
Автор: gregaz
Дата сообщения: 11.01.2008 11:12
Maza Faka Это сложно ?
Автор: Maza Faka
Дата сообщения: 11.01.2008 13:38
gregaz
Ммм... честно говоря незнаю, надо искать такую API функцию (если она существует), попробуй поискать здесь
Автор: serffil
Дата сообщения: 11.01.2008 17:09
Всем привет и с прошедшими праздниками
Может кто подскажет что
Как копировать и перемещать файлы с правами администратора, а то в Виндоус ВИста
с ее излишней безопасностью при перемещении файла необходимо подтверждение этого действия
Спасибо за помощь
Автор: ViSiToR
Дата сообщения: 11.01.2008 22:10
gregaz

Цитата:
Хотелось бы внутри окна GUI ,созданного средствами AutoIt ,наряду с другими элементами получить и элемент TreeView с папками и файлами компьютера


Вот архив, в нём все нужные инклюды, плюс примеры применения. Одна проблема, автор этого творения так и не смог решить проблему получения массива всех выбранных папок/файлов (используя чекбоксы), я уверен что это можно решить, но у меня нет времени с этим разбираться - я немного подправил оригинал, там кроме прочего было несколько проблем совместимости с AutoIt 3.2.8.1, под v3.2.10.0 не проверял, но полагаю что работать корректно не будет.

Возможно это слишком громоздко для твоих нужд, но при желании можно выдернуть то что нужно .

Kauffman

Цитата:
SciTe не нравится из-за оформления (классич. Win 9x), хочу чё-нить красивое и мощное

А что там оформлять, там несколько кнопочек (которыми я лично почти не пользуюсь, только меню или клавиши), имхо, мощнее для AutoIt (и наверное для многих других языков) просто не существует!

serffil

Цитата:
Как копировать и перемещать файлы с правами администратора

Можно попробовать поставить в начале скрипта #RequireAdmin - будет требовать админских прав.
Автор: SykaPadla
Дата сообщения: 11.01.2008 23:08
Народ, ХЕЛП плз.

Помогите разобраться с отправкой писем с помощью АИ.

Задача: отправить письмо все равно через какой smtp на указанный адрес
(если вдруг кто-то занимается, то интересует отправка через ОСМП - объединенная система приема платежей. у них в программе это реализовано).

Пример из хелпа:

#include <INet.au3>

$Response = _INetSmtpMail ("smtp.mail.ru", "lt", "xxx@mail.ru", "xxx@mail.ru", "otchet", "kuha teksta")
$err = @error
If $Response = 1 Then
MsgBox(0, "Success!", "Mail sent")
Else
MsgBox(0, "Error!", "Mail failed with error code " & $err)
EndIf

Выдает окно "Mail sent", но ничего не приходит.
ххх@mail.ru - существующий ящик (письмо сам себе)
Скорей всего нужна авторизация на SMTP сервер.

Вопрос 2:
#include <INet.au3>
_INetSmtpMail ( $s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress [,$s_Subject [,$as_Body [,$s_helo, [,$s_first [,$s_trace]]]]])

Что такое
$s_helo - логин на smtp server?
$s_first - ???
$s_trace - трассировка отправки письма. как ее посмотреть?
Автор: gregaz
Дата сообщения: 12.01.2008 17:50

Цитата:
Цитата:Хотелось бы внутри окна GUI ,созданного средствами AutoIt ,наряду с другими элементами получить и элемент TreeView с папками и файлами компьютера

ViSiToR

Цитата:

Вот архив, в нём все нужные инклюды, плюс примеры применения. Одна проблема, автор этого творения так и не смог решить проблему получения массива всех выбранных папок/файлов


ViSiToR,спасибо , там есть интересные фрагменты.Попробую разобраться
Хотя задавая вопрос о TreeView файлов компа ,я не предполагал,что это так сложно
Возможно овчинка выделки и не стоит
Во всяком случае всем спасибо

Сейчас подправил под v3.2.10.0 ,даже запустилась и достаточно быстро за 2сек построила TreeView.но все подпапки с русскими именами записала в виде АБРАКАДАБРЫ и не раскрыла , а так вроде сработала правда застревает где-то при клике ,но это надо дальше смотреть
Автор: Sergey_AV
Дата сообщения: 14.01.2008 12:55
Помогите, плиз со скриптом автоматической регистрации BSplayerPro. Скачал скрипт с msfn, а он, похоже на итальянском .
Все бы ничего, да в моем дистрибутиве только 2 языка: русский и английский. А там, в скрипте (привожу ниже) все завязано на позиции мышки . Я вот сижу и голову ломаю: чем отследить (и как "ретранслировать" - это, пожалуй, главное) эту "мышиную возню".
Софт из шапки с этой проблемой не справился...
[more]
RunWait("bsplayer_pro221950.exe /S")

Sleep(500)
Opt('MouseCoordMode', 0)
;Run BSPlayer for Activation
$pid = Run(@ProgramFilesDir & "\Webteh\BSplayerPro\bsplayer.exe")

If WinWait('BSplayer Pro', '', 10) Then
MouseMove(343, 237)
If MouseGetCursor() <> 0 Then
MouseMove(418, 247)
If MouseGetCursor() <> 0 Then
WinClose('BSplayer')
ProcessClose($pid)
Exit 1
EndIf
EndIf
MouseClick('left')
If WinWait('Informaciєn de Registro', 'Aceptar', 10) Then
$name = 'XXXXXXX'
$serial = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
    ControlSetText('Informaciєn de Registro', 'Aceptar', 'TTntEdit.UnicodeClass2', $name)
ControlSetText('Informaciєn de Registro', 'Aceptar', 'TTntEdit.UnicodeClass1', $serial)
ControlClick('Informaciєn de Registro', 'Aceptar', 'TButton1')
If WinWait('Informaciєn', 'Gracias por registrarse', 10) Then
ControlClick('Informaciєn', 'Gracias por registrarse', 'Button1')
EndIf
EndIf
EndIf
[/more]
Автор: U235
Дата сообщения: 15.01.2008 14:38
Помогите, пожалуйста, потестировать, если имеется сканер, и найти возможную ошибку в скрипте AutoIt3:
Скрипт автосканирования через WIA интерфейс: hxxp://www.alexrey036.narod.ru/autoscan_v2/autoscan_v2.html
Проблема такая:
На моем компьютере все работает как надо, с просмотром каждого отсканированного изображения. У другого человека, как он сообщил, не работает просмотр (сканирование идет), видимо глюк как-то связан с функцией View.
Команда "Пуск/Выполнить: rundll32.exe shimgvw.dll,ImageView_Fullscreen C:\какой-нибудь_файл.tif" у него выполняется корректно (Win XP rus SP2 в обоих случаях.).
Не пойму, в чем может быть причина?

Проблема кажется решена: дело было в путях к папке: rundll32... требует полный путь к файлу.
Автор: Kauffman
Дата сообщения: 18.01.2008 16:33
Требуется помощь!
Создал Tab-контрол с помощью функции _GUICtrlTab_Create().
И не могу понять, как сделать чтобы при переключении вкладок происходило событие!
Может кто знает...
Автор: ViSiToR
Дата сообщения: 19.01.2008 00:02
Kauffman

Цитата:
как сделать чтобы при переключении вкладок происходило событие!

Изменённый пример из справки:


Код: #include <GuiConstantsEx.au3>
#include <GuiTab.au3>

Global $hTab

_Main()

Func _Main()
Local $hGUI

; Create GUI
$hGUI = GUICreate("Tab Control Create", 400, 300)
$hTab = _GUICtrlTab_Create ($hGUI, 2, 2, 396, 296)
GUISetState()

GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

; Add tabs
_GUICtrlTab_InsertItem ($hTab, 0, "Tab 1")
_GUICtrlTab_InsertItem ($hTab, 1, "Tab 2")
_GUICtrlTab_InsertItem ($hTab, 2, "Tab 3")
; Loop until user exits
Do
Until
GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()
EndFunc ;==>_Main

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndTab
$hWndTab
= $hTab
If Not IsHWnd($hTab) Then $hWndTab = GUICtrlGetHandle($hTab)

$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")

Switch $hWndFrom
Case $hWndTab
Switch $iCode
Case $NM_CLICK ; The user has clicked the left mouse button within the control
$iTab_Index = _GUICtrlTab_GetCurSel($hTab)
ConsoleWrite("Tab Item clicked; " & _
"Index = " & $iTab_Index & _
", Text = " & _GUICtrlTab_GetItemText($hTab, $iTab_Index) & @LF)
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
Автор: Maza Faka
Дата сообщения: 19.01.2008 07:42
Kauffman
Примитивный, но простой вариант

Код: #include <GuiConstantsEx.au3>
#include <GuiTab.au3>

Dim $sItem

$hGui
= GUICreate("Get Tab sitch", 300, 200)

$hTab = _GUICtrlTab_Create($hGui, 2, 2, 298, 198)

$tItem1 = _GUICtrlTab_InsertItem($hTab, 0, "TabItem 1")
$tItem2 = _GUICtrlTab_InsertItem($hTab, 0, "TabItem 2")

GUISetState()

While 1
If _GUICtrlTab_GetCurSel($hTab) <> $sItem Then
ConsoleWrite(_GUICtrlTab_GetCurSel($hTab) & " TabItem selected" & @CRLF)
$sItem = _GUICtrlTab_GetCurSel($hTab)
EndIf

$msg = GUIGetMsg()
Switch $msg
Case -3
ExitLoop
EndSwitch
WEnd
Автор: Kauffman
Дата сообщения: 20.01.2008 14:27
ViSiToR
Maza Faka
Спасибо, то что нужно!
Автор: PapaFilippa
Дата сообщения: 24.01.2008 15:05
Ребята помогите разобраться, что за ошибку выдает скрипт:

Код: Opt("SendKeyDelay", 50);
Opt("WinTitleMatchMode", 2);
$count = 0;

While 1
$lastdate = "03/30/2007"; Это дата самой свежей котировки, подлежащей граблению (формат MM/DD/YYYY).



$count = $count + 1
$line = StringSplit(FileReadLine(@ScriptDir & "\datagrabber.task", $count), ",;"&@TAB);
If @error <> 0 Then Exit;

$symbol = $line[1];
$period = StringUpper($line[2]);
If $period == "D" Then
$firstdate = "02/01/2007"
Else
$firstdate = "02/01/2007"
EndIf

DirCreate(@ScriptDir & "\" & @YEAR & @MON & @MDAY);
$out = @ScriptDir & "\" & @YEAR & @MON & @MDAY & "\" & $symbol & "_" & $period & ".csv";

WinWaitActive("P018 Romank");
Sleep(2000);
Send(StringLower($symbol &","& $period &"{ENTER}"));
Sleep(300);
If StringInStr(WinGetText("P018 Romank"), "not found") Then
Sleep(5000);
ContinueLoop; Contract '' not found.
EndIf;

; начальная подготовка
MouseClick("", 1018, 709);
Sleep(5000);
MouseClick("right", 451, 709, 2);
MouseClick("", 413, 486);

; установка временной шкалы на последний день
MouseClick("right", 451, 709, 2);
MouseClick("", 413, 443);
WinWaitActive("Go To Date:");
$date = StringSplit($lastdate, "/")
Opt("MouseCoordMode", 0);
MouseClick("", 33, 38, 1, 5);
Send($date[1]);
MouseClick("", 52, 38, 1, 5);
Send($date[2]);
MouseClick("", 76, 38, 1, 5);
Send($date[3]);
MouseClick("", 163, 38, 1, 5);
Sleep(5000);


While DateRange($firstdate, $lastdate)
WinWaitActive("P018 Romank");
Sleep(1000);

Opt("MouseCoordMode", 1);

WinMenuSelectItem("","","P&rint","Tabular Display");
Sleep(1000);
Send("{TAB}{DOWN}");

For $i = 0 To 3
Send("+^{RIGHT}+{PGDN 8}^c{DOWN}^{LEFT}");
FileWriteLine($out, StringReplace(StringReplace(ClipGet(), @TAB, ","), " ", ""));
Next;

Send("+^{RIGHT}+^{LEFT}^c^{F4}");
$lastdate = StringStripWS(ClipGet(), 8);

MouseClickDrag("", 120, 520, 520, 520, 30);

WEnd;
WEnd;

Func DateRange($date1, $date2)
$date1 = StringSplit($date1, "/");
$date2 = StringSplit($date2, "/");
If $date1[3] > $date2[3] Then Return 0;
If $date1[3] < $date2[3] Then Return 1;
If $date1[1] > $date2[1] Then Return 0;
If $date1[1] < $date2[1] Then Return 1;
If $date1[3] > $date2[2] Then Return 0;
If $date1[2] < $date2[2] Then Return 1;
Return 0;
EndFunc;
Автор: ViSiToR
Дата сообщения: 25.01.2008 00:41
PapaFilippa
Помочь многим не смогу, т.к нет возможности проверить, скрипт нажимает много мышкой, да только не понятно где, и зачем

По поводу ошибки, можно заменить блок с «Func DateRange($date1, $date2)» на это:


Код: Func DateRange($date1, $date2)
$date1 = StringSplit($date1, "/")
$date2 = StringSplit($date2, "/")

    If $date1[0] < 3 Or $date2[0] < 3 Then Return 0
    
    If $date1[3] > $date2[3] Then Return 0
If $date1[3] < $date2[3] Then Return 1
If $date1[1] > $date2[1] Then Return 0
If $date1[1] < $date2[1] Then Return 1
If $date1[3] > $date2[2] Then Return 0
If $date1[2] < $date2[2] Then Return 1
Return 0
EndFunc
Автор: solesh
Дата сообщения: 25.01.2008 11:36
Всем доброго времени суток. Есть вопрос. Перекопал вроде все, не нашел, но если таки провтыкал не судите пожалуйста, а ткните носом.

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

Спасибо.
Автор: U235
Дата сообщения: 25.01.2008 12:11
Вариант самораспаковывающегося архива со скриптом и всем остальным для его работы пойдет?
Автор: Maza Faka
Дата сообщения: 25.01.2008 12:41
solesh

Цитата:
как сделать, чтобы скрипт интегрировал в себя все инсталляционные файлы, которые надо запустить.

Смотри в справке функцию FileInstall()
Автор: solesh
Дата сообщения: 25.01.2008 13:46

Цитата:
Вариант самораспаковывающегося архива со скриптом и всем остальным для его работы пойдет?

Да прекрастно, если мона. Можешь выслать на мыло ser_oleshkevich@mail.ru
Цитата:


Смотри в справке функцию FileInstall()


За совет тоже спасибо, буду разбираться.

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192

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


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