Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 2)

Модерирует : gyra, Maz

Widok (01-06-2010 13:08): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
#include <Misc.au3>
;
 
#Region Vars Part
Global Const $WM_EXITSIZEMOVE = 0x232
Global Const $WM_MOUSEWHEEL = 0x020A
Global Const $SC_MOVE = 0xF010
Global Const $SC_SIZE = 0xF000
 
Global $hUser32_Dll = DllOpen("User32.dll")
 
Global $iMoveWithCursor = False
Global
$aOld_Mouse_Pos = MouseGetPos()
Global $iOld_DragFullWindows_Opt = RegRead("HKEY_CURRENT_USER\Control Panel\Desktop", "DragFullWindows")
 
Global $aBk_Colors[11] = [10, 0xFFFF80, 0x80BFFF, 0xBFDFDF, 0xAEAE00, 0xD50000, 0xFF8000, 0x00FFFF, 0xFF0000, 0x8000FF, 0x0000FF]
Global $aTransparency[11] = [10, 230, 200, 170, 140, 110, 80, 50, 40, 30, 20]
 
Global $iCurrent_Bk_Color = 1
Global $iCurrent_Transparency = 5
#EndRegion Vars Part
;
 
#Region GUI Part
$hBk_GUI = GUICreate("Reading Ruler Demo", 600, 300, -1, -1, BitOR($WS_POPUP, $WS_SIZEBOX), $WS_EX_TOPMOST)
WinSetTrans($hBk_GUI, "", $aTransparency[$iCurrent_Transparency])
GUISetBkColor($aBk_Colors[$iCurrent_Bk_Color], $hBk_GUI)
GUISetCursor(0, 1, $hBk_GUI)
 
$hLine_GUI = GUICreate("", 602, 10, 0, 300-20, $WS_POPUP, $WS_EX_TOPMOST, $hBk_GUI)
GUISetBkColor(0x4A4A4A, $hLine_GUI)
 
$aBkGUI_Pos = WinGetPos($hBk_GUI)
WinMove($hLine_GUI, "", $aBkGUI_Pos[0]+2, ($aBkGUI_Pos[1]+$aBkGUI_Pos[3])-13)
 
GUISetState(@SW_SHOW, $hBk_GUI)
GUISetState(@SW_SHOW, $hLine_GUI)
 
GUIRegisterMsg($WM_MOUSEWHEEL, "WM_MOUSEWHEEL")
GUIRegisterMsg($WM_MOVE, "WM_MOVE")
GUIRegisterMsg($WM_SIZE, "WM_MOVE")
GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")
GUIRegisterMsg($WM_GETMINMAXINFO, "WM_GETMINMAXINFO")
GUIRegisterMsg($WM_EXITSIZEMOVE, "WM_EXITSIZEMOVE")
GUIRegisterMsg($WM_SYSCOMMAND, "WM_SYSCOMMAND")
#EndRegion GUI Part
;
 
While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
 
    If
$iMoveWithCursor Then
        $aMouse_Pos = MouseGetPos()
 
        If $aMouse_Pos[0] <> $aOld_Mouse_Pos[0] Or $aMouse_Pos[1] <> $aOld_Mouse_Pos[1] Then
            $aOld_Mouse_Pos = $aMouse_Pos
 
            WinMove($hBk_GUI, "", $aMouse_Pos[0]-10, $aMouse_Pos[1]-10)
        EndIf
    EndIf
WEnd
 
Func
WM_MOUSEWHEEL($hWnd, $iMsg, $wParam, $lParam)
    Switch $wParam
        Case 0x00780000 ;Wheel Up
            $iCurrent_Bk_Color += 1
            If $iCurrent_Bk_Color >= $aBk_Colors[0] Then $iCurrent_Bk_Color = 1
 
            GUISetBkColor($aBk_Colors[$iCurrent_Bk_Color], $hBk_GUI)
        Case 0xFF880000 ;Wheel Down
            $iCurrent_Transparency += 1
            If $iCurrent_Transparency > $aTransparency[0] Then $iCurrent_Transparency = 1
 
            WinSetTrans($hBk_GUI, "", $aTransparency[$iCurrent_Transparency])
    EndSwitch
