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

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

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

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

Creat0R, вот меня мысль посетила, к выше опубликованному скрипту можно привинтить (если такое возможно путём AutoIt'а) таймер, который запустит сам скрипт на выполнение через заданный промежуток времени?



Например: запускаю я скрипт, а он через минуту только выполнит своё назначение, т.е. задержка перед выполнением...
Аватара пользователя
Creat0R

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

Сообщение Creat0R »

adima,


Цитата:



как убрать иконку из tray



На оф. форуме выкладывали
библиотеку Systray_UDF
, там есть функции для скрытия иконки по имени процесса, есть также и по заголовку окна, но у меня лично оно не работает, только по имени процесса...

Вот пример:





Код:

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

#include "SysTray_UDF.au3"
$ProcessName = "AutoIt3.exe"
$TrayIconIndex = _SysTrayIconIndex($ProcessName)
MsgBox(0, "", "Сейчас будет спрятана иконка AutoIt'а", 3)
_SysTrayIconVisible(1, $TrayIconIndex)
MsgBox(0, "", "Теперь вернём иконку AutoIt'а ;)", 3)
_SysTrayIconVisible(0, $TrayIconIndex)
Sleep(2000)

All

Если у кого-то получится сделать функцию для скрытия иконки по PID, буду безмерно благодарен. В той библиотеке есть вроде подобные приминения, но они не работают у меня Изображение.



SAOPP,
Цитата:



запускаю я скрипт, а он через минуту только выполнит своё назначение, т.е. задержка перед выполнением...



А чем обычная пауза не подходит? Sleep(1000 * 60) ;будет спать одну минуту Изображение

Почитай справку, там много интересного.
Аватара пользователя
SAOPP

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

Сообщение SAOPP »

Creat0R, последний вопрос, тот же самый скрипт (как это не странно Изображение), но(!) - возможно ли кликнуть на индикаторе языковой панели Windows? И выбрать соответствующий пункт:



Изображение



Но после выбора, появляется окно подтверждения данного действия - если возможно всё ДО этого окна, возможность и в этом окне ответить есть? Изображение



Аватара пользователя
Creat0R

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

Сообщение Creat0R »

Creat0R

И сразу вопрос, где можно найти описание синтаксиса COM - обьектов? Изображение




Цитата TERMINAL:



А можно с перезаписью файлов (чтобы по умолчанию перезаписывало)?
[архив - Часть 2] AutoIt скрипты




Так по умолчанию перезаписывает.
Аватара пользователя
Creat0R

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

Сообщение Creat0R »

Diamond

А вот и решение для установки курсора, и потом возвращение оригинального (используемого юзером)...

(По мативам примера от eltorro
тут
)





Код:

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

Global Const $OCR_APPSTARTING = 32650
Global Const $OCR_NORMAL = 32512
Global Const $OCR_CROSS = 32515
Global Const $OCR_HAND = 32649
Global Const $OCR_IBEAM = 32513
Global Const $OCR_NO = 32648
Global Const $OCR_SIZEALL = 32646
Global Const $OCR_SIZENESW = 32643
Global Const $OCR_SIZENS = 32645
Global Const $OCR_SIZENWSE = 32642
Global Const $OCR_SIZEWE = 32644
Global Const $OCR_UP = 32516
Global Const $OCR_WAIT = 32514
$hWaitCur = _LoadCursor($OCR_CROSS)
_SetSystemCursor($hWaitCur, $OCR_NORMAL)
Sleep(2000)
_SetSystemCursor($hWaitCur, $OCR_NORMAL)
$hWaitCur = 0
Func _LoadCursor($iCursor)
    Return SetError(@error,@extended ,_API(DllCall("user32.dll", "int", "LoadCursorA", "hwnd", 0, "int", $iCursor)))
EndFunc   ;==>_LoadCursor
Func _SetSystemCursor($hCursor, $iCursor)
    Return SetError(@error,@extended ,_API(DllCall("user32.dll", "int" ,"SetSystemCursor","int",$hCursor,"int",$iCursor)))
EndFunc
Func _API($v_ret)
    Local $err = @error
    Local $ext = @extended
    If Not $err Then
        If IsArray($v_ret) Then
            Return $v_ret[0]
        Else
            Return $v_ret
        EndIf
    EndIf
    Return SetError($err, $ext, 0)
EndFunc   ;==>_API
Аватара пользователя
SAOPP

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

Сообщение SAOPP »

TERMINAL, Maza Faka,


Цитата TERMINAL:



можно с перезаписью файлов
[архив - Часть 2] AutoIt скрипты




Я вспомнил, есть ещё и API методы для копирования с отображением системного диалога...



Вот функции прямо из оф. форума (
ссылка
на источник) включая константы и обработчик ошибок (я лишь немного подправил функции):





Код:

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

#Region consts
Global Const $FOR_MOVE                  = 0x0001
Global Const $FOR_COPY                  = 0x0002
Global Const $FOR_DELETE                = 0x0003
Global Const $FOR_RENAME                = 0x0004
Global Const $FOF_MULTIDESTFILES        = 0x0001
Global Const $FOF_CONFIRMMOUSE          = 0x0002
Global Const $FOF_SILENT                = 0x0004
Global Const $FOF_RENAMEONCOLLISION     = 0x0008
Global Const $FOF_NOCONFIRMATION        = 0x0010
Global Const $FOF_WANTMAPPINGHANDLE     = 0x0020
Global Const $FOF_ALLOWUNDO             = 0x0040
Global Const $FOF_FILESONLY             = 0x0080
Global Const $FOF_SIMPLEPROGRESS        = 0x0100
Global Const $FOF_NOCONFIRMMKDIR        = 0x0200
Global Const $FOF_NOERRORUI             = 0x0400
Global Const $FOF_NOCOPYSECURITYATTRIBS = 0x0800
Global Const $FOF_NORECURSION           = 0x1000
Global Const $FOF_NO_CONNECTED_ELEMENTS = 0x2000
Global Const $FOF_WANTNUKEWARNING       = 0x4000
Global Const $FOF_NORECURSEREPARSE      = 0x8000
#Endregion consts
Func _CopyWithProgress($sFrom, $sTo, $OPERATION_MODE, $GENERAL_MODE)
    ; version 1 by SumTingWong on 5/26/2006
    ; http://www.autoitscript.com/forum/index.php.htm?showtopic=11888
    ; updated by lod3n on 6/5/2007
    Local $SHFILEOPSTRUCT
    Local $pFrom
    Local $pTo
    Local $aDllRet
    Local $nError = 0
    Local $i
	If FileExists($sTo) And StringRight($sFrom, 3)  "*.*" And StringInStr(FileGetAttrib($sFrom), "D") Then $sFrom &= "\*.*"
    $SHFILEOPSTRUCT = DllStructCreate("int;uint;ptr;ptr;uint;int;ptr;ptr")
    If @error Then Return "nostruct"        
; hwnd
    DllStructSetData($SHFILEOPSTRUCT, 1, 0)
; wFunc
    DllStructSetData($SHFILEOPSTRUCT, 2, $OPERATION_MODE)
; pFrom
    $pFrom = DllStructCreate("char[" & StringLen($sFrom)+2 & "]")
; pFrom will now be null-terminated at StringLen($sFrom)+1
    DllStructSetData($pFrom, 1, $sFrom)
    For $i = 1 To StringLen($sFrom)+2
        If DllStructGetData($pFrom, 1, $i) = 10 Then DllStructSetData($pFrom, 1, 0, $i)
    Next
; We need a second null at the end
    DllStructSetData($pFrom, 1, 0, StringLen($sFrom)+2)
    DllStructSetData($SHFILEOPSTRUCT, 3, DllStructGetPtr($pFrom))
; pTo
    $pTo = DllStructCreate("char[" & StringLen($sTo)+2 & "]")
; pTo will now be null-terminated at StringLen($sTo)+1
    DllStructSetData($pTo, 1, $sTo)
; We need a second null at the end
    DllStructSetData($pTo, 1, 0, StringLen($sTo)+2)
    DllStructSetData($SHFILEOPSTRUCT, 4, DllStructGetPtr($pTo))
; fFlags
    DllStructSetData($SHFILEOPSTRUCT, 5, $GENERAL_MODE)
; fAnyOperationsAborted
    DllStructSetData($SHFILEOPSTRUCT, 6, 0)
; hNameMappings
    DllStructSetData($SHFILEOPSTRUCT, 7, 0)
; lpszProgressTitle
    DllStructSetData($SHFILEOPSTRUCT, 8, 0)
    $aDllRet = DllCall("shell32.dll", "int", "SHFileOperation", "ptr", DllStructGetPtr($SHFILEOPSTRUCT))
    $retcode = $aDllRet[0]
    $pFrom = 0
    $pTo = 0
    $SHFILEOPSTRUCT = 0
    If $retcode  0 Then
        ConsoleWrite(hex($retcode) & ": " & SHFileOperationErrDecode($retcode) & @crlf)
        SetError($nError)
        Return False
    EndIf
    Return True
EndFunc
Func SHFileOperationErrDecode($errNum)
    Switch $errNum
        case 113    
            return "The source and destination files are the same file."
        case 114    
            return "Multiple file paths were specified in the source buffer, but only one destination file path."
        case 115    
            return "Rename operation was specified but the destination path is a different directory. Use the move operation instead."
        case 116    
            return "The source is a root directory, which cannot be moved or renamed."
        case 117    
            return "The operation was cancelled by the user, or silently cancelled if the appropriate flags were supplied to SHFileOperation."
        case 118    
            return "The destination is a subtree of the source."
        case 120    
            return "Security settings denied access to the source."
        case 121    
            return "The source or destination path exceeded or would exceed MAX_PATH."
        case 122    
            return "The operation involved multiple destination paths, which can fail in the case of a move operation."
        case 124    
            return "The path in the source or destination or both was invalid."
        case 125    
            return "The source and destination have the same parent folder."
        case 126    
            return "The destination path is an existing file."
        case 128    
            return "The destination path is an existing folder."
        case 129    
            return "The name of the file exceeds MAX_PATH."
        case 130    
            return "The destination is a read-only CD-ROM, possibly unformatted."
        case 131    
            return "The destination is a read-only DVD, possibly unformatted."
        case 132    
            return "The destination is a writable CD-ROM, possibly unformatted."
        case 133    
            return "The file involved in the operation is too large for the destination media or file system."
        case 134    
            return "The source is a read-only CD-ROM, possibly unformatted."
        case 135    
            return "The source is a read-only DVD, possibly unformatted."
        case 136    
            return "The source is a writable CD-ROM, possibly unformatted."
        case 183
            return "MAX_PATH was exceeded during the operation."
        case 1026, 0000005
            return "An unknown error occurred. This is typically due to an invalid path in the source or destination. This error does not occur on Microsoft Windows Vista and later."
        case 65536  
            return "An unspecified error occurred on the destination."
        case 65652  
            return "Destination is a root directory and cannot be renamed."
		Case 0000002
			return "Confirmation was canceled"
    EndSwitch
    return "SHFileOperation returned errorcode " & hex($errNum) & ", which is not recognized"
EndFunc

Вот примеры использования:





Код:

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

;Копирование содержимого папки с подтверждением на перезапись (подавляется диалог о создании папки - константа $FOF_NOCONFIRMMKDIR)
_CopyWithProgress("C:\Source", "C:\Dest", $FOR_COPY, $FOF_NOCONFIRMMKDIR)
;Копирование содержимого папки подавляя подтверждение на перезапись (перезапись без подтверждения)
_CopyWithProgress("C:\Source", "C:\Dest", $FOR_COPY, BitOR($FOF_NOCONFIRMMKDIR, $FOF_NOCONFIRMATION))
;Копирование содержимого папки без рекурсии (файлы только в указанной папке)
_CopyWithProgress("C:\Source\*.*", "C:\Dest", $FOR_COPY, $FOF_NORECURSION)
;Копирование только файлов с возможностью отмены действии (без каталогов)
_CopyWithProgress("C:\Source", "C:\Dest", $FOR_COPY, BitOR($FOF_FILESONLY, $FOF_ALLOWUNDO))

Maza Faka,
Цитата Maza Faka:



где можно найти описание синтаксиса COM - обьектов?
[архив - Часть 2] AutoIt скрипты




Ну как, в справке вообще то Изображение

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



SAOPP,
Цитата:



сразу же появляется "плавающая" языковая панель



Это видимо такие настройки для этой панели (хотя у себя такого никогда не замечал), посмотри в панели управления её настройки.
Аватара пользователя
Creat0R

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

Сообщение Creat0R »

SAOPP,


Цитата:



по каким то причинам не хочет нажимать на кнопочки окна 'Языковая панель'



Запусти это окно, запусти Au3Info, наведи курсор мышки над нужно кнопкой, и посмотри что написано в Au3Info тут:



Аватара пользователя
TERMINAL

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

Сообщение TERMINAL »

ДSAOPP, Держи-если просто хочешь отключить отображение языковой панели,


читать дальше »




Run ("RunDll32.exe shell32.dll,Control_RunDLL intl.cpl,,1")

For $i = 0 To 1000

If WinWait("Язык и региональные стандарты","", 1) Then

ControlClick("Язык и региональные стандарты","","Button2")

EndIf

If WinWait("Языки и службы текстового ввода","", 1) Then

ControlClick("Языки и службы текстового ввода","","Button8")

EndIf

If WinWait("Добавление языка ввода","&Раскладка клавиатуры или мето", 1) Then

ControlClick("Добавление языка ввода","&Раскладка клавиатуры или мето","Button2")

WinWait("Языки и службы текстового ввода","Выберите один из установленных")

ControlClick("Языки и службы текстового ввода","Выберите один из установленных","Button11")

WinWait("Язык и региональные стандарты","Дополнительная языковая поддер")

ControlClick("Язык и региональные стандарты","Дополнительная языковая поддер","Button7")

Run ("RunDll32.exe shell32.dll,Control_RunDLL intl.cpl,,1")

EndIf

If WinWait("Параметры языковой панели","О&тображать текстовые метки на", 1) Then

ControlClick("Параметры языковой панели","О&тображать текстовые метки на","Button2")

ControlClick("Параметры языковой панели","О&тображать текстовые метки на","Button6")

WinWait("Языки и службы текстового ввода","Выберите один из установленных")

ControlClick("Языки и службы текстового ввода","Выберите один из установленных","Button10")

WinWait("Язык и региональные стандарты","Дополнительная языковая поддер")

ControlClick("Язык и региональные стандарты","Дополнительная языковая поддер","Button6")

Exit

EndIf

Next




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




Opt("WinWaitDelay",100)

Opt("WinTitleMatchMode",4)

Opt("WinDetectHiddenText",1)

Opt("MouseCoordMode",0)

WinWait("classname=Shell_TrayWnd","TF_FloatingLangBar_W")

If Not WinActive("classname=Shell_TrayWnd","TF_FloatingLangBar_W") Then WinActivate("classname=Shell_TrayWnd","TF_FloatingLangBar_W")

WinWaitActive("classname=Shell_TrayWnd","TF_FloatingLangBar_W")

MouseMove(992,12)

MouseDown("right")

MouseUp("right")

MouseMove(899,-2)

MouseDown("left")

MouseUp("left")

MouseMove(1005,15)

MouseDown("right")

MouseUp("right")

MouseMove(908,-160)

MouseDown("left")

MouseUp("left")



Низнаю, правильно будет работать или нет, но я делал это на разрешении монитора 1024*768. На

других разрешения не пробовал...
Аватара пользователя
SAOPP

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

Сообщение SAOPP »

Creat0R, всё тоже самое что и в скрипте, но не хочет нажимать ничего Изображение
Аватара пользователя
Creat0R

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

Сообщение Creat0R »

mariolast

функция WinWaitClose() обязательна?.. попробуйте без них



Creat0R
Цитата:



Если при обработке раскраски присутствуют #Region Something, то обработка не может распознать стили - их можно как то добавить?



переделал базовый скрипт с целью уменьшения размера выходного текста и учетом новых познаний в регулярных выражениях Изображение , основные изменения:

- убрал промежуточные замены на "#", теперь этот символ можно использовать в коде;

- добавил черезстрочное объединение стилей, если стиль не изменяется от строки к строке;

- убрал из стилей жирный шрифт, опять же для уменьшения количества форматных символов.



скрипт лежит там же:
[Архив - Часть 1.2] AutoIt скрипты




З.Ы. Если требуется совпадения стилей с SciTE нужно будет кое-где добавить теги
Ответить

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