[архив - Часть 2] AutoIt скрипты

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

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Creat0R »

Цитата Creat0R:



Эта утилитка?
[архив - Часть 2] AutoIt скрипты




А как же Изображение




Цитата Creat0R:



Скрипт завершит работу после любого движения мышки
[архив - Часть 2] AutoIt скрипты




Нет, не годится, любое движение мышки, вот если бы по комбинации клавиш тогда хорошо, а движение или нажатие клавиши не годиться Изображение
Аватара пользователя
SAOPP

Re: [архив - Часть 2] AutoIt скрипты

Сообщение SAOPP »

Ну вот мне бы так и нужно, как "некая" утилитка Изображение для чистки клавиатуры блокирует это дело, только без всяких оповещений и окон, просто блокировала, а по нажатию ctrl+alt+del разблокировала и закрывалась соответственно.
Аватара пользователя
Creat0R

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Creat0R »

SAOPP,


Цитата:



мне бы так и нужно, как "некая" утилитка для чистки клавиатуры



Эта
утилитка? Изображение




Цитата:



только без всяких оповещений и окон, просто блокировала, а по нажатию ctrl+alt+del разблокировала и закрывалась



Всё очень просто:





Код:

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

#NoTrayIcon
$aOld_MousePos = MouseGetPos()
BlockInput(1)
While 1
    Sleep(100)
    $aNewMousePos = MouseGetPos()
    If $aOld_MousePos[0]  $aNewMousePos[0] Or $aOld_MousePos[1]  $aNewMousePos[1] Then ExitLoop
WEnd
BlockInput(0)

Скрипт завершит работу после любого движения мышки Изображение
Аватара пользователя
Creat0R

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Creat0R »

SAOPP,


Цитата:



вот если бы по комбинации клавиш тогда хорошо



Ты этот скрипт пробовал запускать?



Я имел в виду после нажатия ALT + CTRL + DEL (ведь в справке к команде BlockInput это говорится), если двинуть мышкой, скрипт завершит работу, а блокирование снимается по нажатию alt ctrl del.
Аватара пользователя
HORRIBLE

Re: [архив - Часть 2] AutoIt скрипты

Сообщение HORRIBLE »

Подскажите, а как сделать часы, чтобы время шло ) спасибо.
Аватара пользователя
Creat0R

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Creat0R »

HORRIBLE,


Цитата:



как сделать часы, чтобы время шло



Имеется в виду таймер?



Типа такого:





Код:

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

#include 
Global $iTimer_Started = False
Global $Timer_Init = 0, $Total_Seconds = 0
$GUI = GUICreate("Timer Script", 220, 90)
$Timer_Button = GUICtrlCreateButton("Start", 50, 20, 120, 20)
$Timer_Label = GUICtrlCreateLabel("00:00:00", 90, 60)
GUISetState(@SW_SHOW, $GUI)
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Timer_Button
            If $iTimer_Started Then
                GUICtrlSetData($Timer_Button, "Start")
                _AdlibDisable($GUI)
                Set_Timer()
                $Total_Seconds += Round(TimerDiff($Timer_Init)/1000, 1)
            Else
                GUICtrlSetData($Timer_Button, "Stop")
                $Timer_Init = TimerInit()
                _AdlibEnable("Set_Timer", 1000, $GUI)
            EndIf
            $iTimer_Started = Not $iTimer_Started
    EndSwitch
WEnd
Func _AdlibEnable($sFunction, $iTime=250, $hWnd=0)
    Local Const $WM_TIMER = 0x0113
    If Not IsHWnd($hWnd) Then $hWnd = GUICreate("hCallBack_AdlibEnable")
    GUIRegisterMsg($WM_TIMER, $sFunction)
    Local $aRet = DllCall("User32.dll", "int", "SetTimer", "hwnd", $hWnd, "int", 50, "int", $iTime, "int", 0)
    Return $hWnd
EndFunc
Func _AdlibDisable($hWnd=0)
    Local Const $WM_TIMER = 0x0113
    GUIRegisterMsg($WM_TIMER, "")
    Local $aRet = DllCall("user32.dll", "int", "KillTimer", "hwnd", $hWnd, "int_ptr", 50)
    Return Number(IsArray($aRet) And $aRet[0])
EndFunc
Func _SecsToTime($iTicks, $Delim=":")
    If Number($iTicks) >= 0 Then
        Local $iHours = Int($iTicks / 3600)
        $iTicks = Mod($iTicks, 3600)
        Local $iMins = Int($iTicks / 60)
        Local $iSecs = Round(Mod($iTicks, 60))
        If StringLen($iHours) = 1 Then $iHours = "0" & $iHours
        If StringLen($iMins) = 1 Then $iMins = "0" & $iMins
        If StringLen($iSecs) = 1 Then $iSecs = "0" & $iSecs
        Return $iHours & $Delim & $iMins & $Delim & $iSecs
    EndIf
    Return SetError(1, 0, 0)
