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

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

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

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

   

sproxy



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

 

Код:
Opt('GUIOnEventMode',       1)
Opt('MustDeclareVars',      1)
Opt('TrayIconDebug',        1)
 
#include <GuiConstantsEx.au3>
#include <GuiImageList.au3>
#Include <GuiListView.au3>
#Include <WinAPI.au3>
#include <WindowsConstants.au3>
 
HotKeySet('!{ESC}', '_Pro_Exit'); Alt+ESC - закрыть скрипт
 
Global  Const $WM_DROPFILES = 0x0233
Global  Const $sKey = 'HKEY_CURRENT_USER\Software\Drag Helper'
 
Global  $hMainWin, $hFullPath, $hSavePos, $hSaveSize, $hList
Local   $hImage
 
Global  $fFullPath  = RegRead($sKey, 'Full path')
Global  $fSavePos   = RegRead($sKey, 'Save pos')
Global  $fSaveSize  = RegRead($sKey, 'Save size')
 
Local   $iWidth     = RegRead($sKey, 'Width')
Local   $iHeight    = RegRead($sKey, 'Height')
Local   $iX         = RegRead($sKey, 'X')
Local   $iY         = RegRead($sKey, 'Y')
 
If $fFullPath == '' Then
    $fFullPath = 0
    RegWrite($sKey, 'Full path', 'REG_DWORD', $fFullPath)
EndIf
If
$fSavePos == '' Then
    $fSavePos = 1
    RegWrite($sKey, 'Save pos',  'REG_DWORD', $fSavePos)
EndIf
If
$fSaveSize == '' Then
    $fSaveSize = 1
    RegWrite($sKey, 'Save size', 'REG_DWORD', $fSaveSize)
EndIf
 
If
$iWidth == '' OR $iWidth < 265 Then
    $iWidth = 265
    RegWrite($sKey, 'Width',  'REG_DWORD', $iWidth)
EndIf
If
$iHeight == '' OR $iHeight < 220 Then
    $iHeight = 220
    RegWrite($sKey, 'Height', 'REG_DWORD', $iHeight)
EndIf
If
$iX == '' Then
    $iX = 100
    RegWrite($sKey, 'X', 'REG_DWORD', $iX)
EndIf
If
$iY == '' Then
    $iY = 100
    RegWrite($sKey, 'Y', 'REG_DWORD', $iY)
EndIf
 
$hMainWin = GUICreate('Drag Helper', $iWidth, $iHeight, $iX, $iY, $WS_OVERLAPPEDWINDOW, BitOR($WS_EX_ACCEPTFILES, $WS_EX_TOPMOST))
    GUISetOnEvent($GUI_EVENT_CLOSE, '_Pro_Exit')
 
