Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

Закрытая тема
Настройки темы
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

(*.*)


Сообщения: 36574
Благодарности: 6706


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Vadikan
Дата: 21-01-2009
Описание: архив
Внимание!


В связи с созданием отдельного форума по AutoIt, эта тема переводится в архивное состояние. Если у вас есть вопрос, создайте новую тему или поднимите существующую, если в ней обсуждается аналогичная проблема.

Пожалуйста, не создавайте тем с названием "Помогите!" или "Нужна помощь по AutoIt". Это и так понятно Заголовок темы должен быть осмысленным.



Сайт программы
Русская справка
Коллекция AutoIt скриптов от Sanja Alone
Коллекция AutoIt скриптов от MSFN (могут быть устаревшие).


Справочник по командам rundll32 (команды запуска диалоговых окон и не только...)

AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо).

Архивы старых тем по AutoIt или они же в 7z архиве (версии для печати) - 846 кб (настоятельно рекомендуется к прочтению/поиску)
(он же прикреплен в шапке)


Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров.
Цитата Vadikan:
В теме уже свыше 500 сообщений и поиск нужной информации в ней усложняется. Есть предложение собрать все решения (скрипты) и разместить их на Wiki по принципу "один скрипт - одна статья wiki", добавляя статьи в категорию Autoit. Речь, в принципе, идет об общих решениях, а не о скриптах для установки конкретной программы. Название статьи, очевидно, должно отражать назначение скрипта. Затем можно в шапке просто разместить ссылки на статьи Wiki.

-------
Канал Windows 11, etc | Чат @winsiders

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:02, 05-02-2006

 

Аватара для gregaz

Пользователь


Сообщения: 88
Благодарности: 19

Профиль | Отправить PM | Цитировать


Никак не могу различить один или два клика было в ListView

Функция $WM_NOTIFY ( если в ней задействованы реакции и на одинарный и на двойной клик) при двойном клике дает сигнал уже при первом клике

Как сделать чтобы при одинарном клике можно было запустить какой-то AI-скрипт на выполнение , а при двойном -на редактирование

Отправлено: 08:33, 18-03-2008 | #281



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


gregaz,
Цитата:
Как сделать чтобы при одинарном клике можно было запустить какой-то AI-скрипт на выполнение , а при двойном -на редактирование
Примерно так:

Код: Выделить весь код
#include <GuiConstants.au3>
#include <GuiListView.au3>
;

Global $iDouble_Click_Event = False
Global $iOne_Click_Event = False

$GUI = GUICreate("Test Script", 300, 200)

$hListView = GUICtrlCreateListView("Column", 10, 10, 280, 170)

For $i = 1 To 10
    GUICtrlCreateListViewItem("Item " & $i, $hListView)
Next

GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUISetState(@SW_SHOW, $GUI)

While 1
    $nMsg = GUIGetMsg()

    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch

    If $iOne_Click_Event Or $iDouble_Click_Event Then
        Local $sTempAu3File = @TempDir & "\Au3_Script_Tmp.au3"
        Local $sTmpScript_Str = 'MsgBox(64, "Hi!", "Hello world!")'
        Local $hFileOpen = FileOpen($sTempAu3File, 2)

        FileWrite($hFileOpen, $sTmpScript_Str)
        FileClose($hFileOpen)

        If $iOne_Click_Event Then
            $iOne_Click_Event = False

            Sleep(200)

            If Not $iDouble_Click_Event Then Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & $sTempAu3File & '"')
        Else
            $iDouble_Click_Event = False
            ShellExecute($sTempAu3File, '', '', 'Edit')
        EndIf
    EndIf
WEnd

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView = $hListView
    If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")

    Switch $hWndFrom
        Case $hWndListView
            Switch $iCode
                Case $NM_CLICK
                    $iOne_Click_Event = True
                Case $NM_DBLCLK
                    $iDouble_Click_Event = True
            EndSwitch
    EndSwitch

    Return $GUI_RUNDEFMSG
EndFunc
Пауза в 200 ms' определяет задержку между первым и вторым кликом.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 09:00, 18-03-2008 | #282


Пользователь


Сообщения: 143
Благодарности: 24

Профиль | Отправить PM | Цитировать


Creat0R,

Цитата:


$result = StringRegExp($ReadFile, '(?i)(<TD bgcolor=A5A5A5 align=center><A HREF="/main.pl?edit=.*">Обмундирование</A></TD>)', 3)
Не работает почему то, выдает что Неверный массив. Совпадения отсутствуют.

Отправлено: 09:52, 18-03-2008 | #283


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


HORRIBLE,
Цитата:
Не работает почему то
Это зависит от строки... попробуй так:

Код: Выделить весь код
$result = StringRegExp($ReadFile, '(?i)(?s)(<TD bgcolor=A5A5A5 align=center><A HREF="/main\.pl\?edit=.*">Обмундирование</A></TD>)', 3)

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 10:01, 18-03-2008 | #284


Аватара для Maza Faka

Ветеран


Сообщения: 604
Благодарности: 133

Профиль | Отправить PM | Цитировать


Цитата gregaz:
Никак не могу различить один или два клика было в ListView »
Пробуй:
Код: Выделить весь код
#include <GuiConstants.au3>
#include <GuiListView.au3>

Global $DoubleClickSpeed = RegRead("HKEY_CURRENT_USER\Control Panel\Mouse", "DoubleClickSpeed")
If $DoubleClickSpeed = "" Then $DoubleClickSpeed = 500

Global $Click = False, $DoubleClick = False

$GUI = GUICreate("Test Script", 300, 200)

$hListView = GUICtrlCreateListView("Column", 10, 10, 280, 170)

For $i = 1 To 10
    GUICtrlCreateListViewItem("Item " & $i, $hListView)
Next

GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

GUISetState(@SW_SHOW, $GUI)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch

    If $Click Then
        $Click = False
        $Timer = TimerInit()
        Do
        Until TimerDiff($Timer) >= $DoubleClickSpeed

        If Not $DoubleClick Then
            ConsoleWrite("One click" & @LF)
        Else
            ConsoleWrite("Double click" & @LF)
            $DoubleClick = False
        EndIf
    EndIf
WEnd

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $tNMHDR, $hWndFrom, $iIDFrom, $iCode

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")

    Switch $iIDFrom
        Case $hListView
            Switch $iCode
                Case $NM_CLICK
                    $Click = True
                Case $NM_DBLCLK
                    $DoubleClick = True
            EndSwitch
    EndSwitch

    Return $GUI_RUNDEFMSG
EndFunc

-------
Сообщение помогло? Не забудьте нажать на Полезное сообщение


Отправлено: 10:50, 18-03-2008 | #285


Аватара для Angelus

Пользователь


Сообщения: 52
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Creat0R:
NORIO,
Цитата:Как зажать спейс на несколько милисекунд?
Не думаю что можно зажать беспрерывно, но можно нажимать на него довольно интенсивно: »
А SendKeyDownDelay (Option) не подходит????

Отправлено: 11:47, 18-03-2008 | #286


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Angelus,
Цитата:
А SendKeyDownDelay (Option) не подходит?
Точно, я про это забыл ... наверное потому что подобными функциями не пользуюсь

Maza Faka,
Я забыл что задержку между кликами можно брать с реестра .


Что-то я всё начинаю забывать...

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Последний раз редактировалось Creat0R, 18-03-2008 в 16:08. Причина: Забыл


Отправлено: 12:41, 18-03-2008 | #287


Аватара для DNK_Inc

Пользователь


Сообщения: 63
Благодарности: 1

Профиль | Отправить PM | Цитировать


И снова я обращаюсь за помощью
1. Есть сервер обновлений Windows Update, с которого происходит обновление клиентских машин. Все обновления ставятся при подготовке нового ПК.
Задача: из скрипта задать старт Windows Update, который при полной загрузке обновлений висит в трее в виде жёлтого щита и ожидает события onClick. Была, конечно, идея: сканировать трей на наличие жёлтого цвета, определять координаты найденного цвета и кликать туда. Но как это реализовать в рамках AutoIt - не знаю.
2. При автоустановке Windows ХР с интегрированными драйверами возникают ситуации, когда не на всё оборудование находятся драйвера.
Задача: составить список оборудования, которое в диспетчере задач отображается желтыми вопросами. И снова не знаю, как реализовать это скриптом.
Очень прошу, помогите найти решение. Может кто сталкивался с подобными вопросами...

-------
Пока работает - не тронь!!!


Отправлено: 13:00, 18-03-2008 | #288


Аватара для Maza Faka

Ветеран


Сообщения: 604
Благодарности: 133

Профиль | Отправить PM | Цитировать


Цитата DNK_Inc:
Задача: из скрипта задать старт Windows Update, который при полной загрузке обновлений висит в трее в виде жёлтого щита и ожидает события onClick. Была, конечно, идея: сканировать трей на наличие жёлтого цвета, определять координаты найденного цвета и кликать туда. »
Когда-то я написал такую функцию, для кликанья по значкам в трее:
Код: Выделить весь код
#NoTrayIcon
#Include <GuiToolBar.au3>

_SysTray_ClickItem("Громкость", "left", 2)

;====================================================================================
;
;Function Name:    _SysTray_ClickItem()
;Description:      Click on item in Windows system tray by any substring in the title
;Parameters:       $iTitle - The title of the item in Windows system tray (you can see the title of the item when mouse cursor hovered on item).
;                  $iButton - [optional] The button to click, "left" or "right". Default is the left button.
;                  $iClick - [optional] The number of times to click the mouse. Default is 2
;
;Return Value(s):  None
;Requirement(s):   AutoIt 3.2.10.0
;
;
;Autor(s):        R.Gilman (a.k.a rasim); Siao (Thanks for idea :))
;
;====================================================================================
Func _SysTray_ClickItem($iTitle, $iButton = "left", $iClick = 2)
    Local $hToolbar, $iButCount, $aRect, $i

    If Not $iTitle Then
        MsgBox(16, "Error", "Please indicate title")
        Return 0
    EndIf

    $hToolbar = ControlGetHandle('[Class:Shell_TrayWnd]', '', '[Class:ToolbarWindow32;Instance:1]')
    If @error Then
        MsgBox(16, "Error", "System tray not found")
        Return 0
    EndIf

    $iButCount = _GUICtrlToolbar_ButtonCount($hToolbar)
    If $iButCount = 0 Then
        MsgBox(16, "Error", "Not found item in system tray")
        Return
    EndIf

    For $i = 0 To $iButCount - 1
        $cID = _GUICtrlToolbar_IndexToCommand($hToolBar, $i)
        If StringInStr(_GUICtrlToolbar_GetButtonText($hToolBar, $i), $iTitle) Then
            $aRect = _GUICtrlToolbar_GetButtonRect($hToolBar, $i)
            ControlClick("[Class:Shell_TrayWnd]", "", "ToolbarWindow321", $iButton, $iClick, $aRect[0], 5)
            $aRect = 0
            Return 1
        EndIf
    Next
    MsgBox(48, "Fail", "Required item not found")
EndFunc

-------
Сообщение помогло? Не забудьте нажать на Полезное сообщение

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:39, 18-03-2008 | #289


Аватара для gregaz

Пользователь


Сообщения: 88
Благодарности: 19

Профиль | Отправить PM | Цитировать


Creat0R , Maza Faka , спасибо .
Давно не мог решить проблему детектирования кликов . Интересно решение с использованием реестра.

Отправлено: 16:01, 18-03-2008 | #290



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[архив - Часть 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




 
Переход