![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. |
|
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
|
(*.*) Сообщения: 36574 |
Внимание! В связи с созданием отдельного форума по AutoIt, эта тема переводится в архивное состояние. Если у вас есть вопрос, создайте новую тему или поднимите существующую, если в ней обсуждается аналогичная проблема. Пожалуйста, не создавайте тем с названием "Помогите!" или "Нужна помощь по AutoIt". Это и так понятно ![]() ![]() Сайт программы Русская справка Коллекция AutoIt скриптов от Sanja Alone Коллекция AutoIt скриптов от MSFN (могут быть устаревшие). Справочник по командам rundll32 (команды запуска диалоговых окон и не только...) AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо). Архивы старых тем по AutoIt или они же в 7z архиве (версии для печати) - 846 кб (настоятельно рекомендуется к прочтению/поиску) (он же прикреплен в шапке) Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров. Цитата Vadikan:
|
||
------- Отправлено: 00:02, 05-02-2006 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
![]() Цитата:
#include <WinAPI.au3> #include <GUIConstants.au3> Global Const $CS_VREDRAW = 1 Global Const $CS_HREDRAW = 2 Global Const $IDI_APPLICATION = 32512 Global Const $WHITE_BRUSH = 0 Global Const $CW_USEDEFAULT = 0x80000000 Global $hMsgHelloWndProc ; переменная для хранения хэндла CallBack-функции класса ; Тестовый ГУИ $hWndMain = GUICreate("My GUI") GUISetState (@SW_SHOW) ; Создаем и регистрируем класс $iRet = MsgHelloReg("HelloMsg", $hMsgHelloWndProc) ; Создаем и активизируем экземпляр класса $hWndHello = _WinAPI_CreateWindowEx(0, "HelloMsg", "Hello Application", $WS_OVERLAPPEDWINDOW, $CW_USEDEFAULT, 0, $CW_USEDEFAULT, 0, $hWndMain, 0, _WinAPI_GetModuleHandle(""), 0) $iRet = _WinAPI_ShowWindow($hWndHello) While 1 $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Then ExitLoop Wend ; Разрегистрируем класс перед выходом $iRet = MsgHelloUnReg("HelloMsg", $hMsgHelloWndProc) ; UDF для создания и регистрации нашего класса Func MsgHelloReg($sClassName, ByRef $hWndProc) ; Выбираем иконки и курсоры (тут способов много) Local $aIcon = DllCall("user32.dll", "hwnd", "LoadIcon", "hwnd", 0, "int", $IDI_APPLICATION) Local $aCursor = DllCall("user32.dll", "hwnd", "LoadCursor", "hwnd", 0, "int", $IDC_ARROW) ; Регистрируем оконную процедуру, как CallBack-функцию $hWndProc = DLLCallbackRegister ("MsgHelloWndProc", "int", "hwnd;int;wparam;lparam") ;Создаем и инициализируем структуры класса Local $tWndClassEx = DllStructCreate("uint cbSize;uint style;ptr lpfnWndProc;int cbClsExtra;int cbWndExtra;hwnd hInstance;hwnd hIcon;hwnd hCursor;hwnd hbrBackground;ptr lpszMenuName;ptr lpszClassName;hwnd hIconSm") Local $tClassName = DllStructCreate("char["& StringLen($sClassName)+1 &"]") DllStructSetData($tClassName, 1, $sClassName) DllStructSetData($tWndClassEx, "cbSize", DllStructGetSize($tWndClassEx) ) DllStructSetData($tWndClassEx, "style", BitOR($CS_VREDRAW, $CS_HREDRAW) ) DllStructSetData($tWndClassEx, "lpfnWndProc", DllCallbackGetPtr($hWndProc)) DllStructSetData($tWndClassEx, "hInstance", _WinAPI_GetModuleHandle("")) DllStructSetData($tWndClassEx, "hIcon", $aIcon[0]) DllStructSetData($tWndClassEx, "hCursor", $aCursor[0]) DllStructSetData($tWndClassEx, "hbrBackground", _WinAPI_GetStockObject($WHITE_BRUSH)) DllStructSetData($tWndClassEx, "lpszClassName", DllStructGetPtr($tClassName)) DllStructSetData($tWndClassEx, "hIconSm", $aIcon[0]) ; Собственно процедура регистрации Local $aRet = DllCall("user32.dll", "dword", "RegisterClassExA", "ptr", DllStructGetPtr($tWndClassEx) ) Return $aRet[0] EndFunc ; ==> MsgHelloReg ; UDF для разрегистрации класса (не должно быть экземпляров класса) Func MsgHelloUnReg($sClassName, ByRef $hWndProc) DllCallbackFree($hWndProc) Local $aRet = DllCall("user32.dll", "int", "UnregisterClassA", "str", $sClassName, "hwnd", _WinAPI_GetModuleHandle("")) Return $aRet[0] EndFunc ; ==> MsgHelloUnReg ; Код оконной процедуры нашего оконного класса Func MsgHelloWndProc($hWnd, $uMsg, $wParam, $lParam) Local $aRet, $iRet, $hDC, $tRect, $sDrawText = "Hello, World!" Switch $uMsg Case $WM_PAINT $hDC = _WinAPI_GetDC($hWnd) ; получаем контекст устройства $tRect = _WinAPI_GetClientRect($hWnd) ; получаем координаты клиентской области $aRet = DllCall("user32.dll", "int", "ValidateRect", "hwnd", $hWnd, "ptr", DllStructGetPtr($tRect) ) ; делаем область "валидной" ; здесь код рисования окна $aRet = DllCall("user32.dll", "int", "FillRect", "hwnd", $hDC, "ptr", DllStructGetPtr($tRect), "hwnd", _WinAPI_GetStockObject($WHITE_BRUSH) ) $iRet = _WinAPI_DrawText($hDC, $sDrawText, $tRect, BitOR($DT_SINGLELINE, $DT_CENTER, $DT_VCENTER)) ; освобождаем контекст устройства _WinAPI_ReleaseDC($hWnd, $hDC) Case $WM_CLOSE _WinAPI_DestroyWindow($hWnd) Case $WM_DESTROY ; $aRet = DllCall("user32.dll", "none", "PostQuitMessage", "int", 0 ) Case Else Return _WinAPI_DefWindowProc($hWnd, $uMsg, $wParam, $lParam) ; передаем "чужие" сообщение дальше на обработку EndSwitch Return 0 EndFunc ; ==> MsgHelloWndProc |
||
Отправлено: 06:54, 03-04-2008 | #371 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать N0rB,
Цитата:
![]() NETSH работает с OEM-кодировкой, а AutoIT с ANSI... поэтому нельзя передавать русский текст из AutoIT "как есть" сразу в NETSH. Решений проблемы много, я к примеру использую UDF, предварительно преобразующий текст команды в OEM-кодировку: $strANSI= "Подключение по локальной сети" $strOEM = _StringToOEM($strANSI) MsgBox(0,'',"Текст в ANSI: "& $strANSI &@CRLF& _ "Текст в OEM : "& $strOEM ) Func _StringToOEM($strText) Local $oem = DllStructCreate("char["& StringLen($strText)+1 &"]") Local $ret = DllCall("User32.dll", "int", "CharToOem", "str", $strText, "ptr", DllStructGetPtr($oem)) If Not(IsArray($ret)) Then Return SetError(1, 0, '') ; ошибка DLL If $ret[0]=0 Then Return SetError(2, $ret[0], '') ; ошибка функции Return DllStructGetData($oem, 1) EndFunc ;==> _StringToOEM |
|
Отправлено: 07:22, 03-04-2008 | #372 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27,
Низкий поклон! ![]() Буду разбирать что к чему, я просто обязан понять как оно работает, ведь столько времени было потрачено на попытки реализовать это самому... а за коменты отдельное спасибо ![]() |
------- Отправлено: 07:27, 03-04-2008 | #373 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Здравствуйте.
Цитата Creat0R:
Цитата Creat0R:
|
||
Отправлено: 08:44, 03-04-2008 | #374 |
Новый участник Сообщения: 1
|
Профиль | Отправить PM | Цитировать Пока только читал, но вот появились вопросы и хочу их задать: (AutoIt 3.2.11.5)
1. Функция _GUICtrlStatusBar_SetBkColor($hWnd, $iColor) не устанавливает цвет у фона строки статуса, это только у меня так или ... 2. Возможно ли сделать так чтобы вкладки TabControl controlа создавались вертикально (ну это можно с помощью $TCS_VERTICAL) но надписи были горизонтальными ??? 3. Как перехватить нажатие на кнопку в другом приложении ? |
Отправлено: 09:46, 03-04-2008 | #375 |
Пользователь Сообщения: 147
|
Профиль | Отправить PM | Цитировать Мне кто скажет?
![]() не могу логинится на http://www.nigma.ru и ещё на этом сайте надо что бы проверялось что написанно в поле email , если там qwe@mail.ru то продолжать работу. елси нет то закрывать окно как запустить ссылку www.ya.ru/staemme.php? переменая &screen=main переменая =build переменая |
Отправлено: 10:16, 03-04-2008 | #376 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R,
Цитата:
![]() P.S. пару линков кину в PM, но сам я по старинке предпочитаю бумажный вариант ![]() |
|
Отправлено: 10:52, 03-04-2008 | #377 |
Ветеран Сообщения: 604
|
Профиль | Отправить PM | Цитировать amel27
Если найдётся время посмотри пожалуйста где ошибка. Пытаюсь реализовать вот такой хинт: ![]() #include <GuiConstants.au3> Global Const $HH_DISPLAY_TEXT_POPUP = 0xE Global Const $HH_CLOSE_ALL = 0x12 Global $DllRet $hGUI = GUICreate("Test GUI", 300, 200, -1, -1, BitOR($WS_CAPTION, $WS_POPUP, $WS_SYSMENU), $WS_EX_CONTEXTHELP) $hInput1 = GUICtrlCreateInput("", 50, 50, 200, 20) $hInput2 = GUICtrlCreateInput("Input text here", 50, 100, 200, 20) $HelpButton = GUICtrlCreateButton("Help", 20, 160, 60, 25) $HH_POPUP = DllStructCreate("int Size;hwnd Dll;int String;char Text[256];ptr Top;int Foreground;int Background;int Margins;str Font") DllStructSetData($HH_POPUP, "Size", DllStructGetSize($HH_POPUP)) DllStructSetData($HH_POPUP, "String", 0) DllStructSetData($HH_POPUP, "Text", "Help Popup") DllStructSetData($HH_POPUP, "Top", 200) DllStructSetData($HH_POPUP, "Foreground", -1) DllStructSetData($HH_POPUP, "Background", -1) DllStructSetData($HH_POPUP, "Margins", -1) GUISetState() While 1 Switch GUIGetMsg() Case -3 ExitLoop Case $HelpButton $DllRet = DllCall("HHCtrl.ocx", "hwnd", "HtmlHelp", "hwnd", $hGUI, "str", 0, _ "int", $HH_DISPLAY_TEXT_POPUP, "ptr", DllStructGetPtr($HH_POPUP)) $DllRet = $DllRet[0] ConsoleWrite($DllRet & @LF) EndSwitch WEnd DllCall("HHctrl.ocx", "hwnd", "HtmlHelp", "hwnd", $DllRet, "str", "", "int", $HH_CLOSE_ALL, "int", 0) |
Отправлено: 10:56, 03-04-2008 | #378 |
Пользователь Сообщения: 147
|
Профиль | Отправить PM | Цитировать и ещё как с каждым циклом увеличивать переменую на 10 ?
|
Отправлено: 11:00, 03-04-2008 | #379 |
Ветеран Сообщения: 604
|
Профиль | Отправить PM | Цитировать amel27
Нашёл неплохой пример на PowerBasic-e, но реализовать этот пример на AutoIt-е не получается ![]() #include <GuiConstants.au3> #include <WinAPI.au3> Global Const $HH_DISPLAY_TEXT_POPUP = 0xE Global Const $HH_CLOSE_ALL = 0x12 Global $DllRet $hGUI = GUICreate("Test GUI", 300, 200, -1, -1, BitOR($WS_CAPTION, $WS_POPUP, $WS_SYSMENU), $WS_EX_CONTEXTHELP) $hInput1 = GUICtrlCreateInput("", 50, 50, 200, 20) $hInput2 = GUICtrlCreateInput("Input text here", 50, 100, 200, 20) $HelpButton = GUICtrlCreateButton("Help", 20, 160, 60, 25) $HH_POPUP = DllStructCreate("int Size;hwnd Dll;int String;char Text[128];ptr Coord[2];int Foreground;int Background;int Margins;str Font") $aPos = MouseGetPos() $tpoint = DllStructCreate("int X;int Y") DllStructSetData($tpoint, "X", $aPos[0]) DllStructSetData($tpoint, "Y", $aPos[1]) DllStructSetData($HH_POPUP, "Size", DllStructGetSize($HH_POPUP)) DllStructSetData($HH_POPUP, "hwnd", _WinAPI_GetWindowLong($hGUI, $GWL_HINSTANCE)) DllStructSetData($HH_POPUP, "String", 0) DllStructSetData($HH_POPUP, "Text", "Help Popup") DllStructSetData($HH_POPUP, "Coord", DllStructGetPtr($tpoint, 1), 1) DllStructSetData($HH_POPUP, "Coord", DllStructGetPtr($tpoint, 2), 2) DllStructSetData($HH_POPUP, "Foreground", 0) DllStructSetData($HH_POPUP, "Background", 0xFF0000) DllStructSetData($HH_POPUP, "Margins", -1) GUISetState() While 1 Switch GUIGetMsg() Case -3 ExitLoop Case $HelpButton $DllRet = DllCall("HHCtrl.ocx", "hwnd", "HtmlHelp", "hwnd", $hGUI, "str", 0, _ "int", $HH_DISPLAY_TEXT_POPUP, "dword*", DllStructGetPtr($HH_POPUP)) $DllRet = $DllRet[0] ConsoleWrite($DllRet & @LF) EndSwitch WEnd DllCall("HHctrl.ocx", "hwnd", "HtmlHelp", "hwnd", $DllRet, "str", "", "int", $HH_CLOSE_ALL, "int", 0) |
Отправлено: 11:59, 03-04-2008 | #380 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[архив - Часть 2] AutoIt скрипты | Vadikan | AutoIt | 985 | 21-01-2008 09:58 | |
Вопрос - [Архив] Антивирусные программы - ОБЩИЕ ВОПРОСЫ | FOX RED | Защита компьютерных систем | 67 | 21-11-2007 15:05 | |
[Архив - Часть 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 |
|