GUICtrlCreateButton('Clear', 206, 10, 50, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
        GUICtrlSetOnEvent(-1, '_Clear')
 
$hFullPath = GUICtrlCreateCheckbox('Показывать полный адрес папок', 10, 10, 195, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    If $fFullPath Then GUICtrlSetState(-1, $GUI_CHECKED)
        GUICtrlSetOnEvent(-1, '_FullPath')
 
$hSavePos  = GUICtrlCreateCheckbox('Сохранять позицию', 10, 30, 120, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    If $fSavePos Then GUICtrlSetState(-1, $GUI_CHECKED)
        GUICtrlSetOnEvent(-1, '_SavePos')
 
$hSaveSize = GUICtrlCreateCheckbox('Сохранять размер',  142, 30, 115, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    If $fSaveSize Then GUICtrlSetState(-1, $GUI_CHECKED)
        GUICtrlSetOnEvent(-1, '_SaveSize')
 
$hList = GUICtrlCreateListView('Результаты обработки', 10, 55, $iWidth-20, $iHeight-65)
    GUICtrlSetResizing(-1, $GUI_DOCKBORDERS)
    _GUICtrlListView_SetColumnWidth($hList, 0, 1000)
 
$hImage = _GUIImageList_Create()
    _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($hList, 0xFF0000, 16, 16))
    _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($hList, 0x00FF00, 16, 16))
    _GUICtrlListView_SetImageList($hList, $hImage, 1)
 
GUICtrlSetState($hList,       $GUI_FOCUS)
GUIRegisterMsg($WM_DROPFILES, 'WM_DROPFILES')
GUIRegisterMsg($WM_NCHITTEST, 'WM_NCHITTEST')
GUIRegisterMsg($WM_MOVE,      'WM_MOVE')
GUIRegisterMsg($WM_SIZE,      'WM_SIZE')
GUISetState()
 
Func WM_DROPFILES($hWnd, $msg, $wParam, $lParam)
    Local $tBuffer = DllStructCreate('char[256]')
    Local $iString, $sDir, $sDirTo, $hSearch, $sFile
    Local $aRet = DllCall('shell32.dll', 'int', 'DragQueryFile', 'int', $wParam, 'int', -1, 'ptr', 0, 'int', 0)
 
;~  If $aRet[0] > 0 Then _GUICtrlListView_DeleteAllItems($hList)
 
    For $i = 0 To $aRet[0] - 1
        DllCall('shell32.dll', 'int', 'DragQueryFile', 'int', $wParam, 'int', $i, 'ptr', DllStructGetPtr($tBuffer), 'int', DllStructGetSize($tBuffer))
        $sDir = DllStructGetData($tBuffer, 1)
 
        If StringInStr(FileGetAttrib($sDir), 'D') Then
            $hSearch = FileFindFirstFile($sDir & '\*.*')
            If @error Then Return
            Dim
$iFile1 = 0, $iFile2 = 0
            While 1
                $sFile = FileFindNextFile($hSearch)
                If @error Then ExitLoop
                $sFile = StringRegExpReplace($sFile, '.*\.(.+)$', '\1')
                If $sFile == 'cue'  Then $iFile1 += 1
                If $sFile == 'ape'  Then $iFile2 += 1
                If $sFile == 'flac' Then $iFile2 += 1
                If $sFile == 'wv'   Then $iFile2 += 1
            WEnd
            FileClose($hSearch)
            If $iFile1 <> 1 OR $iFile2 <> 1 Then
                $sDirTo = StringRegExpReplace($sDir, '(.+\\)(.+)$', '\1' & '_\2')
                DirMove($sDir, $sDirTo)
                $sDir = $sDirTo
                $iFile1
= 0
            Else
                $iFile1 = 1
            EndIf
            If NOT
$fFullPath Then $sDir = StringRegExpReplace($sDir, '.+\\(.+)$', '\1')
            GUICtrlCreateListViewItem('  ' & $sDir, $hList)
            _GUICtrlListView_SetItemImage($hList, _GUICtrlListView_GetItemCount($hList)-1, $iFile1)
        EndIf
    Next

 
    DllCall('shell32.dll', 'none', 'DragFinish', 'int', $wParam)
    Return $GUI_RUNDEFMSG
EndFunc
 
Func
WM_NCHITTEST($hWnd, $Msg, $wParam, $lParam)
    Local $iProc = DllCall('user32.dll', 'int', 'DefWindowProc', 'hwnd', $hWnd, 'int', $Msg, 'wparam', $wParam, 'lparam', $lParam)
    If $iProc[0] = $HTCLIENT Then Return $HTCAPTION
    Return $GUI_RUNDEFMSG
EndFunc
 
Func
WM_MOVE($hWnd, $Msg, $wParam, $lParam)
    If NOT $fSavePos OR BitAnd(WinGetState($hMainWin), 16) OR BitAnd(WinGetState($hMainWin), 32) Then Return
    Local
$aWinPos = WinGetPos($hMainWin)
    RegWrite($sKey, 'X', 'REG_DWORD', $aWinPos[0])
    RegWrite($sKey, 'Y', 'REG_DWORD', $aWinPos[1])
EndFunc
 
Func
WM_SIZE($hWnd, $Msg, $wParam, $lParam)
    If NOT $fSaveSize OR BitAnd(WinGetState($hMainWin), 16) OR BitAnd(WinGetState($hMainWin), 32) Then Return
    RegWrite($sKey, 'Width',  'REG_DWORD', _WinAPI_LoWord($lParam))
    RegWrite($sKey, 'Height', 'REG_DWORD', _WinAPI_HiWord($lParam))
EndFunc
 
Func
_FullPath()
    $fFullPath = BitAND(1, GUICtrlRead($hFullPath))
    RegWrite($sKey, 'Full path', 'REG_DWORD', $fFullPath)
EndFunc
Func
_SavePos()
    $fSavePos = BitAND(1, GUICtrlRead($hSavePos))
    RegWrite($sKey, 'Save pos', 'REG_DWORD', $fSavePos)
EndFunc
Func
_SaveSize()
    $fSaveSize = BitAND(1, GUICtrlRead($hSaveSize))
    RegWrite($sKey, 'Save size', 'REG_DWORD', $fSaveSize)
EndFunc
 
Func
_Clear()
    _GUICtrlListView_DeleteAllItems($hList)
EndFunc
 
While
1
    Sleep(10)
WEnd
 
Func
_Pro_Exit()
    Exit
EndFunc

 

Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 13:50 13-07-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