|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [архив - Часть 2] AutoIt скрипты |
|
[архив - Часть 2] AutoIt скрипты
|
(*.*) Сообщения: 36567 |
Внимание! Тема переведена в архивное состояние Текущая тема http://forum.oszone.net/thread-98914.html (настоятельно рекомендуется к прочтению/поиску) Руководство к действию по работе c AutoIt. ![]() Сайт программы Русская справка Коллекция AutoIt скриптов от Sanja Alone Коллекция AutoIt скриптов от MSFN (могут быть устаревшие). Справочник по командам rundll32 (команды запуска диалоговых окон и не только...) AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо). Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров. Цитата Vadikan:
|
||
------- Отправлено: 00:02, 05-02-2006 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
![]() Kenwood3D Цитата Kenwood3D:
2. Ошибка никак не связана со скриптом, ищи в сетевых настройках Windows, начать можно отсюда: Появление сообщения об ошибке «RUNDLL Ошибка загрузки irprops.cpl» при загрузке Windows XP |
||
Отправлено: 06:22, 14-11-2007 | #721 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27,
Цитата:
![]() Цитата:
![]() Но пока, мне бы узнать о другом поведении, как это окно вызвать “на долго/навсегда” ![]() Есть идея запускать отдельный скрипт, чтобы тот завершал работу только после закрытия диалога свойств, но это особо крайний вариант ![]() P.S А есть ещё вариант с созданием своего окна Свойства для файла, вроде встроенными функциями можно получить необходимую инфу, но всё же, оригинал, он есть оригинал ![]() |
||
------- Отправлено: 08:57, 14-11-2007 | #722 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
Цитата:
![]() в принципе, можно сваять UDF на базе ShellExecuteEx (как тебе советовали на офсайте ![]() |
||
Отправлено: 12:43, 14-11-2007 | #723 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать Цитата amel27:
|
|
Отправлено: 18:05, 14-11-2007 | #724 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27,
Цитата:
![]() Цитата:
$GUI = GUICreate("My GUI") GUISetState() GUISetState(@SW_DISABLE) _ShellExecuteEx(@DesktopDir & "\Test.txt", "", @DesktopDir, "properties", @SW_SHOW, $GUI) Sleep(2000) Func _ShellExecuteEx($sCmd, $Args="", $sFolder="", $Verb="", $rState=@SW_SHOWNORMAL, $hWnd=0) If StringRight($sCmd, 3) = "lnk" Then Local $iShortcutInfo = FileGetShortcut($sCmd) If IsArray($iShortcutInfo) Then $sCmd = $iShortcutInfo[0] EndIf Local $aRet = DllCall("shell32.dll", "long", "ShellExecute", _ "hwnd", $hWnd, _ "string", $Verb, _ "string", $sCmd, _ "string", $Args, _ "string", $sFolder, _ "int", $rState) If @error Then Return SetError(1, 0, 0) Local $RetVal = $aRet[0] If $RetVal > 32 Then Return SetError(0, 0, 1) Return SetError(2, 0, 0) EndFunc Цитата:
![]() |
|||
------- Отправлено: 23:09, 14-11-2007 | #725 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать Цитата Creat0R:
amel27, Creat0R, огромное СПАСИБО! |
|
Отправлено: 01:26, 15-11-2007 | #726 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
![]() HotKeySet("{Esc}", "OnExit") _ShellExecuteEx(@ScriptName, "", @ScriptDir, "properties") While 1 Sleep(500) WEnd Func _ShellExecuteEx($sCmd, $Args = "", $sFolder = "", $Verb = "", $rState = @SW_SHOWNORMAL, $hWnd = 0) Local $struINFO = DllStructCreate("long;long;long;ptr;ptr;ptr;ptr;long;long;long;ptr;long;long;long;long") Local $struVerb = DllStructCreate("char[15];char") Local $struPath = DllStructCreate("char[255];char") Local $struArgs = DllStructCreate("char[255];char") Local $struWDir = DllStructCreate("char[255];char") ; Заполняем структуры параметров DllStructSetData($struVerb, 1, $Verb) If StringRight($sCmd, 3) = "lnk" Then Local $aShortcutInfo = FileGetShortcut($sCmd) If IsArray($aShortcutInfo) Then DllStructSetData($struPath, 1, $aShortcutInfo[0]) DllStructSetData($struWDir, 1, $aShortcutInfo[1]) DllStructSetData($struArgs, 1, $aShortcutInfo[2]) $rState = $aShortcutInfo[6] Else Return 0 Endif Else DllStructSetData($struPath, 1, $sCmd) DllStructSetData($struWDir, 1, $sFolder) DllStructSetData($struArgs, 1, $Args) EndIf ; Заполняем структуру SHELLEXECUTEINFO DllStructSetData($struINFO, 1, DllStructGetSize($struINFO)) DllStructSetData($struINFO, 2, BitOR(0xC, 0x40, 0x400)) DllStructSetData($struINFO, 3, $hWnd) DllStructSetData($struINFO, 4, DllStructGetPtr($struVerb)) DllStructSetData($struINFO, 5, DllStructGetPtr($struPath)) DllStructSetData($struINFO, 6, DllStructGetPtr($struArgs)) DllStructSetData($struINFO, 7, DllStructGetPtr($struWDir)) DllStructSetData($struINFO, 8, $rState) Local $ret = DllCall("shell32.dll", "int", "ShellExecuteEx", "ptr", DllStructGetPtr($struINFO)) Return $ret[0] EndFunc Func OnExit() Exit EndFunc ![]() |
|
Отправлено: 06:08, 15-11-2007 | #727 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27,
Цитата:
Цитата:
![]() ![]() P.S Спасибо за функцию, работает, правда параметр $hWnd пользы не приносиит, по крайней мере не визуально ![]() |
||
------- Отправлено: 06:26, 15-11-2007 | #728 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
![]() |
|
Отправлено: 07:38, 15-11-2007 | #729 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27,
Цитата:
Самому как то давно (и кажется тут в ветке уже спрашивали про это), нужна была функция для получения текста с таба (SysTabControl321), поискал немного, не нашёл и разочаровался ![]() Но недавно кое кому тоже это понадобилось, и я сразу вспомнил про библиотеку A3LLibrary - Но ради одной функции включать такую тяжёлую артиллерию, мне показалось излишним ![]() Собрав все нужные ресурсы с этой библиотеки, плюс немного с MSDN, плюс немного с головы (моей ![]() Вот функция с описаниями (на Английском, т.к на оф. форуме хочу предложить разработчикам для включения в стандартные библиотеки): ;=============================================================================== ; Function Name: _ControlTab() ; Description: Sends a command to a SysTab32 Control. ; Syntax: _ControlTab ( $hWnd, $sText, $sCommand [, $sParam1 [, $sParam2 [, $sParam3]]] ) ; ; Parameter(s): $hWnd = Window Handle/Title. ; $sText = Window Text. ; $sCommand = Command to send to the control (See "Return Value(s)"). ; $sParam1, $sParam2, $sParam3 = Additional parameters required by some commands. ; ; Requirement(s): None. ; ; Return Value(s): Depends on command as shown below. In case of an error (such as an invalid command or window/control), @error=1 ; If $sCommand Equel... ; "GetItemState" - State of the tab item returned. ; ($sParam1 defines what tab item (zero-based) will be used - 0 is the default). ; ; "GetItemText" - Text of the tab item returned. ; ($sParam1 defines what tab item (zero-based) will be used - 0 is the default). ; ; "GetItemImage" - Image Index of the tab item returned. ; ($sParam1 defines what tab item (zero-based) will be used - 0 is the default). ; ; "CurrentTab" - Returns the current Tab shown of a SysTabControl32. ; ; "TabRight" - Moves to the next tab to the right of a SysTabControl32. ; ; "TabLeft" - Moves to the next tab to the left of a SysTabControl32. ; ; "GetTabsCount" - Returns the number of total tab items of a SysTabControl32. ; ; "FindTab" - Search For tab item with specific text.. ; In this case used all three additional parameters: ; $sParam1 - defines what text to find. ; $sParam2 - defines from what tab item the search will start (zero-based). ; $sParam3 - defines search type... ; If $sParam3 = True Then will be performed a partial search of the string in the tab item text. ; ; Author(s): G.Sandler a.k.a CreatoR ; ; Example(s): ; $TabText = _ControlTab("Properties", "", "GetItemText", 1) ;Will return the text of second tab from the left side. ;=============================================================================== Func _ControlTab($hWnd, $sText, $sCommand, $sParam1="", $sParam2="", $sParam3="") Local Const $TCM_FIRST = 0x1300 Local $hTab = ControlGetHandle($hWnd, $sText, "SysTabControl321") Switch $sCommand Case "GetItemState", "GetItemText", "GetItemImage" Local Const $TagTCITEM = "int Mask;int State;int StateMask;ptr Text;int TextMax;int Image;int Param" Local Const $TCIF_ALLDATA = 0x0000001B Local Const $TCM_GETITEM = $TCM_FIRST + 5 Local $tBuffer = DllStructCreate("char Text[4096]") Local $pBuffer = DllStructGetPtr($tBuffer) Local $tItem = DllStructCreate($tagTCITEM) Local $pItem = DllStructGetPtr($tItem) DllStructSetData($tItem, "Mask", $TCIF_ALLDATA) DllStructSetData($tItem, "TextMax", 4096) DllStructSetData($tItem, "Text", $pBuffer) If $sParam1 = -1 Then $sParam1 = _ControlTab($hWnd, $sText, "CurrentTab") DllCall("user32.dll", "long", "SendMessage", "hwnd", $hTab, "int", $TCM_GETITEM, "int", $sParam1, "int", $pItem) If @error Then Return SetError(1, 0, "") If $sCommand = "GetItemState" Then Return DllStructGetData($tItem, "State") If $sCommand = "GetItemText" Then Return DllStructGetData($tBuffer, "Text") If $sCommand = "GetItemImage" Then Return DllStructGetData($tItem, "Image") Case "CurrentTab", "TabRight", "TabLeft" Local $iRet = ControlCommand($hWnd, $sText, "SysTabControl321", $sCommand, "") If @error Then Return SetError(1, 0, -1) Return $iRet - 1 Case "GetTabsCount" Local Const $TCM_GETITEMCOUNT = $TCM_FIRST + 4 Local $iRet = DllCall("user32.dll", "long", "SendMessage", "hwnd", $hTab, "int", $TCM_GETITEMCOUNT, "int", 0, "int", 0) If @error Then Return SetError(1, 0, -1) Return $iRet[0] Case "FindTab" If Not IsNumber($sParam2) Or $sParam2 < 0 Then $sParam2 = 0 Local $sTabText For $i = $sParam2 To _ControlTab($hWnd, $sText, "GetTabsCount") $sTabText = _ControlTab($hWnd, $sText, "GetItemText", $i) If $sParam3 = True And StringInStr($sTabText, $sParam1) Then Return $i If $sTabText = $sParam1 Then Return $i Next Return -1 Case Else Return SetError(1, 0, "") EndSwitch EndFunc $GUI = GUICreate("ControlTab Demo") GUICtrlCreateTab(0, 20) $Tab_1 = GUICtrlCreateTabItem("Tab 1") $Tab_2 = GUICtrlCreateTabItem("Tab 2") $Tab_3 = GUICtrlCreateTabItem("More Tab") GUISetState() For $i = 0 To _ControlTab($GUI, "", "GetTabsCount")-1 MsgBox(0, "", "Zero-Based tab number [" & $i & "]: " & @LF & _ControlTab($GUI, "", "GetItemText", $i)) _ControlTab($GUI, "", "TabRight") Next |
|
------- Отправлено: 23:38, 15-11-2007 | #730 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 7z архив пишет не удаётся открыть как архив. Можно ли его восстановить? | DreDo | Хочу все знать | 4 | 01-12-2009 18:54 | |
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. | Vadikan | AutoIt | 1543 | 18-01-2009 10:46 | |
[Архив - Часть 1.3] AutoIt скрипты | biork | AutoIt | 503 | 09-06-2007 11:27 | |
[Архив - Часть 1.2] AutoIt скрипты | Dirk Diggler | AutoIt | 505 | 02-12-2006 11:00 | |
[Архив - Часть 1.1] AutoIt скрипты | EgOrus | AutoIt | 335 | 04-02-2006 16:58 |
|