EndFunc
Func Set_Timer($hWnd=0)
    Local $iTmp_Total_Seconds = Round(TimerDiff($Timer_Init)/1000, 1)
    If $Total_Seconds > 0 Then $iTmp_Total_Seconds += $Total_Seconds
    Local $sTime = _SecsToTime($iTmp_Total_Seconds)
    GUICtrlSetData($Timer_Label, $sTime)
EndFunc
Аватара пользователя
HORRIBLE

Re: [архив - Часть 2] AutoIt скрипты

Сообщение HORRIBLE »

Creat0R,

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

т.к если просто использовать команды @Hour &":"& @MIN &":"& @SeC то получается когда файлик запускается то время показывается когда файл был запущен, а вот как сдеть чтоб время обновлялось, не перезапуская файл.



Еще подскажите почему ругается вот на это

#include



говорит: Error opening the file



Можно ли убрать верхнюю шапку когда создаешь окно GUICreate особенно 3-и стандартных кнопки ?
Аватара пользователя
Creat0R

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Creat0R »

HORRIBLE,


Цитата:



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



Использовать GuiCtrlSetData()...





Код:

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

#include 
Global $sTDelim = _GetTimeDelim()
$GUI = GUICreate("Timer Script", 220, 90)
$Time_Label = GUICtrlCreateLabel("Текущее время: " & GetCurrentTime($sTDelim), 40, 60)
$Handle = _AdlibEnable("Set_System_Time", 1000)
GUISetState(@SW_SHOW, $GUI)
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            _AdlibDisable($Handle, 1)
            Exit
    EndSwitch
WEnd
Func _AdlibEnable($sFunction, $iTime=250, $hWnd=0)
    Local Const $WM_TIMER = 0x0113
    If Not IsHWnd($hWnd) Then $hWnd = GUICreate("hCallBack_AdlibEnable")
    GUIRegisterMsg($WM_TIMER, $sFunction)
    Local $aRet = DllCall("User32.dll", "int", "SetTimer", "hwnd", $hWnd, "int", 1, "int", $iTime, "int", 0)
    Return $hWnd
EndFunc
Func _AdlibDisable($hWnd=0, $iCloseHwnd=0)
    Local Const $WM_TIMER = 0x0113
    GUIRegisterMsg($WM_TIMER, "")
    If $iCloseHwnd Then GUIDelete($hWnd)
    Local $aRet = DllCall("user32.dll", "int", "KillTimer", "hwnd", $hWnd, "int", 1)
    Return Number(IsArray($aRet) And $aRet[0])
EndFunc
Func Set_System_Time()
    GUICtrlSetData($Time_Label, "Текущее время: " & GetCurrentTime($sTDelim))
EndFunc
Func GetCurrentTime($sTDelim=":")
    Return @HOUR & $sTDelim & @MIN & $sTDelim & @SEC
EndFunc
Func _GetTimeDelim($sNowTime="")
    Local $sRetDelim = RegRead("HKEY_CURRENT_USER\Control Panel\International", "sTime")
    If $sRetDelim = "" And $sNowTime  "" Then $sRetDelim = StringLeft(StringRegExpReplace($sNowTime, "[0-9]", ""), 1)
    If $sRetDelim = "" Then $sRetDelim = ":"
    Return $sRetDelim
EndFunc


Цитата:



почему ругается вот на это



GuiCombo.au3 переименован в последней версии AutoIt'а, теперь нужно использовать GuiComboBox.au3




Цитата:



Можно ли убрать верхнюю шапку когда создаешь окно GUICreate особенно 3-и стандартных кнопки ?



Если речь про область заголовка, то убрать можно, нужно просто выставить стиль $WS_POPUP без других стилей, а чтобы убрать все кнопки, но при этом оставить область заголовка, нужно выставить только $WS_CAPTION плюс $WS_POPUP...





Код:

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

GUICreate("Title", 300, 100, -1, -1, $WS_CAPTION+$WS_POPUP)
Аватара пользователя
TERMINAL

Re: [архив - Часть 2] AutoIt скрипты

Сообщение TERMINAL »

Creat0R, возможно ли с помощью скрипта менять разрешение экрана и определять на данный момент?
Аватара пользователя
Creat0R

Re: [архив - Часть 2] AutoIt скрипты

Сообщение Creat0R »

TERMINAL,


Цитата:



возможно ли с помощью скрипта менять разрешение экрана и определять на данный момент?



Да, вот немного изменённые функции (
Источник
):





Код:

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

#include 
$aDisplayData = DisplayGetResolution()
_ArrayDisplay($aDisplayData, "Current Resolution Values")
;Change to new resolution
DisplayChangeResolution(960, 600, 32, 60)
Sleep(3000)
;Change back to currently used resolution
DisplayChangeResolution($aDisplayData[0], $aDisplayData[1], $aDisplayData[2], $aDisplayData[3])
Func DisplayGetResolution($iIndex=-1)
    Local $DEVMODE = DllStructCreate("byte[32];int[10];byte[32];int[6]")
    Local $aRet[4]
    Local $aDllCall = DllCall("user32.dll", "int", "EnumDisplaySettings", _
            "ptr", 0, "long", $iIndex, "ptr", DllStructGetPtr($DEVMODE))
    If IsArray($aDllCall) And $aDllCall[0]  0 Then
        $aRet[0] = DllStructGetData($DEVMODE, 4, 2)
        $aRet[1] = DllStructGetData($DEVMODE, 4, 3)
        $aRet[2] = DllStructGetData($DEVMODE, 4, 1)
        $aRet[3] = DllStructGetData($DEVMODE, 4, 5)
    Else
        Return SetError(1, 0, 0)
    EndIf
    $DEVMODE = 0
    Return $aRet
EndFunc   ;==>DisplayGetResolution
Func DisplayChangeResolution($iWidth, $iHeight, $iBpp, $iFreq)
    Local Const $DM_PELSWIDTH = 0x00080000
    Local Const $DM_PELSHEIGHT = 0x00100000
    Local Const $DM_BITSPERPEL = 0x00040000
    Local Const $DM_DISPLAYFREQUENCY = 0x00400000
    Local Const $CDS_TEST = 0x00000002
    Local Const $CDS_UPDATEREGISTRY = 0x00000001
    Local Const $DISP_CHANGE_RESTART = 1
    Local Const $DISP_CHANGE_SUCCESSFUL = 0
    Local Const $HWND_BROADCAST = 0xFFF
    Local Const $WM_DISPLAYCHANGE = 0x007E
    Local $DEVMODE = DllStructCreate("byte[32];int[10];byte[32];int[6]")
    Local $avDllCall = DllCall("user32.dll", "int", "EnumDisplaySettings", "ptr", 0, "long", 0, "ptr", DllStructGetPtr($DEVMODE))
    If IsArray($avDllCall) And $avDllCall[0]  0 Then
        DllStructSetData($DEVMODE, 2, BitOR($DM_PELSWIDTH, $DM_PELSHEIGHT, $DM_BITSPERPEL, $DM_DISPLAYFREQUENCY), 5)
        DllStructSetData($DEVMODE, 4, $iWidth, 2)
        DllStructSetData($DEVMODE, 4, $iHeight, 3)
        DllStructSetData($DEVMODE, 4, $iBpp, 1)
        DllStructSetData($DEVMODE, 4, $iFreq, 5)
        $avDllCall = DllCall("user32.dll", "int", "ChangeDisplaySettings", "ptr", DllStructGetPtr($DEVMODE), "int", $CDS_TEST)
        If @error Then
            $avDllCall = -1
        Else
            $avDllCall = $avDllCall[0]
        EndIf
        Select
            Case $avDllCall = $DISP_CHANGE_RESTART
                $DEVMODE = 0
                Return 2
            Case $avDllCall = $DISP_CHANGE_SUCCESSFUL
                DllCall("user32.dll", "int", "ChangeDisplaySettings", "ptr", DllStructGetPtr($DEVMODE), "int", $CDS_UPDATEREGISTRY)
                DllCall("user32.dll", "int", "SendMessage", "hwnd", $HWND_BROADCAST, "int", $WM_DISPLAYCHANGE, _
                        "int", $iBpp, "int", $iHeight * 2 ^ 16 + $iWidth)
                $DEVMODE = 0
                Return 1
            Case Else
                $DEVMODE = 0
                Return $avDllCall
        EndSelect
    EndIf
EndFunc   ;==>DisplayChangeResolution

В принципе, функцию для получения текущих значении можно заменить макросами...





Код:

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

Func DisplayGetResolution_by_Macro()
    Local $aRet[4] = [@DesktopWidth, @DesktopHeight, @DesktopDepth, @DesktopRefresh]
    Return $aRet
EndFunc
Ответить

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