[архив - Часть 2] AutoIt скрипты
-
Maza Faka
Re: [архив - Часть 2] AutoIt скрипты
Creat0R, вот меня мысль посетила, к выше опубликованному скрипту можно привинтить (если такое возможно путём AutoIt'а) таймер, который запустит сам скрипт на выполнение через заданный промежуток времени?
Например: запускаю я скрипт, а он через минуту только выполнит своё назначение, т.е. задержка перед выполнением...
Например: запускаю я скрипт, а он через минуту только выполнит своё назначение, т.е. задержка перед выполнением...
-
Creat0R
Re: [архив - Часть 2] AutoIt скрипты
adima,
Цитата:
как убрать иконку из tray
На оф. форуме выкладывали
Вот пример:
Код:
All
Если у кого-то получится сделать функцию для скрытия иконки по PID, буду безмерно благодарен. В той библиотеке есть вроде подобные приминения, но они не работают у меня
.
SAOPP,
Цитата:
запускаю я скрипт, а он через минуту только выполнит своё назначение, т.е. задержка перед выполнением...
А чем обычная пауза не подходит? Sleep(1000 * 60) ;будет спать одну минуту
Почитай справку, там много интересного.
Цитата:
как убрать иконку из 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 скрипты
Creat0R, последний вопрос, тот же самый скрипт (как это не странно
), но(!) - возможно ли кликнуть на индикаторе языковой панели Windows? И выбрать соответствующий пункт:

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

-
Creat0R
Re: [архив - Часть 2] AutoIt скрипты
Creat0R
И сразу вопрос, где можно найти описание синтаксиса COM - обьектов?
Цитата TERMINAL:
А можно с перезаписью файлов (чтобы по умолчанию перезаписывало)?
Так по умолчанию перезаписывает.
И сразу вопрос, где можно найти описание синтаксиса COM - обьектов?

Цитата TERMINAL:
А можно с перезаписью файлов (чтобы по умолчанию перезаписывало)?
[архив - Часть 2] AutoIt скрипты
Так по умолчанию перезаписывает.
-
Creat0R
Re: [архив - Часть 2] AutoIt скрипты
Diamond
А вот и решение для установки курсора, и потом возвращение оригинального (используемого юзером)...
(По мативам примера от eltorro
Код:
А вот и решение для установки курсора, и потом возвращение оригинального (используемого юзером)...
(По мативам примера от 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 скрипты
TERMINAL, Maza Faka,
Цитата TERMINAL:
можно с перезаписью файлов
Я вспомнил, есть ещё и API методы для копирования с отображением системного диалога...
Вот функции прямо из оф. форума (
Код:
Вот примеры использования:
Код:
Maza Faka,
Цитата Maza Faka:
где можно найти описание синтаксиса COM - обьектов?
Ну как, в справке вообще то
Если ты про мой пример конкретно, я его с оф. форума стащил, но вообще то это нужно смотреть документацию к тому или инному приложению (в этом случае к Windows
).
SAOPP,
Цитата:
сразу же появляется "плавающая" языковая панель
Это видимо такие настройки для этой панели (хотя у себя такого никогда не замечал), посмотри в панели управления её настройки.
Цитата 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 скрипты
SAOPP,
Цитата:
по каким то причинам не хочет нажимать на кнопочки окна 'Языковая панель'
Запусти это окно, запусти Au3Info, наведи курсор мышки над нужно кнопкой, и посмотри что написано в Au3Info тут:
Цитата:
по каким то причинам не хочет нажимать на кнопочки окна 'Языковая панель'
Запусти это окно, запусти Au3Info, наведи курсор мышки над нужно кнопкой, и посмотри что написано в Au3Info тут:
-
TERMINAL
Re: [архив - Часть 2] AutoIt скрипты
Д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. На
других разрешения не пробовал...
читать дальше »
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 скрипты
Creat0R, всё тоже самое что и в скрипте, но не хочет нажимать ничего 

-
Creat0R
Re: [архив - Часть 2] AutoIt скрипты
mariolast
функция WinWaitClose() обязательна?.. попробуйте без них
Creat0R
Цитата:
Если при обработке раскраски присутствуют #Region Something, то обработка не может распознать стили - их можно как то добавить?
переделал базовый скрипт с целью уменьшения размера выходного текста и учетом новых познаний в регулярных выражениях
, основные изменения:
- убрал промежуточные замены на "#", теперь этот символ можно использовать в коде;
- добавил черезстрочное объединение стилей, если стиль не изменяется от строки к строке;
- убрал из стилей жирный шрифт, опять же для уменьшения количества форматных символов.
скрипт лежит там же:
З.Ы. Если требуется совпадения стилей с SciTE нужно будет кое-где добавить теги
функция WinWaitClose() обязательна?.. попробуйте без них
Creat0R
Цитата:
Если при обработке раскраски присутствуют #Region Something, то обработка не может распознать стили - их можно как то добавить?
переделал базовый скрипт с целью уменьшения размера выходного текста и учетом новых познаний в регулярных выражениях
, основные изменения:- убрал промежуточные замены на "#", теперь этот символ можно использовать в коде;
- добавил черезстрочное объединение стилей, если стиль не изменяется от строки к строке;
- убрал из стилей жирный шрифт, опять же для уменьшения количества форматных символов.
скрипт лежит там же:
[Архив - Часть 1.2] AutoIt скрипты
З.Ы. Если требуется совпадения стилей с SciTE нужно будет кое-где добавить теги