|
Компьютерный форум 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 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Спросил я на оф. форуме про такую фичу как пристыковка окна GUI к краям экрана, дали мне почти полноценное решение...
Осталось решить две значительные проблемы перед тем как можно будет использовать данную фичу: 1) В момент смещения окна к краям (в процессе пристыковки) курсор мышки как бы остаётся позади и смещается, что в конце (если достаточно поиграться ![]() ![]() 2) Панель задачь не всегда находится внизу, и не всегда имеет один размер, нужно как то получать размеры рабочей области, т.е только те границы между панелью задач и краями экрана - и соответственно пристыковывать окно. Вот что на данный момент имеется: #include <GUIConstants.au3> Const $Range = 20 Const $WM_MOVING = 0x0216 Const $WM_ENTERSIZEMOVE = 0x0231 Global $X_START, $Y_START $Gui = GUICreate("Attach Window GUI to screen edge", 350, 200) GUISetState() GUICtrlCreateLabel("Притащите окно к краям экрана ;)", 0, 80, 350, 30, $ES_CENTER) GUICtrlSetFont(-1, 14, 800) GUIRegisterMsg($WM_ENTERSIZEMOVE, "WM_ENTERSIZEMOVE") GUIRegisterMsg($WM_MOVING, "WM_MOVING") While GUIGetMsg() <> $GUI_EVENT_CLOSE WEnd Func WM_ENTERSIZEMOVE() Local $aMPos = MouseGetPos() $X_START = $aMPos[0] $Y_START = $aMPos[1] EndFunc Func WM_MOVING($hWnd, $Msg, $wParam, $lParam) Local $TaskBarPos = WinGetPos("[CLASS:Shell_TrayWnd]") Local $hWndPos = WinGetPos($hWnd) Local $aMPos = MouseGetPos() Local $Rect = DllStructCreate("long left; long top; long right; long bottom", $lParam) $Left = DllStructGetData($Rect, "left") $Top = DllStructGetData($Rect, "top") $Right = DllStructGetData($Rect, "right") $Bottom = DllStructGetData($Rect, "bottom") If $Left <= $Range And $aMPos[0] < $X_START Then DllStructSetData($Rect, "left", 0) DllStructSetData($Rect, "right", $Right-$Left) EndIf If $Top <= $Range And $aMPos[1] < $Y_START Then DllStructSetData($Rect, "top", 0) DllStructSetData($Rect, "bottom", $Bottom-$Top) EndIf If $Right >= (@DesktopWidth - $Range) And $aMPos[0] > $X_START Then DllStructSetData($Rect, "right", @DesktopWidth) DllStructSetData($Rect, "left", (@DesktopWidth-$Right)+$Left) EndIf If $Bottom >= ($TaskBarPos[1] - $Range) And $aMPos[1] > $Y_START Then DllStructSetData($Rect, "bottom", $TaskBarPos[1]) DllStructSetData($Rect, "top", ($TaskBarPos[1]-$Bottom)+$Top) EndIf WM_ENTERSIZEMOVE() EndFunc |
------- Отправлено: 21:05, 07-09-2007 | #431 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 604
|
Профиль | Отправить PM | Цитировать Как сделать, что бы элемент "Нет", менял позицию при наведении на него курсора мыши?
#include <GUIConstants.au3> Opt("MouseCoordMode", 2) Dim $x, $y GUICreate("Test", 300, 200) $yes = GUICtrlCreateButton("Да", 20, 50, 50) $no = GUICtrlCreateButton("Нет", 200, 50, 50) $label = GUICtrlCreateLabel("Довольны ли вы своей зарплатой?", 50, 10, 200, 20) GUISetState() While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $yes MsgBox(64, "Да", "Мы так и думали!") ExitLoop Case $msg = $no GUICtrlSetPos($no, Random(250), Random(170)) EndSelect WEnd |
Отправлено: 12:15, 10-09-2007 | #432 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Maza Faka,
Цитата:
#include <GUIConstants.au3> Opt("MouseCoordMode", 2) Dim $x, $y, $ChangedPos = False $Gui = GUICreate("Test", 300, 200) $yes = GUICtrlCreateButton("Да", 20, 50, 50) $no = GUICtrlCreateButton("Нет", 200, 50, 50) $label = GUICtrlCreateLabel("Довольны ли вы своей зарплатой?", 50, 10, 200, 20) GUISetState() While 1 $msg = GUIGetMsg() $CurInfo = GUIGetCursorInfo($Gui) If $CurInfo[4] = $no And Not $ChangedPos Then GUICtrlSetPos($no, 20, 50) GUICtrlSetPos($yes, 200, 50) $ChangedPos = True ElseIf $CurInfo[4] = $no And $ChangedPos Then GUICtrlSetPos($no, 200, 50) GUICtrlSetPos($yes, 20, 50) $ChangedPos = False EndIf Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $yes MsgBox(64, "Да", "Мы так и думали!") ExitLoop Case $msg = $no GUICtrlSetPos($no, Random(250), Random(170)) EndSelect WEnd |
|
------- Отправлено: 16:51, 10-09-2007 | #433 |
Ветеран Сообщения: 604
|
Профиль | Отправить PM | Цитировать Creat0R
Спасибо, сделал так: #include <GUIConstants.au3> Dim $x, $y, $ChangedPos = False $Gui = GUICreate("Test", 300, 200) $yes = GUICtrlCreateButton("Да", 20, 50, 50) $no = GUICtrlCreateButton("Нет", 200, 50, 50) $label = GUICtrlCreateLabel("Довольны ли вы своей зарплатой?", 50, 10, 200, 20) GUISetState() While 1 $msg = GUIGetMsg() $CurInfo = GUIGetCursorInfo($Gui) If $CurInfo[4] = $no Then GUICtrlSetPos($no, Random(240), Random(180)) Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $yes MsgBox(64, "Да", "Мы так и думали!") ExitLoop EndSelect WEnd |
------- Отправлено: 09:54, 11-09-2007 | #434 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Maza Faka,
Я так понял нужно чтобы при навидении на кнопку “Нет” кнопка постоянно "пряталась"? ![]() Тогда желательно найти уникальные координаты, т.е убедиться что текущие найденные по Random не являются координатами кнопки "Да" (что не исключено ![]() #include <GUIConstants.au3> Dim $x, $y, $ChangedPos = False $Gui = GUICreate("Test", 300, 200) $yes = GUICtrlCreateButton("Да", 20, 50, 50, 25) $no = GUICtrlCreateButton("Нет", 200, 50, 50, 25) $label = GUICtrlCreateLabel("Довольны ли вы своей зарплатой?", 50, 10, 200, 20) GUISetState() While 1 $msg = GUIGetMsg() $CurInfo = GUIGetCursorInfo($Gui) If $CurInfo[4] = $no Then $CurrentCoords = ControlGetPos($Gui, "", $no) $Random_Left_Coords = Random(20, 250, 1) $Random_Top_Coords = Random(30, 160, 1) While $Random_Left_Coords > 20 And $Random_Left_Coords < 70 $Random_Left_Coords = Random(20, 250, 1) WEnd While $Random_Top_Coords > 30 And $Random_Top_Coords < 75 $Random_Top_Coords = Random(30, 160, 1) WEnd GUICtrlSetPos($no, $Random_Left_Coords, $Random_Top_Coords) EndIf Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $yes MsgBox(64, "Да", "Мы так и думали!") ExitLoop EndSelect WEnd Я подобными приколами тоже по началу баловался, правда тема была другая - "Вы желаете форматировать диск C:\ ?" ![]() |
------- Отправлено: 10:32, 11-09-2007 | #435 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Вышла новая версия AutoIt v3.2.8.1 (10th September, 2007)
Список изменении по сравнению с 3.2.6.0: Цитата http://www.autoitscript.com/autoit3/docs/history.htm:
3 бага из этого списка я зарепортил: 1. GUISetState(@SW_DISABLE) not disabling keyboard input. 2. ListviewItem not created after other child Window creation/deletion. 3. Detection of invalid CONTINUELOOP statement. ![]() |
|
------- Отправлено: 01:29, 12-09-2007 | #436 |
Пользователь Сообщения: 141
|
Профиль | Отправить PM | Цитировать а как скопировать файл с помошью автоит... желательно зашить его в файл.ехе подскажите плис)
|
Отправлено: 09:27, 12-09-2007 | #437 |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать mikola1983,
Цитата:
Например: Первый параметр - путь к файлу (путь не должен содержать переменных или макросов) Второй параметр - путь для извлечения И наконец третий параметр определяет, будет ли перезаписываться файл при извлечении если файл с таким же именем в этом пути уже существует. Добавлено: Совсем не факт что файл будет извлечён сразу при запуске скомпилированного скрипта. Эту фунцию можно закрыть условием или событием, тогда файл будет извлечён только если событие произошло (В моём примере при нажатии кнопки "Да") If MsgBox(4+32,"Извлечение файла","Хотите извлечь файл?") = 6 Then $install = FileInstall("C:\image.jpg", @ScriptDir & "\image.jpg") If $install Then MsgBox(0,"Извлечение файла","Файл " & @ScriptDir & "\image.jpg успешно извлечён.") Else MsgBox(16,"Извлечение файла","Ошибка извлечения!") EndIf EndIf |
|
Последний раз редактировалось Diamond, 12-09-2007 в 10:52. Причина: Добавление Отправлено: 10:08, 12-09-2007 | #438 |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать Функция Get_KeyDown() прекрасно реагирует на нажатие кнопок на клавиатуре, но стоит только прописать кнопку или другой элемент, и событие перестаёт обрабатываться.
![]() Кто нибудь может объяснить подобное поведение? #include <GUIConstants.au3> $HWnd = GUICreate("KEYDOWN_TEST",400,300) ;~ $BUTTON = GUICtrlCreateButton("Button",10,10,50,20) Global Const $WM_KEYDOWN = 0x0100 GUIRegisterMsg($WM_KEYDOWN,"Get_KeyDown") GUISetState() While 1 $msg = GUIGetMsg() Switch $msg Case -3 Exit EndSwitch WEnd Func Get_KeyDown($HWnd,$Command,$wParam,$lParam) MsgBox(262144,"Код нажатой кнопки:",BitAND($wParam,0xFF)) EndFunc |
Отправлено: 10:56, 12-09-2007 | #439 |
Новый участник Сообщения: 29
|
Профиль | Отправить PM | Цитировать Ищу репетитора по AutoIt на пару - тройку уроков в Москве.
предложения в ПМ |
Отправлено: 17:48, 12-09-2007 | #440 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 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 |
|