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

Ответить
 • Просмотры: 2
Аватара пользователя
TERMINAL

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

Сообщение TERMINAL »

Цитата Creat0R:



gregaz,

А в чём проблема использовать более одной функции? . Ограничении вроде нет.
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.




Может быть и так.Просто работа универсальной ф-ии мне более понятна.

Можно попутно еще вопрос ?

Насколько я понял (для универсальной ф-ии в моем примере) одновременное использование одинарного и двойного кликов одной и той же кнопки мыши не предполагается.

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

Как правильно это организовать?
Аватара пользователя
nevson

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

Сообщение nevson »

amel27, да, именно так! Спасибо огромное, все работает!
Аватара пользователя
amel27

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

Сообщение amel27 »

Цитата Creat0R:



gregaz,

А в чём проблема использовать более одной функции? . Ограничении вроде нет.
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.




:

Эта функция сортировки работает только на ListView ,созданном внутренней ф-ей : GUICtrlCreateListView

При создании ListView с помощбю UDF : _GUICtrlListView_Create - не хочет

Тогда,как редактирование на месте - наоборот . Получаются вилы ?




Цитата Maza Faka:



gregaz

Цитата:

дновременное использование одинарного и двойного кликов одной и той же кнопки мыши не предполагается.

Поподробнее пожалуйста, имеется в виду клики на ListView items?
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.




Да конечно

Надо выявить двойной клик на ListView items ,игнорируя первый (одинарный) одной и той же кнопкой мыши
Аватара пользователя
babaytugur

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

Сообщение babaytugur »

Прошу помощи

Есть код



Код:

Код: Выделить всё

Dim $mass[1], $x=0,$Stop = 0
Do
    $mass[$x] = FileReadLine ("denylist.txt",$x+1)
    If @error=-1 Then
        $Stop=1
        ReDim $Mass[$x]
    Else
        $x = $x+1
        ReDim $Mass[$x+1]
    EndIf
Until $Stop=1
Do
    $var = WinList()
    For $x=0 To UBound ($mass)-1
            For $i = 1 to $var[0][0]
                If $var[$i][0]  "" AND IsVisible($var[$i][1]) Then
                    if StringInStr($var[$i][0], $mass[$x])0 Then
                        beep(1000,250)
                        MsgBox (16,"Сообщение для " & @UserName,$mass[$x] & " - НЕТ ДОСТУПА!",7)
                        $GWP = WinGetProcess ($var[$i][0]) ;Получаем имя процесса по имени окна
                        if WinGetProcess("explorer.exe") Then ;Если процесс explorer.exe тогда просто закроем окно(если открыта папка, а то как-то некрасиво ))) )
                            WinClose ($var[$i][0])
                            Else
                        ProcessClose($GWP); Киляем полученный процесс
                        EndIf
                    EndIf
                EndIf
            Next
    Next
    Sleep(1000)
Until $i=1
Func IsVisible($handle)
  If BitAnd( WinGetState($handle), 2 ) Then
    Return 1
  Else
    Return 0
  EndIf
EndFunc

[/b]Смысл скрипта в том, что он висит в памяти компьютера и блокирует окна в которых содержатся запрещенные слова



Последние содержатся в denylist.txt

icq

qip

и т.д.



Все работает, но скрипт сильно напрягает процессор

вопрос как разгрузить процессор?
Аватара пользователя
TERMINAL

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

Сообщение TERMINAL »

Помогите плз, у каждого диска (CD & DVD) присутствует свой серийный номер или порядковый номер. Его возможно как то узнать.
Аватара пользователя
TERMINAL

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

Сообщение TERMINAL »

amel27, проблема ещё в том что если пишешь образ болванкой то номер меняется на другой
Аватара пользователя
HORRIBLE

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

Сообщение HORRIBLE »

Всем привет.

Как можно заблокировать авторан который запускается с флешок, скриптом?
Аватара пользователя
Maza Faka

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

Сообщение Maza Faka »

Вот попробовал накалякать LVSort позволяющюю и сортировать на ListView,созданном с помощью UDF

При этом сохраняется возможность редактирования на месте





Код:

Код: Выделить всё

#include 
#include 
$Gui = GUICreate("Test", 400, 250)
$hListView = _GUICtrlListView_Create($GUI, "Items|SubItems", 2, 2, 220, 196, BitOR($LVS_EDITLABELS, $LVS_REPORT))
$hImage = _GUIImageList_Create (16,16,5);
_GUIImageList_AddIcon ($hImage, "shell32.dll", 3);
_GUIImageList_AddIcon ($hImage, "shell32.dll", 11);
_GUIImageList_AddIcon ($hImage, "shell32.dll", 22);
_GUIImageList_AddIcon ($hImage, "shell32.dll", 33);
_GUICtrlListView_SetImageList ($hListView, $hImage, 1)
$ListItem1 = _GUICtrlListView_AddItem($hListView, "Boris",0)
$ListItem2 = _GUICtrlListView_AddItem($hListView, "Anna",2)
$ListItem3 = _GUICtrlListView_AddItem($hListView, "Sveta",1)
$ListItem4 = _GUICtrlListView_AddItem($hListView, "Misha",3)
$ListSubItem1 = _GUICtrlListView_AddSubItem ($hListView, 0,'44', 1)
$ListSubItem2 = _GUICtrlListView_AddSubItem ($hListView, 1,'22', 1)
$ListSubItem3 = _GUICtrlListView_AddSubItem ($hListView, 2,'11', 1)
$ListSubItem4 = _GUICtrlListView_AddSubItem ($hListView, 3,'33', 1)
GUISetState()
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
Global $B_DESCENDING[_GUICtrlListView_GetColumnCount ($hListView) ]
While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
        ExitLoop
    EndSwitch
WEnd
;------------------------------------------------------------------------------
Func LVSort($in)
    $itN=_GUICtrlListView_GetItemCount($hListView)
    $colN=_GUICtrlListView_GetColumnCount($hListView)
    Dim $iArr[$itN][$colN+2]
    For $ii=0 To $itN-1
        $aItem=_GUICtrlListView_GetItem($hListView, $ii)
        For $jj=0 To $colN-1
            $iArr[$ii][$jj]=_GUICtrlListView_GetItemText($hListView, $ii,$jj)
            $iArr[$ii][$jj+1]=$aItem[4]
        Next
    Next
    _ArraySort( $iArr,'','','',$colN+1)
    For $ii=0 To $itN-1
        _ArraySwap( $iArr[$ii][0], $iArr[$ii][$in] )
    Next
    _ArraySort( $iArr,0,0,0,$colN+1)
    For $ii=0 To $itN-1
        _ArraySwap( $iArr[$ii][0], $iArr[$ii][$in] )
    Next
    _GUICtrlListView_DeleteAllItems($hListView)
    For $ii=0 To $itN-1
        _GUICtrlListView_AddItem($hListView,$iArr[$ii][0],$iArr[$ii][2])
        For $jj=1 To $colN-1
            _GUICtrlListView_AddSubItem ($hListView, $ii,$iArr[$ii][$jj], $jj)
        Next
    Next
EndFunc
;-----------------------------------------------------------------------------------
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
    $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 $LVN_COLUMNCLICK ; Клик по колонке
            $aHit = _GuiCtrlListView_SubItemHitTest ($hWndListView)
            LVSort($aHit[1])
        Case $LVN_BEGINLABELEDIT
            Local $tInfo = DllStructCreate($tagNMLVDISPINFO, $ilParam)
            Return False
        Case $LVN_ENDLABELEDIT
            Local $tInfo = DllStructCreate($tagNMLVDISPINFO, $ilParam)
            Local $tBuffer = DllStructCreate("char Text[" & DllStructGetData($tInfo, "TextMax") & "]", DllStructGetData($tInfo, "Text"))
            If StringLen(DllStructGetData($tBuffer, "Text")) Then Return True
            EndSwitch
        EndSwitch
        Return $GUI_RUNDEFMSG
    EndFunc

Наверняка ее можно еще упростить.




Цитата Creat0R:



gregaz,

Цитата:Как правильно это организовать?

Двойной клик улавливается сообщениями ($NM_DBLCLK), в справке есть пример (в _GUICtrlListView_Create()).

Когда мы кликаем два раза подряд (промежуточность установлена системой), то в ListView посылается сообщение $NM_DBLCLK, вот его и нужно улавливать (испол. WM_NOTIFY_EVENTS()).
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.




Да двойной то улавливает и эта функция (если добавить соответственно $iCode : $NM_CLICK и $NM_DBLCLK,но сначала улавливается одинарный клик(его не знаю как пропустить) чтобы среагировать на второй (от двойного) ?
Аватара пользователя
Drsmog

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

Сообщение Drsmog »

Как разбить число допустим 1367 на 1 3 6 7 и присвоить каждую переменной
Ответить

Вернуться в «AutoIt»