EndFunc
 
Func
WM_NCHITTEST($hWnd, $iMsg, $wParam, $lParam)
    Local $iRet = _WinAPI_DefWindowProc($hWnd, $iMsg, $wParam, $lParam)
 
    If ($iRet < 10 Or $iRet > 18) And _IsPressed("01", $hUser32_Dll) Then $iMoveWithCursor = Not $iMoveWithCursor
 
    If $iRet = 1 Then Return 2
    Return $iRet
EndFunc
 
Func
WM_MOVE($hWnd, $MsgID, $wParam, $lParam)
    $aBkGUI_Pos = WinGetPos($hBk_GUI)
    $aLineGUI_Pos = WinGetPos($hLine_GUI)
 
    GUIRegisterMsg($WM_MOVE, "")
    GUIRegisterMsg($WM_SIZE, "")
    GUIRegisterMsg($WM_NCHITTEST, "")
    GUIRegisterMsg($WM_GETMINMAXINFO, "")
 
    If $hWnd = $hBk_GUI Then
        WinMove($hLine_GUI, "", $aBkGUI_Pos[0]+2, ($aBkGUI_Pos[1]+$aBkGUI_Pos[3])-13, $aBkGUI_Pos[2]-5)
    Else
        WinMove($hBk_GUI, "", $aLineGUI_Pos[0]-2, ($aLineGUI_Pos[1]-$aBkGUI_Pos[3])+13)
    EndIf
 
    GUIRegisterMsg($WM_MOVE, "WM_MOVE")
    GUIRegisterMsg($WM_SIZE, "WM_MOVE")
    GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")
    GUIRegisterMsg($WM_GETMINMAXINFO, "WM_GETMINMAXINFO")
EndFunc
 
Func
WM_SYSCOMMAND($hWnd, $iMsg, $wParam, $lParam)
    Switch BitAND($wParam, 0xFFF0)
        Case $SC_SIZE, $SC_MOVE
            Local Const $SPI_SETDRAGFULLWINDOWS = 37
            Local Const $SPI_GETDRAGFULLWINDOWS = 38
            Local Const $SPIF_SENDWININICHANGE = 2
 
            DllCall("User32.dll", "int", "SystemParametersInfo", _
                "int", $SPI_SETDRAGFULLWINDOWS, "int", 1, "ptr", 0, "int", $SPIF_SENDWININICHANGE)
    EndSwitch
EndFunc
 
Func
WM_EXITSIZEMOVE($hWnd, $iMsg, $wParam, $lParam)
    DllCall("user32.dll", "int", "SystemParametersInfo", "int", 37, "int", $iOld_DragFullWindows_Opt, "ptr", 0, "int", 2)
EndFunc
 
Func
WM_GETMINMAXINFO($hWnd, $iMsg, $wParam, $lParam)
    If $hWnd <> $hBk_GUI Then Return $GUI_RUNDEFMSG
 
    Local $MINGuiX = 600, $MINGuiY = 300, $MAXGuiX = @DesktopWidth, $MAXGuiY = @DesktopHeight
    Local $stMinMaxInfo = DllStructCreate("int;int;int;int;int;int;int;int;int;int", $lParam)
 
    DllStructSetData($stMinMaxInfo, 7, $MINGuiX) ; min X
    DllStructSetData($stMinMaxInfo, 8, $MINGuiY) ; min Y
    DllStructSetData($stMinMaxInfo, 9, $MAXGuiX) ; max X
    DllStructSetData($stMinMaxInfo, 10, $MAXGuiY) ; max Y
 
    Return $GUI_RUNDEFMSG
EndFunc

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 05:45 05-06-2009 | Исправлено: ViSiToR, 06:44 05-06-2009
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 2)
Widok (01-06-2010 13:08): Лимит страниц. Продолжаем здесь.


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru