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

Показать сообщение отдельно

Аватара для Creat0R

Must AutoIt


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

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


babaytugur,
Цитата babaytugur:
как разгрузить процессор? »
Хм, проверять только при изменении списка? Я бы немного подругому сделал:

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

HotKeySet("^q", "QuitApp")

Dim $aDenyList, $aWinList, $aOld_WinList

;Читаем в массив файл denylist.txt
_FileReadToArray("denylist.txt", $aDenyList)

While 1
    $aWinList = WinList()

    ;Проверяем окна только если есть изменения в списке (с момента последней проверки)

    If Not _Array2DIsIdentical($aWinList, $aOld_WinList) Then
        $aOld_WinList = $aWinList

        For $i = 1 To UBound($aWinList)-1
            For $j = 1 To UBound($aDenyList)-1
                If _WinIsVisible($aWinList[$i][1]) And StringInStr($aWinList[$i][0], $aDenyList[$j]) Then
                    Beep(1000, 250)
                    _MsgBox(16, "Сообщение для " & @UserName, $aDenyList[$j] & " - НЕТ ДОСТУПА!", $aWinList[$i][1])

                    $iWinProcess = WinGetProcess($aWinList[$i][1])

                    If WinGetTitle("[CLASS:CabinetWClass;TITLE:" & $aWinList[$i][0] & "]") = $aWinList[$i][0] Then
                        WinClose($aWinList[$i][1])
                    Else
                        ProcessClose($iWinProcess)
                    EndIf
                EndIf
            Next
        Next
    EndIf

    Sleep(1000)
WEnd

Func _MsgBox($MsgBoxType, $MsgBoxTitle, $MsgBoxText, $Main_GUI=0)
    Local $aRet = DllCall("user32.dll", "int", "MessageBoxW", _
            "hwnd", $Main_GUI, _
            "wstr", $MsgBoxText, _
            "wstr", $MsgBoxTitle, _
            "int", $MsgBoxType)
    Return $aRet[0]
EndFunc

Func _Array2DIsIdentical($av2DArray_a, $av2DArray_b, $iLastElement=1)
    If UBound($av2DArray_a) <> UBound($av2DArray_b) Then Return False

    For $i = 0 To UBound($av2DArray_a)-1
        For $j = 0 To $iLastElement
            If $av2DArray_a[$i][$j] <> $av2DArray_b[$i][$j] Then Return False
        Next
    Next

    Return True
EndFunc

Func _WinIsVisible($handle)
    Return BitAnd(WinGetState($handle), 2)
EndFunc

Func QuitApp()
    Exit
EndFunc

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

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

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

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

Отправлено: 00:38, 03-05-2008 | #472