Показать полную графическую версию : [архив - Часть 2] AutoIt скрипты
Maza Faka
08-10-2007, 08:26
Creat0R
Твой пример не работает?
Работает, но только для RadioButton, а мне надо для Button.
amel27, во замутил!
:biggrin:
у меня вроде получилось без RegExp:
Класс.. правда пока не понял как оно работает.. кстати, тут тоже проблема с буквами е/ё.. если выделить две буквы одна из которых буква е, то выделение неверно делается.
Но в сравнении моя функция всё же быстрее :tongue: - но полагаю твой пример будет надёжнее (если поправить недочёты с е/ё и т.п).
Ранее уже постил свой вариант через API
Спасибо, но это не совсем то, мне нужно не позиции, а проверить существование элементов - Я заранее не знаю как именуется Мой компьютер (к примеру), на разных машинах по разному, мне нужно получить универсальное название, и сравнить со списком (который я получаю с рабочего стола, но другим методом, используются функции от A3LLibrary).
Т.е по сути нужно проверить типа..
If FileExists(@DesktopDir & "\Мой компьютер") Then...
Естественно так не работает...
А зачем Send('{CTRLDOWN}') Send('{CTRLUP}'), от залипаний Ctrl?
да, от залипании, не знаю почему, но иногда залипает :) (сейчас наверно можно убрать, т.к Ctrl не используется при вызове конвертировании).
Maza Faka
08-10-2007, 10:00
Почему функция AdlibEnable начинает работать только после того, как файл скопировался?
#include <Misc.au3>
Opt("MouseCoordMode", 2)
AdlibEnable("Check", 100)
Dim $title = "Копирование..."
Dim $dll = DllOpen("user32.dll")
$sCopy = CopyFile("d:\Video\Films\video.avi", "c:\")
Func CopyFile($source, $dest)
$WinShell = ObjCreate("shell.application")
If Not @error Then
$WinShell.NameSpace($dest).CopyHere($source)
AdlibDisable()
Else
MsgBox(16, "Error", "Obj not create")
EndIf
EndFunc
Func Check()
MsgBox(0, "", "test") ;Это для проверки вызова функции
If WinActive($title) Then
If _IsPressed(01, $dll) Then
$mousePos = MouseGetPos()
If $mousePos[0] > 303 And $mousePos[0] < 362 And $mousePos[1] > 102 And $mousePos[1] < 124 Then MsgBox(0, "", "Button pressed")
EndIf
EndIf
EndFunc
не понял как оно работаетесли грубо... выделяем с CTRL пока размер выделенного фрагмента не превысит исходный (из буфера), потом возвращаемся обратно но уже без CTRL
тут тоже проблемаисправил, алгоритм не зависит от текста
не знаю как именуется Мой компьютертам же (http://forum.oszone.net/post-656037-1570.html) добавил линк на параметры реестра
amel27,
выделяем с CTRL пока размер выделенного фрагмента не превысит исходный (из буфера), потом возвращаемся обратно но уже без CTRL
Вот если бы можно было быстрее это делать... при длинном выделении очень медленно получается.
Мне удалось в моей функции преодалеть проблемы когда выделялся весь текст если исходное выделение было посредине слова.. плюс я вспомнил, ведь есть ещё Opt("SendKeyDelay", 0) и Opt("SendKeyDownDelay", 0) - увеличивает скорость в несколько раз ;) (на коротком выделении почти мгновенно)...
Вот финальная версия (с использованием обычного массива, без Dictionary, мне если честно немного не привычно ориентироваться в нём):
#NoTrayIcon
Opt("SendKeyDelay", 0)
Opt("SendKeyDownDelay", 0)
HotKeySet("`", "ConvertProc")
HotKeySet("^q", "Quit")
While 1
Sleep(100)
WEnd
Func ConvertProc()
Local $OldClip = ClipGet()
ClipPut("")
Send("^{Insert}")
Local $SelectedText = ClipGet()
If $SelectedText = "" Then
HotKeySet("`")
Send("`")
HotKeySet("`", "ConvertProc")
Return
EndIf
Local $NewClip = ConvertText($SelectedText)
ClipPut($NewClip)
Send("+{Insert}")
RestoreSelection($NewClip)
ClipPut($OldClip)
EndFunc
;If $Mode = 0 Then Russian language used
;If $Mode = 1 Then English language used
;If $Mode = -1 Then String Inverted
Func ConvertText($Text, $Mode=-1)
Local $StringIsUpper = 0, $TextRet = ""
Local $SplitTextArr = StringSplit($Text, "")
Local $LettersArr = GetLettersArr()
For $i = 1 To $SplitTextArr[0]
Local $i_0 = 1, $i_1 = 0
$StringIsUpper = 0
If StringIsUpper($SplitTextArr[$i]) Then $StringIsUpper = 1
If $Mode = 0 Or ($Mode = -1 And StringIsASCII($Text)) Then Local $i_0 = 0, $i_1 = 1
For $j = 1 To $LettersArr[0][0]
If $SplitTextArr[$i] = $LettersArr[$j][$i_0] Then
$SplitTextArr[$i] = $LettersArr[$j][$i_1]
ExitLoop
EndIf
Next
If $StringIsUpper = 1 Then $SplitTextArr[$i] = StringUpper($SplitTextArr[$i])
$TextRet &= $SplitTextArr[$i]
Next
Return $TextRet
EndFunc
Func GetLettersArr()
Local $AnsiStr = "ёйцукенгшщзхъфывапролджэячсмитьбю.?"
Local $AsciiStr = "`qwertyuiop[]asdfghjkl;'zxcvbnm,./&"
Local $StrLenght = StringLen($AnsiStr)
Local $LettersArr[$StrLenght+1][2]
$LettersArr[0][0] = $StrLenght
For $i = 1 To $StrLenght
$LettersArr[$i][0] = StringMid($AsciiStr, $i, 1)
$LettersArr[$i][1] = StringMid($AnsiStr, $i, 1)
Next
Return $LettersArr
EndFunc
Func RestoreSelection($rText)
Local $LeftJumps = GetLeftJumps($rText)
Send("^+{LEFT " & $LeftJumps & "}")
Send("^{Insert}")
Local $NewSelText = ClipGet()
If StringLen($NewSelText) > StringLen($rText) Then Send("+{RIGHT " & StringLen($NewSelText) - StringLen($rText) & "}")
EndFunc
Func GetLeftJumps($Text)
StringRegExpReplace($Text, '\n', '')
Local $Extended = @extended
$Text = StringStripWS($Text, 3)
$Text = StringRegExpReplace($Text, '\s+|\t+', ' ')
$Text = StringRegExpReplace($Text, '~|`|!|#|%|\^|&|\*|\(|\)|-|\+|=|\{|\}|''|"|;|:|/|\\|<|>|\?|,|\[|\]|ч|Ч|ё|Ё', '|')
$Text = StringRegExpReplace($Text, '\|+', '|')
Local $WordsCountArr = StringRegExp($Text, "[\s\.:;,]*([а-яА-Яa-zA-Z0-9-_]+)[\s\.:;,]*", 3)
StringRegExpReplace($Text, '\|', '')
$Extended += @extended + UBound($WordsCountArr)
Return $Extended
EndFunc
Func Quit()
Exit
EndFunc
там же добавил линк на параметры реестра
Спасибо, полезный линк :) - правда нужной инфы я там не нашёл, а я прочитал каждую строчку на той страничке :(
Maza Faka, Почему функция AdlibEnable начинает работать только после того, как файл скопировался?
Она не успевает срабатывать, и функция AdlibDisable() её отключает, попробуй уменьшить время запуска Adlib...
Просто ставим MsgBox под AdlibDisable и мы в этом убеждаемся ;)
Я так понял нужно определить было ли отменено копирование? попробуй использовать Callback функции из примера что я приводил ранее (http://forum.oszone.net/thread-60616-152.html#post651129), там скрипт не останавливается на момент копирования.
Вот кстати полезная ссылка по обьекту shell.application - http://msdn2.microsoft.com/en-us/library/aa969392.aspx (в вот конкретно по CopyHere (http://msdn2.microsoft.com/en-us/library/ms723207.aspx)).
нужной инфы я там не нашёл »
Добавляет Мой Компьютер,Мои Документы,Мое Сетевое окружение,Internet Explorer на Рабочий Стол
как Punto Switcher распознаёт текст в любом месте? » :dont-know как тебе точка зрения Absurd: http://forum.developing.ru/archive/index.php/t-1365.html :gigi:
у меня получилось только открывать/читать URL непосредственно с вкладок:Global Const $DMLERR_NO_ERROR = 0x0
Global Const $DMLERR_ADVACKTIMEOUT = 0x4000
Global Const $DMLERR_BUSY = 0x4001
Global Const $DMLERR_DATAACKTIMEOUT = 0x4002
Global Const $DMLERR_DLL_NOT_INITIALIZED = 0x4003
Global Const $DMLERR_DLL_USAGE = 0x4004
Global Const $DMLERR_EXECACKTIMEOUT = 0x4005
Global Const $DMLERR_INVALIDPARAMETER = 0x4006
Global Const $DMLERR_LOW_MEMORY = 0x4007
Global Const $DMLERR_MEMORY_ERROR = 0x4008
Global Const $DMLERR_NOTPROCESSED = 0x4009
Global Const $DMLERR_NO_CONV_ESTABLISHED = 0x400A
Global Const $DMLERR_POKEACKTIMEOUT = 0x400B
Global Const $DMLERR_POSTMSG_FAILED = 0x400C
Global Const $DMLERR_REENTRANCY = 0x400D
Global Const $DMLERR_SERVER_DIED = 0x400E
Global Const $DMLERR_SYS_ERROR = 0x400F
Global Const $DMLERR_UNADVACKTIMEOUT = 0x4010
Global Const $DMLERR_UNFOUND_QUEUE_ID = 0x4011
; Возвращает/открывает URL страницы на заданной вкладке Оперы.
; $sURL - адрес открываемой страницы,
; если задана пустая строка возвращает адрес заданного окна.
; $hWin - номер вкладки обозревателя,
; 0 новая вкладка (при открытии),
; -1 текущая вкладка.
; $iWait - таймаут ожидания в миллисекундах, при превышении будет выдана ошибка.
Func OperaOpenURL($sURL = "", $hWin = -1, $iWait = 10000)
Local $ret, $err, $uIdInst = DllStructCreate("int")
Local $hServer[1], $hTopic[1], $hItem[1], $hConv[1], $hData[1], $sData[1]
Local $sTopic = "WWW_OpenURL", $sItem = $sURL&',,0x'&Hex($hWin)
If $sURL='' Then
$sTopic = "WWW_GetWindowInfo"
$sItem = "0x"&Hex($hWin)
EndIf
Local $hDll = DllOpen("user32.dll")
If $hDll=-1 Then Return SetError(1, 0, "") ; Ошибка открытия DLL
$ret = DllCall("user32.dll", "int", "DdeInitialize", "ptr", DllStructGetPtr($uIdInst), "ptr", 0, "int", 0, "int", 0)
If $ret[0] Then Return SetError(2, $ret[0], "") ; Ошибка инициализации DDE
$hServer = DllCall($hDll, "int", "DdeCreateStringHandle", "int", DllStructGetData($uIdInst,1), "str", "opera", "int", 1004)
If $hServer[0] Then
$hTopic = DllCall($hDll, "int", "DdeCreateStringHandle", "int", DllStructGetData($uIdInst,1), "str", $sTopic, "int", 1004)
If $hTopic[0] Then
$hItem = DllCall($hDll, "int", "DdeCreateStringHandle", "int", DllStructGetData($uIdInst,1), "str", $sItem, "int", 1004)
If $hItem[0] Then
$hConv = DllCall($hDll, "int", "DdeConnect", "int", DllStructGetData($uIdInst,1), "int", $hServer[0], "int", $hTopic[0], "int", 0)
If $hConv[0] Then
$hData = DllCall($hDll, "int", "DdeClientTransaction", "ptr", 0, "int", 0, "int", $hConv[0], "int", $hItem[0], "int", 1, "int", 0x20B0, "int", $iWait, "ptr", 0)
If $hData[0] Then
$sData = DllCall($hDll, "str", "DdeAccessData", "int", $hData[0], "ptr", 0)
EndIf
EndIf
EndIf
EndIf
EndIf
$err = DllCall($hDll, "int", "DdeGetLastError", "int", DllStructGetData($uIdInst,1))
If $hData[0] Then DllCall($hDll, "int", "DdeFreeDataHandle", "int", $hData[0])
If $hConv[0] Then DllCall($hDll, "int", "DdeFreeDataHandle", "int", $hConv[0])
If $hItem[0] Then DllCall($hDll, "int", "DdeFreeDataHandle", "int", $hItem[0])
If $hTopic[0] Then DllCall($hDll, "int", "DdeFreeDataHandle", "int", $hTopic[0])
If $hServer[0] Then DllCall($hDll, "int", "DdeFreeDataHandle", "int", $hServer[0])
If $err[0] Then Return SetError(3, $err[0], "") ; Другие ошибки DDE
DllCall($hDll, "int", "DdeUninitialize", "int", DllStructGetData($uIdInst,1))
DllClose($hDll)
If $sURL='' Then $sURL = StringRegExpReplace($sData[0],'^"([^"]*?)".*','\1')
Return $sURL
EndFunc
Maza Faka
09-10-2007, 10:36
Creat0R
Я так понял нужно определить было ли отменено копирование?
Сделал так:
Основной скрипт:
$sCopy = CopyFile("d:\Video\Films\video.avi", "c:\")
Func CopyFile($source, $dest)
$WinShell = ObjCreate("shell.application")
If Not @error Then
Run("c:\Program Files\AutoIt3\AutoIt3.exe " & @ScriptDir & "\check.au3")
$WinShell.NameSpace($dest).CopyHere($source)
Else
MsgBox(16, "Error", "Obj not create")
EndIf
EndFunc
А это дополнительный, который вызывается перед копированием:
#include <Misc.au3>
Opt("MouseCoordMode", 2)
Dim $title = "Копирование..."
Dim $dll = DllOpen("user32.dll")
WinWait($title)
While WinExists($title)
If WinActive($title) Then
If _IsPressed(01, $dll) Then
$mousePos = MouseGetPos()
If $mousePos[0] > 303 And $mousePos[0] < 362 And $mousePos[1] > 102 And $mousePos[1] < 124 Then
WinClose($title)
MsgBox(16, "Error", "Copying aborted")
Exit
EndIf
EndIf
EndIf
Sleep(10)
WEnd
MsgBox(64, "Success", "File copying successfuly")
Теперь бы оформить всё это красиво, например прописать содержимое доп. скрипта в основной, что бы скрипт вызывал сам себя, а не доп. скрипт. Помоги плиз.
amel27,
Добавляет Мой Компьютер,Мои Документы...
Это я видел, но это не помагает решить полностью проблему :( - У меня список содержит имена, как я проверю что именно эти имена (элементы) на рабочем столе?
как тебе точка зрения Absurd
Абсурдная :biggrin:
у меня получилось только открывать/читать URL непосредственно с вкладок:
Прямой доступ к DDE!!! я это давно искал, биг Thanks!!!
Maza Faka,
Такое лучше сделать через Callback... щас попробую нарисовать пример...
попробую нарисовать
Вот:
#include <GUIConstants.au3>
#include <Misc.au3>
#include "DllCallBack.au3"
Opt("GuiOnEventMode", 1)
Global $pTimerProc, $uiTimer
$sCopy = CopyFile("d:\Video\Films\video.avi", "c:\")
MsgBox(64, "Success", "File copying successfuly")
Quit()
Func CopyFile($source, $dest)
$WinShell = ObjCreate("shell.application")
If Not @error Then
InitializeCallBack(100)
$WinShell.NameSpace($dest).CopyHere($source)
Else
MsgBox(16, "Error", "Obj not create")
EndIf
EndFunc
Func InitializeCallBack($CallEvery, $FuncName="MyCallBackFunc")
$pTimerProc = _DllCallBack($FuncName, "hwnd;uint;uint;dword")
$uiTimer = DllCall("user32.dll", "uint", "SetTimer", "hwnd", 0, "uint", 0, "int", $CallEvery, "ptr", $pTimerProc)
$uiTimer = $uiTimer[0]
EndFunc
Func MyCallBackFunc($hWnd, $uiMsg, $idEvent, $dwTime)
Opt("MouseCoordMode", 2)
Local $Title = "Копирование..."
If WinExists($Title) And WinActive($Title) Then
If _IsPressed(01) Then
$mousePos = MouseGetPos()
If $mousePos[0] > 303 And $mousePos[0] < 362 And $mousePos[1] > 102 And $mousePos[1] < 124 Then
WinClose($Title)
MsgBox(16, "Error", "Copying aborted")
Quit()
EndIf
EndIf
EndIf
EndFunc
Func Quit($Exit=1)
_DllCallBack_Free($pTimerProc)
DllCall("user32.dll", "int", "KillTimer", "hwnd", 0, "uint", $uiTimer)
If $Exit Then Exit
EndFunc
Саму библиотеку DllCallBack.au3 скачать можно тут (http://www.autoitscript.com/forum/index.php?showtopic=50768&hl=callback).
Creat0R
У меня список содержит имена, как я проверю что именно эти имена (элементы) на рабочем столе? »смотри HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID, параметр "по умолчанию"... если пусто, значит берется дефолтовый из HKLM\SOFTWARE\Classes\CLSID
amel27,
если пусто, значит берется дефолтовый из HKLM\SOFTWARE\Classes\CLSID
У меня там кроме Мой компьютер везде пусто...
А по второму адресу - к примеру тут HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{645FF040-5081-101B-9F08-00AA002F954E} должно быть имя корзины, там так и написано Корзина (в “по умолчанию”), но у меня корзина именуется как Mycop ;) - Вот тут то и проблема, список содержит именно Mycop (это латинские буквы кстати), в реестре я не нашёл это значение :(
Creat0R
ну не знаю :dont-know ... у меня после переименования новое имя сразу появилось в HKCU, правда чтобы я смог переименовать корзину с рабочего стола мне пришлось применить соответствующий твик
amel27,
А «Мои документы» тоже нормально отображаются в реестре?
У меня их вообще нигде нету, даже не в оригинальном названии :dont-know .
Maza Faka
09-10-2007, 14:57
Creat0R
Большое спасибо за пример, а если бы ты ещё нашёл время, что бы разжевать мне эту функцию:
Func InitializeCallBack($CallEvery, $FuncName="MyCallBackFunc")
$pTimerProc = _DllCallBack($FuncName, "hwnd;uint;uint;dword")
$uiTimer = DllCall("user32.dll", "uint", "SetTimer", "hwnd", 0, "uint", 0, "int", $CallEvery, "ptr", $pTimerProc)
$uiTimer = $uiTimer[0]
EndFunc
то было бы вообще здорово! А то ведь простое использование знаний не даст.
Maza Faka,
разжевать мне эту функцию:
Там всё просто...
вызывается функция _DllCallBack, которая как бы регистрирует для процесса (скрипта) указанную функцию (через параметр $FuncName), и возвращает на неё указатель..
Далее просто по этому указателю вызывается таймер (строка с вызовом Dll) с заданым временем промежутка между повторами вызова (a.k.a AdibEnable ;)) - Всё, наша функция вызывается каждый заданный промежуток времени, пока не высвободить таймер (см. в функции Quit()).
[hr]
Пример-Скрипт для предотвращения ввода не цифр в Input-поле:
#include <GuiConstants.au3>
Global Const $WM_COMMAND = 0x0111
Global $GUIOldPos[2]
$GUI = GUICreate("<Only Numbers> in Input Demo GUI", 300, 100)
$Input = GUICtrlCreateInput("", 20, 40, 260, 20)
$Exit = GUICtrlCreateButton("Exit", 20, 70, 60, 20)
GUISetState()
GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE, $Exit
ExitLoop
Case Else
CheckToolTip()
EndSwitch
WEnd
Func CheckToolTip()
Local $GetCurInfo = GUIGetCursorInfo($GUI)
Local $GuiGetPos = WinGetPos($GUI)
If $GetCurInfo[2] = 1 Or $GUIOldPos[0] <> $GuiGetPos[0] Or $GUIOldPos[1] <> $GuiGetPos[1] Then
ToolTip("")
$GUIOldPos = $GuiGetPos
EndIf
EndFunc
Func _Input_Changed()
ToolTip("")
Local $ReadInput = GUICtrlRead($Input)
If StringRegExp($ReadInput, '[^0-9]') Then
GUICtrlSetData($Input, StringRegExpReplace($ReadInput, '[^0-9]', ''))
Local $GuiGetPos = WinGetPos($GUI)
Local $XPos = $GuiGetPos[0] + 280
Local $YPos = $GuiGetPos[1] + 80
ToolTip("Here only numbers are allowed", $XPos, $YPos, "Not allowed symbol", 3, 1)
DllCall("user32.dll", "int", "MessageBeep", "int", 0x0)
EndIf
EndFunc ;==>_Input_Changed
Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
Local $nNotifyCode = BitShift($wParam, 16)
Local $nID = BitAND($wParam, 0xFFFF)
Local Const $EN_CHANGE = 0x300
Local Const $EN_SETFOCUS = 0x100
Switch $nID
Case $Input
Switch $nNotifyCode
Case $EN_CHANGE
_Input_Changed()
Case $EN_SETFOCUS
ToolTip("")
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>MY_WM_COMMAND
Многие используют стиль $ES_NUMBER, но он не перестраховывает от вставки текста по Ctrl V или с контексного меню.
DenchikK
09-10-2007, 21:59
Подскажите пожалуйста, что то я так и не нашёл - как можно настроить скрипт на выход из цикла по нажатию на определённую клавишу?
Вот как то так пытался, не выходит:
WinActivate ("µTorrent","")
Sleep (500)
Global $i
$i = 0
While $i <= 10 or Send ('{F2}')
Sleep (1000)
Send ("{APPSKEY}")
Sleep (1000)
Send ("{UP}{UP}")
Sleep (1000)
Send ("{Enter}")
$i=$i+1
Sleep (1000)
WEnd
Creat0R, А «Мои документы» тоже нормально отображаются в реестре? »
измененное имя в HKCU аналогично другим, дефолтового действительно нет но его можно взять из параметра Personal ключа "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
Привет всем.
По работе понадобилось конвертировать большое количество файлов из одного формата в другой.
Пакетного конвертера который бы выполнил мою задачу я ненашёл, поэтому пришлось изголяться непосредственно с приложением в котором есть такая возможность используя обычные команды меню и горячие клавиши (открывая последовательно сначала один файл: выполняя ряд действий, "импорт",..."экспорт" ;затем открывая второй файл и т. д....)
Проблему решил написав следующий скрипт
; выбор одного или нескольких файлов
$files = FileOpenDialog("Пакетное конвертирование файлов", "c:\", "любые файлы (*.*)", 1 + 4 ) & "|"
; если ничего не выбрано то выходим
If @error Then
TrayTip("пакетная обработка файлов", 'Выход', 5, 3)
MsgBox(16,"Информация","Ничего не выбрано", 7)
Exit
EndIf
$dir_in = StringMid($files,1, StringInStr($files, "\",0,-1))
$Chetchik=1
While $Chetchik<3
$sch=StringInStr( $files,"|",0,$Chetchik)
if $sch<>0 Then
$Chetchik=$Chetchik+1
Else
ExitLoop
endif
WEnd
; рисуем цикл для двух типов выделений
if $Chetchik>2 Then
; группа файлов
$i=1
While StringLen($files)>$i
$dir_in = StringReplace(StringReplace(StringMid($files,1, StringInStr($files, "|",0,1)), "|", "\"), "\\", "\")
$name=StringMid(StringMid($files,StringInStr ( $files,$dir_in)+2 ),StringInStr(StringMid($files,StringInStr ( $files,$dir_in)+2 ),"|",0,$i)+1,StringInStr( StringMid($files,StringInStr ( $files,$dir_in)+2 ),"|",0,$i+1) - StringInStr( StringMid($files,StringInStr ( $files,$dir_in)+2 ),"|",0,$i)-1)
if StringLen($name)>0 Then
$i=$i+1
prt_to_dwg($name)
Else
ExitLoop
endif
WEnd
Else ; один файл
$name=StringTrimRight(StringMid($files,StringInStr($files,$dir_in)+StringLen($dir_in)),1)
prt_to_dwg($name)
EndIf
; конец выполнения программы
TrayTip("пакетная обработка файлов", 'Конец', 5, 1)
MsgBox(64, "Информация", "Все опрации завершены" )
; функция обработки файла
Func prt_to_dwg($value)
$value = $value
TrayTip("пакетная обработка", 'обработка файла "' & $value & '"', 10, 1)
; для примера откроем блокнот
Run("notepad")
WinWait("Безымянный")
WinActivate("Безымянный")
Send("^o")
WinWait("Открыть")
WinActivate("Открыть")
Sleep(100)
ControlSetText("Открыть", "", "Edit1", $dir_in & $value)
Sleep(5000)
WinClose("Открыть")
WinClose("Безымянный")
WinWaitClose("Безымянный")
EndFunc
Сейчас осенила мысль - неплохо бы написать к этому скрипту GUI
с прогресс баром, возможностью выбора входящих и исходящих папок до и после обработки + возможность
использовать включающий и исключающий фильтр в названиях обрабатываемых файлов.
Посему вопрос: не делал ли кто нибудь нечто похожее? Неохота изобретать велосипед :)
Maza Faka
10-10-2007, 07:49
DenchikK
Попробуй так:
Dim $i = 0
HotKeySet("{F2}", "Quit")
WinWait("µTorrent")
WinActivate ("µTorrent")
Sleep (500)
While $i <= 10
Sleep (1000)
Send ("{APPSKEY}")
Sleep (1000)
Send ("{UP}{UP}")
Sleep (1000)
Send ("{Enter}")
$i += 1
Sleep (1000)
WEnd
Func Quit()
Exit
EndFunc
Maza Faka
10-10-2007, 12:02
Lodoss
Вот пример как это можно сделать, если нужен законченный скрипт, тогда выкладывай подробности ;)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC