Что нового

увеличение функционала методом добавления строк из auto-hot-key-скрипта

Alexey

Новичок
Сообщения
171
Репутация
0
есть auto-hot-key-скрипт:
Код:
#NoTrayIcon
CoordMode, Mouse, Screen
SetDefaultMouseSpeed, 0
Click 352, 197, 2

как правильно его добавить в этот auto-it-скрипт?
Код:
#include <GuiListView.au3>
#include <GuiButton.au3>
#include <Misc.au3>

Global $hWnd, $hLVCntrl, $hButtOK
Global $sINIFile = @ScriptDir & '\uTFilter.ini'
Global $sTitle = '[CLASS:#32770;REGEXPTITLE:(Добав([А-яЁё]|\h)+?торр?ент)|(Add New Torrent)]'
Global $sLVCntrl = '[CLASS:SysListView32; INSTANCE:1]'
Global $sButtOK = '[CLASS:Button; ID:20]'
Global $Process = 'utorrent.exe'

Global $vINIParam = IniReadSection($sINIFile, 'Filter')
If @error Then Exit MsgBox(16, @ScriptName, 'Ошибка чтения "uTFilter.ini"!')
If $vINIParam[3][1] Then
    HotKeySet($vINIParam[3][1], '_CBStateSwitch')
    $vINIParam[3][1] = True
EndIf

While ProcessExists($Process)
    $hWnd = WinActivate($sTitle)
    If $hWnd Then
        $hTimer = TimerInit()
        If $vINIParam[4][1] Then WinSetTrans($hWnd, '', $vINIParam[4][1])
        $hLVCntrl = ControlGetHandle($hWnd, '', $sLVCntrl)
        $iCount = ControlListView($hWnd, '', $hLVCntrl, 'GetItemCount') - 1
        Dim $aLVItems[$iCount + 1]
        _GUICtrlListView_BeginUpdate($hLVCntrl)
        If $vINIParam[2][1] == 0 Then _GUICtrlListView_SetItemChecked($hLVCntrl, -1, False)
        For $i = $iCount To 0 Step -1
            $sText = ControlListView($hWnd, '', $hLVCntrl, 'GetText', $i, 0)
            If StringRegExp($sText, '(?i)\.(' & $vINIParam[1][1] & ')$') Then
                $aLVItems[$i] = ''
                _GUICtrlListView_DeleteItem($hLVCntrl, $i)
            Else
                $aLVItems[$i] = $sText
            EndIf
        Next
        _GUICtrlListView_EndUpdate($hLVCntrl)
        $hButtOK = ControlGetHandle($hWnd, '', $sButtOK)
        If Not _MyButton() Then ContinueLoop
        For $i = 0 To $iCount
            If $aLVItems[$i] And Not _GUICtrlListView_GetItemChecked($hLVCntrl, _GUICtrlListView_FindText($hLVCntrl, $aLVItems[$i])) Then $aLVItems[$i] = ''
        Next
        _GUICtrlListView_BeginUpdate($hLVCntrl)
        _GUICtrlListView_DeleteAllItems($hLVCntrl)
        For $i = 0 To $iCount
            _GUICtrlListView_AddItem($hLVCntrl, $aLVItems[$i])
            If $aLVItems[$i] Then _GUICtrlListView_SetItemChecked($hLVCntrl, $i)
        Next
        ControlFocus($hWnd, '', $hButtOK)
        ControlClick($hWnd, '', $hButtOK)
        If Not WinWaitClose($hWnd, '', 3) Then WinClose($hWnd)
    Else
        Sleep(200)
    EndIf
WEnd

Func _MyButton()
    Local $aiPos, $sControl, $iPosPrevX, $iPosPrevY, $hButton, $aWndList
    $aiPos = ControlGetPos($hWnd, '', $hButtOK)
    $sControl = ControlGetFocus($hWnd)
    If @error Then Return 0
    $iPosPrevX = $aiPos[0]
    $iPosPrevY = $aiPos[1]
    $hButton = _GUICtrlButton_Create($hWnd, 'OK', $aiPos[0], $aiPos[1], $aiPos[2], $aiPos[3])
    ControlHide($hWnd, '', $hButtOK)
    ControlDisable($hWnd, '', $hButtOK)
    ControlFocus($hWnd, '', $sControl)
    While Sleep(10)
        If Not WinExists($hWnd) Then Return 0
        $aWndList = WinList($sTitle)
        If $aWndList[0][0] > 1 Then
            WinClose($aWndList[1][1])
            WinActivate($hWnd)
        EndIf
        If _GUICtrlButton_GetState($hButton) = 0x0026C Then ExitLoop
        If WinActive($hWnd) And _IsPressed('0D') Then ExitLoop
        $aiPos = ControlGetPos($hWnd, '', $hButtOK)
        If @error Then Return 0
        If $iPosPrevX <> $aiPos[0] Or $iPosPrevY <> $aiPos[1] Then ControlMove($hWnd, '', $hButton, $aiPos[0], $aiPos[1])
    WEnd
    Return ControlEnable($hWnd, '', $hButtOK)
EndFunc   ;==>_MyButton

Func _CBStateSwitch()
    If Not WinActive($hWnd) Then Return
    $vINIParam[3][1] = Not $vINIParam[3][1]
    _GUICtrlListView_SetItemChecked($hLVCntrl, -1, $vINIParam[3][1])
EndFunc   ;==>_CBStateSwitch

подробнее в этой теме
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Код:
#NoTrayIcon ; пишем как есть
AutoItSetOption("MouseCoordMode", 0)
MouseClick("left", 352, 197, 1, 0)

Может быть так?
 
Автор
A

Alexey

Новичок
Сообщения
171
Репутация
0
alex33, auto-it-скрипт состоит из 6 частей. я попробовал просто добавить эти 2 строки:
Код:
AutoItSetOption("MouseCoordMode", 0)
MouseClick("left", 352, 197, 1, 0)

в разные места скрипта (между разных частей), но безуспешно
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
И что, даже клик не происходит? Не может быть...
 
Автор
A

Alexey

Новичок
Сообщения
171
Репутация
0
сразу после этой части:
Код:
#include <GuiListView.au3>
#include <GuiButton.au3>
#include <Misc.au3>


почти что наугад мной было добавлено:
Код:
AutoItSetOption("MouseCoordMode", 1)
WinWait("[CLASS:#32770;REGEXPTITLE:(Добав([А-яЁё]|\h)+?торр?ент)|(Add New Torrent)]", "", 0)
Sleep(1500)
MouseClick("left", 352, 197, 2, 0)


в таком варианте с горем пополам двойной клик происходит, но только в первый раз (а нужно при каждом добавлении torrent-файла)
 
A

Alofa

Гость
Найдите в скрипте строку:
Код:
_GUICtrlListView_EndUpdate($hLVCntrl)


и ПЕРЕД ней вставьте еще одну:
Код:
_GUICtrlListView_SetColumnWidth($hLVCntrl, 0, $LVSCW_AUTOSIZE)

и никаких кликов по линии не понадобиться.


Извините форумчане - не удержался. (подробности Здесь)
 
Автор
A

Alexey

Новичок
Сообщения
171
Репутация
0
пользователя Alofa благодарю за эту важную информацию
 
Верх