[архив - Часть 2] AutoIt скрипты

Ответить
 • Просмотры: 18
Аватара пользователя
DenchikK

Re: [архив - Часть 2] AutoIt скрипты

Сообщение DenchikK »

Creat0R


Цитата:



чтобы отображалась граница растягиваемого окна (только граница, без содержимого окна)
[архив - Часть 2] AutoIt скрипты




ИМХО от WM_SETREDRAW толку мало - оно не отличается от @SW_LOCK, тебе же нужна рамка... Может для установки размера использовать специальное полупрозрачное окно?


Цитата:



чтобы не сфокусированный элемент возвращала, а тот над которым проводим мышкой? (типа _ControlGetHovered())
[архив - Часть 2] AutoIt скрипты




попробуй так:

Код:

Код: Выделить всё

Func _ControlGetHovered()
    Local $ret = DllCall("user32.dll", "int", "WindowFromPoint", _
        "long", MouseGetPos(0), _
        "long", MouseGetPos(1) )
    Return $ret[0]
EndFunc
Аватара пользователя
amel27

Re: [архив - Часть 2] AutoIt скрипты

Сообщение amel27 »

Oldschool


Цитата:



я хочу прочитать эту линию



Ну так и считывай её: Изображение



Код:

Код: Выделить всё

$text = ControlListView("Drop_Gui", "", "SysListView321", "GetText", 10) ;число 10 означает индекс элемента, счёт идёт с нуля
MsgBox(0, "GetList", $text)
Аватара пользователя
Lodoss

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Lodoss »

Привет всем.



По работе понадобилось конвертировать большое количество файлов из одного формата в другой.

Пакетного конвертера который бы выполнил мою задачу я ненашёл, поэтому пришлось изголяться непосредственно с приложением в котором есть такая возможность используя обычные команды меню и горячие клавиши (открывая последовательно сначала один файл: выполняя ряд действий, "импорт",..."экспорт" ;затем открывая второй файл и т. д....)





Проблему решил написав следующий скрипт





Код:

Код: Выделить всё

; выбор одного или нескольких файлов
$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

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Maza Faka »

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

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Maza Faka »

-AAA-,


Цитата:



Как с помощью AutoIT получить список подкаталогов данного каталога?



Ранее
приводилась функция
(_DirListToArray() - в самом конце).
Вложения
new.rar
(1.11 КБ) 0 скачиваний
new.rar
(1.11 КБ) 0 скачиваний
Аватара пользователя
Creat0R

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Creat0R »

Creat0R


Цитата:



возможно ли конвертировать этот самый идентификатор в то же число, как и возвращает элемент GUI?
[архив - Часть 2] AutoIt скрипты






Код:

Код: Выделить всё

Func _ControlIDGetHovered()
    Local $ret = DllCall("user32.dll", "int", "WindowFromPoint", _
        "long", MouseGetPos(0), _
        "long", MouseGetPos(1) )
    $ret = DllCall("user32.dll", "int", "GetDlgCtrlID", "hwnd", $ret[0])
    Return $ret[0]
EndFunc
Аватара пользователя
TERMINAL

Re: [архив - Часть 2] AutoIt скрипты

Сообщение TERMINAL »

Можно ли с помощью скрипта открыть каретку CD-ROMa или DVD-ROMa?
Аватара пользователя
Creat0R

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Creat0R »

-AAA-


Цитата:



Нужно в одной папке просмотреть все вложенные подпапки



Можно так:





Код:

Код: Выделить всё

#include 
#include 
Global $DirArray[1]
Dim $sPath = "c:\windows"
$GetDirs = DirList($sPath)
_ArrayDisplay($DirArray)
Func DirList($path)
    Local $sRet = ""
    Local $sDir = _FileListToArray($path, "*", 2)
        If IsArray($sDir) And $sDir[0] > 0 Then
        For $i = 1 To UBound($sDir) - 1
            _ArrayAdd($DirArray, $sDir[$i])
            $sRet = DirList($sPath &"\"& $sDir[$i])
        Next
    EndIf
EndFunc
Аватара пользователя
amel27

Re: [архив - Часть 2] AutoIt скрипты

Сообщение amel27 »

Цитата Maza Faka:



Можно так:
[архив - Часть 2] AutoIt скрипты




идея понятна, но ты очевидно поторопился Изображение, итак:



- у тебя очепятка ($path vs $sPath);

- имя каталога заносится в массив без пути;

- проверка локального массива через IsArray() необязательна (особенность For);

- проверка глобального массива IsArray() желательна (особенность _ArrayAdd())

- зачем $sRet ?

- наконец, повторюсь: чтобы избежать путаницы при повторном использовании функций с глобальными переменными их нужно объявлять в параметрах через ByRef.



Код:

Код: Выделить всё

#include 
#include 
Global $DirArray[1]
_ArrayDirListAdd($DirArray, "c:\windows")
_ArrayDisplay($DirArray,'')
Func _ArrayDirListAdd (ByRef $aGDir, $sPath = @ScriptDir)
    Local $aLDir = _FileListToArray($sPath, "*", 2)
    For $i = 1 To UBound($aLDir) - 1
        If IsArray($aGDir) Then _ArrayAdd($aGDir, $sPath &"\"& $aLDir[$i])
        _ArrayDirListAdd ($aGDir, $sPath &"\"& $aLDir[$i])
    Next
EndFunc
Аватара пользователя
Creat0R

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Creat0R »

Интересно, возможно ли получить процент закачиваемых байтов (общий процент скаченного), не имея заранее полного размера закачиваемого файла?



Просто InetGetSize() иногда возвращает 0, хотя с той же ссылкой InetGet() справляется (скачивает её).

А также хотелось узнать, как правильно получать примерно-оставшиеся время до окончания закачки?

Я ранее поднимал вопрос о закачке файлов, но всё как то не определено, не надёжно Изображение - иногда у меня счётчик скачит то на 5 минут, то на 10, а иногда вовсе 00:00:00 показывает (когда закачка только началась).
Ответить

Вернуться в «AutoIt»