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

Ответить
Аватара пользователя
Vadikan

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

Сообщение Vadikan »

Внимание!

Тема переведена в архивное состояние




Текущая тема
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.






Архивы старых тем по AutoIt
или они же в
7z архиве (версии для печати) - 846 кб


(настоятельно рекомендуется к прочтению/поиску)





Руководство к действию по работе c AutoIt.



Изображение

Сайт программы


Русская справка


Коллекция AutoIt скриптов
от
Sanja Alone


Коллекция AutoIt скриптов
от MSFN (могут быть устаревшие).

Справочник по командам rundll32
(команды запуска диалоговых окон и не только...)



AutoIt скрипты - введение и FAQ
(статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо).





Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с
правилами форума "Автоматическая установка приложений"
. Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи
поиска или фильтров
.
Цитата Vadikan:



В теме уже свыше 500 сообщений и поиск нужной информации в ней усложняется. Есть предложение собрать все решения (скрипты) и разместить их на
Wiki
по принципу "один скрипт - одна статья wiki", добавляя статьи в
категорию Autoit
. Речь, в принципе, идет об общих решениях, а не о скриптах для установки конкретной программы. Название статьи, очевидно, должно отражать назначение скрипта. Затем можно в шапке просто разместить ссылки на статьи Wiki.
Аватара пользователя
eNcub

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

Сообщение eNcub »

Возможно где-то подобный вопрос уже и был, к сожалению я ответа на него не нашел.



Как мне через AutoIT сэмитировать двойной клик на определенной иконке на рабочем столе? Сам ярлык может быть в произвольном месте, но он есть точно...

Извиняюсь если это на самом деле глупый вопрос, сам сижу уже второй день, не могу найти...
Аватара пользователя
Diamond

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

Сообщение Diamond »

Creat0R


Цитата:



Ну почему, в массив то попадают все строки с нужным текстом, а зачем в массиве символы перевода строки и возврата каретки?



Ни один из символов перевода строки, в массив не попадают. (у меня)


Цитата:



И кстати, при чтении всего файла, совсем не обязательно использовать FileGetSize()



Енто вопрос не ко мне а, к автору функции: _FileReadToArray() Изображение - раз уж он так зделал, то и я вслед за ним не стал это исправлять.


Цитата:



А разве в этом примере символы перевода строки и возврата каретки не заменятся на символ новой строки? может при делении на массив нужно использовать @LF а не @CR?



А, какая разница?

На всякий случай поясню:

Допустим в одном файле могут встретится 3 различных типа завершения строки, с помощью StringRegExpReplace() я последовательно меняю все @CRLF на @CR, затем @LF на @CR, в конечном счёте в тексте остаётся только @CR который я использую в качестве разделителя.

Но можно использовать и @LF - не вижу разницы...

Код:

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

$aArray = StringSplit(StringRegExpReplace(FileRead($hFile),"\r\n|\r",@LF),@LF)
Аватара пользователя
amel27

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

Сообщение amel27 »

Creat0R
Цитата:



Если нет необходимости перебирать массив, то да



ты думаешь я владею тайным знанием?... Изображение сам подумай - если бы даже была такая команда, она бы все равно (втайне от нас) делала вставку с передвижкой всего "хвоста" в памяти на одну позицию.



З.Ы. К слову, я уже давно отказался от _FileReadToArray() и некоторых других штатных UDF, так как RegExp-команды более мощные и гибкие... К примеру, при чтении файла кроме обычного деления на строки можно по ходу делать много других полезных вещей - убирать ведущие и оконечные пробелы, проверять строки на условия, etc.
Аватара пользователя
trigun

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

Сообщение trigun »

всем привет.

у меня тут такая проблемка возникла. Не могу понять как заставить программу считывать нажатую клавишу...

подскажите плз как начать обработку события.



пишу небольшой скриптик для сидюка.

кому интересно(вот исходник):





Код:

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

CDTray("K:", "open") 
Sleep(500)
MsgBox(0,"insert disk","вставте диcк")
WinActivate("insert disk")
WinWaitClose("insert disk")
CDTray("K:","close")
MsgBox(4,"inf","Хотите посмотреть информацию о диске?")
WinActivate("inf")
$var=DriveGetFileSystem("K:")
MsgBox(0,"info","файловая система диска:"& $var)
WinActivate("info")
WinWaitClose("info")
$1= DriveGetLabel("K:")
msgbox(0,"info1","Заголовок диска:"& $1)
WinActivate("info1")
WinWaitClose("info1")
$2=DriveGetSerial("K:")
MsgBox(0,"info2","серийный номер диска:"& $2)
WinActivate("info2")
WinWaitClose("info2")
$3=DriveSpaceFree("K:")
msgbox(0,"info3","свободного места: "& $3 & " MB")
WinActivate("info3")
WinWaitClose("info3")
$4=DriveSpaceTotal("K:")
MsgBox(0,"info4","всего места на диске: " & $4 & " MB")
WinActivate("info4")
Аватара пользователя
Dirk Diggler

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

Сообщение Dirk Diggler »

Цитата:



А чем плоха встроенная функция StringIsSpace ($str)?



она возвращает число, это раз, а во вторых, я когда писал ту функцию, попросту не знал о существовании этой.



а регэкпы - это конечно, хорошо.
Аватара пользователя
amel27

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

Сообщение amel27 »

Creat0R

как и следовало ожидать, piccaso предложил свой новый безDLL'ный метод... хотя он и позволяет использовать все возможности диалоговых окон (в т.ч. Explorer style) по причине нехватки времени пока тупо перегнал _FileSelectFolderOldStyle()

Код:

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

#include 
#include 
Global Const $BFFM_INITIALIZED = 1
Global Const $BFFM_SETSELECTION = $WM_USER + 102
Global Const $BIF_BROWSEFORCOMPUTER = 0x1000 ; Only return computers
Global Const $BIF_BROWSEFORPRINTER = 0x2000 ; Only allow the selection of printers
Global Const $BIF_BROWSEINCLUDEFILES = 0x4000 ; The browse dialog box will display files as well as folders
Global Const $BIF_DONTGOBELOWDOMAIN = 0x2 ; Do not include network folders below the domain level
Global Const $BIF_EDITBOX = 0x10 ; Include an edit control in the browse dialog box
Global Const $BIF_RETURNONLYFSDIRS = 0x1 ; Only return file system directories
Global Const $BIF_ALLOLDSTYLEFLAGS = BitOR ($BIF_BROWSEFORCOMPUTER, $BIF_BROWSEFORPRINTER, $BIF_BROWSEINCLUDEFILES, $BIF_DONTGOBELOWDOMAIN, $BIF_EDITBOX, $BIF_RETURNONLYFSDIRS)
; Simple GUI for sample
$hWndMain = GUICreate ("Test GUI", 200, 45, -1, -1)
$Button_1 = GUICtrlCreateButton ("Select folder",  55, 10)
GUISetState()
While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE
            ExitLoop
        Case $msg = $Button_1
            $res = _FileSelectFolderOldStyle ('Here the prompt', 0, $BIF_RETURNONLYFSDIRS, 'C:\_1', $hWndMain)
            MsgBox (0, "Your choise:", $res)
    EndSelect
Wend
; Initial folder procedure
Func _BrowseCallbackProc ($hWnd, $Msg, $wParam, $lParam)
    If $Msg = $BFFM_INITIALIZED Then
         $ret = DllCall ("user32.dll", "int", "SendMessage", _
            "hwnd",$hWnd, "int", $BFFM_SETSELECTION, "int", 1, "ptr", $lParam )
    EndIf
    Return 0
EndFunc ;==> _BrowseCallbackProc
Func _FileSelectFolderOldStyle ($text = '', $root = 0, $flags = 0, $iniDir = '', $hwnd = 0)
    Local $ret, $pidl, $res = ''
    ; Creating Structures
    Local $ubi = DllStructCreate ("hwnd;ptr;ptr;ptr;int;ptr;ptr;int") ; BROWSEINFO
    Local $utl = DllStructCreate ("char[512],char") ; Browse text
    Local $urs = DllStructCreate ("char[260]") ; MAX_PATH
    Local $ulf = BitAnd ($flags, $BIF_ALLOLDSTYLEFLAGS) ; Supported flags
    ; Filling structures
    DllStructSetData ($utl, 1, $text)
    DllStructSetData ($ubi, 1, $hwnd)
    DllStructSetData ($ubi, 3, DllStructGetPtr($urs))
    DllStructSetData ($ubi, 4, DllStructGetPtr($utl))
    DllStructSetData ($ubi, 5, $ulf)
    If ($iniDir  '') And ($hwnd  0) Then
        Local $udr = DllStructCreate ("char[" & StringLen ($iniDir)+1 & "]")
        DllStructSetData ($udr, 1, $iniDir)
        Local $pBrowseCallbackProc = _DllCallBack("_BrowseCallbackProc","hwnd;uint;long;ptr") ; return function pointer
        DllStructSetData ($ubi, 6, $pBrowseCallbackProc)
        DllStructSetData ($ubi, 7, DllStructGetPtr($udr))
    EndIf
    $ret = DllCall ("shell32.dll", "ptr", "SHGetSpecialFolderLocation", _
        "int", 0 , "int", $root , "ptr", DllStructGetPtr($ubi, 2) )
    If $ret[0]=0 Then
        $pidl = DllCall ("shell32.dll", "ptr", "SHBrowseForFolder", "ptr", DllStructGetPtr ($ubi)) ; Start browse window
        If $pidl[0] Then
            $ret = DllCall ("shell32.dll", "int", "SHGetPathFromIDList", _
                "ptr", $pidl[0], "ptr", DllStructGetPtr ($urs))
            If $ret[0] Then $res = DllStructGetData ($urs, 1)
            DllCall ("ole32.dll", "int", "CoTaskMemFree", "ptr", $pidl[0]) ; clear memory
        EndIf
        DllCall ("ole32.dll", "int", "CoTaskMemFree", "ptr", DllStructGetData ($ubi, 2))
    EndIf
    _DllCallBack_Free ($pBrowseCallbackProc) ; clear memory
    Return $res
EndFunc ;==> _FileSelectFolderOldStyle

P.S. линк на DllCallBack.au3[/i] от piccaso:
http://www.autoitscript.com/forum/in...=post&id=15441
Аватара пользователя
Maza Faka

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

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

DenchikK

Может так:



Код:

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

Case $Proxy
          For $i = 1 To UBound($Proxy_Array)-1
          ControlSend ('Programs', '', 'Edit4', $proxy_Array[$i] & @CR)
          Next
Аватара пользователя
ChVL

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

Сообщение ChVL »

Creat0R


Цитата:



Нужно отключить полностью интернет, и подключить через несколько секунд заного..



В любом файерволле есть опция "Заблокировать интернет".
Аватара пользователя
Diamond

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

Сообщение Diamond »

Creat0R


Цитата:



надо будет проверить... спасибо



Это может сработать если провайдер не требует конкретного имени и конкретного пароля, я почему-то решил что у локального подключения они отсутствуют...
Ответить

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