Недавние сообщения

Страницы: [1] 2 3 ... 10
1
musicstashall
По поводу точек по контуру, почитайте здесь https://www.autoitscript.com/forum/topic/101733-prevent-dotted-focus-lines-on-controls/
2
Нашел пример Yashied, сделал таким образом:

Код: AutoIt [Выделить]
#include <WinAPI.au3>
#include <ComboConstants.au3>
#Include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <SliderConstants.au3>
#include <Constants.au3>
#include <TabConstants.au3>
#Include <WinAPIEx.au3>
#include <GuiTab.au3>
#include <GDIPlus.au3>
#Include <StaticConstants.au3>

Global Const $tagNMCUSTOMDRAW = 'hwnd hWndFrom;uint_ptr IDFrom;int Code;dword DrawStage;hwnd hDC;' & $tagRECT & ';dword_ptr ItemSpec;uint ItemState;lparam ItemlParam'
;Global Const $STM_GETIMAGE = 0x0173

Global $hTemp = 0
$color =  Hex(_WinAPI_GetSysColor($COLOR_WINDOW), 6)

$gui1 = GUICreate('MyGUI', 413, 161)
GUISetBkColor('0x' & $color)
Local $x = 3
Local $y = 75

_GDIPlus_Startup()
$hImage = _GDIPlus_BitmapCreateFromScan0(413, 161)
$hGraphics = _GDIPlus_ImageGetGraphicsContext($hImage)
$hBrush = _GDIPlus_BrushCreateSolid(0xFF00FF4d)
_GDIPlus_GraphicsFillRect($hGraphics, 120, 60, 240, 5, $hBrush)
$hBrush = _GDIPlus_BrushCreateSolid(0xFFFFFF00)
_GDIPlus_GraphicsFillRect($hGraphics, 120, 110, 240, 5, $hBrush)
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_BitmapDispose($hImage)
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_Shutdown()

$Pic1 = GUICtrlCreatePic('', 0, 0, 413, 161)
GUICtrlSetState(-1, $GUI_DISABLE)
$hPic = GUICtrlGetHandle(-1)

GUICtrlCreateSlider(120, 50, 240, 23, $TBS_NOTICKS)
Local $hSlider1 = GUICtrlGetHandle(-1)
GUICtrlSetBkColor($hSlider1, $color)
GUICtrlCreateSlider(120, 100, 240, 23, $TBS_NOTICKS)
Local $hSlider2 = GUICtrlGetHandle(-1)
GUICtrlSetBkColor($hSlider2, $color)

GUISetState()

GUIRegisterMsg($WM_HSCROLL, "WM_HVSCROLL")
GUIRegisterMsg($WM_VSCROLL, "WM_HVSCROLL")
GUIRegisterMsg($WM_NOTIFY, 'WM_NOTIFY')

_WinAPI_DwmEnableBlurBehindWindow($gui1, 1, 1)
GUICtrlSendMsg($Pic1, 0x0172, 0, $hBitmap)
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

Func WM_HVSCROLL($hWnd, $MsgID, $wParam, $lParam)
    Switch $lparam
        Case $hSlider1
            GUICtrlSetState($hSlider1, $GUI_NOFOCUS)
        Case $hSlider2
            GUICtrlSetState($hSlider2, $GUI_NOFOCUS)
    EndSwitch
EndFunc

Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)

    Local $tNMCD = DllStructCreate($tagNMCUSTOMDRAW, $lParam)
    Local $hWndFrom = DllStructGetData($tNMCD, 'hWndFrom')
    Local $Code = DllStructGetData($tNMCD, 'Code')
    Local $DrawStage = DllStructGetData($tNMCD, 'DrawStage')
    Local $ItemSpec = DllStructGetData($tNMCD, 'ItemSpec')
    Local $hDC = DllStructGetData($tNMCD, 'hDC')
    Local $hMemDC, $hBitmap, $hPrev
    Local $aPos

    Switch $hWndFrom
        Case $hSlider1
            Switch $Code
                Case $NM_CUSTOMDRAW
                    Switch $DrawStage
                        Case $CDDS_PREPAINT, $CDDS_POSTPAINT
                            $aPos = ControlGetPos($hSlider1, '', '')
                            Switch $DrawStage
                                Case $CDDS_PREPAINT
                                    $hMemDC = _WinAPI_CreateCompatibleDC($hDC)
                                    $hBitmap = _SendMessage($hPic, $STM_GETIMAGE, $IMAGE_BITMAP, 0)
                                    $hPrev = _WinAPI_SelectObject($hMemDC, $hBitmap)
                                    _WinAPI_BitBlt($hDC, 0, 0, $aPos[2], $aPos[3], $hMemDC, $aPos[0], $aPos[1], $SRCCOPY)
                                    _WinAPI_SelectObject($hMemDC, $hPrev)
                                    _WinAPI_DeleteDC($hMemDC)
                                    Return BitOR($CDRF_NOTIFYITEMDRAW, $CDRF_NOTIFYPOSTPAINT)
                                Case $CDDS_POSTPAINT
                                    $hMemDC = _WinAPI_CreateCompatibleDC($hDC)
                                    If Not $hTemp Then
                                        $hTemp = _WinAPI_CreateCompatibleBitmap($hDC, $aPos[2], $aPos[3])
                                        $hPrev = _WinAPI_SelectObject($hMemDC, $hTemp)
                                        _WinAPI_BitBlt($hMemDC, 0, 0, $aPos[2], $aPos[3], $hDC, 0, 0, $MERGECOPY)
                                    Else
                                        $hMemDC = _WinAPI_CreateCompatibleDC($hDC)
                                        $hPrev = _WinAPI_SelectObject($hMemDC, $hTemp)
                                        _WinAPI_BitBlt($hDC, 0, 0, $aPos[2], $aPos[3], $hMemDC, 0, 0, $SRCCOPY)
                                    EndIf
                                    _WinAPI_SelectObject($hMemDC, $hPrev)
                                    _WinAPI_DeleteDC($hMemDC)
                                    Return $CDRF_DODEFAULT
                            EndSwitch
                        Case $CDDS_ITEMPREPAINT
                            If $hTemp Then
                                _WinAPI_DeleteObject($hTemp)
                                $hTemp = 0
                            EndIf
                            Switch $ItemSpec
                                Case $TBCD_TICS
                                    Return $CDRF_SKIPDEFAULT
                                Case $TBCD_THUMB, $TBCD_CHANNEL
                                    Return $CDRF_DODEFAULT
                            EndSwitch
                    EndSwitch
            EndSwitch

            Case $hSlider2
            Switch $Code
                Case $NM_CUSTOMDRAW
                    Switch $DrawStage
                        Case $CDDS_PREPAINT, $CDDS_POSTPAINT
                            $aPos = ControlGetPos($hSlider2, '', '')
                            Switch $DrawStage
                                Case $CDDS_PREPAINT
                                    $hMemDC = _WinAPI_CreateCompatibleDC($hDC)
                                    $hBitmap = _SendMessage($hPic, $STM_GETIMAGE, $IMAGE_BITMAP, 0)
                                    $hPrev = _WinAPI_SelectObject($hMemDC, $hBitmap)
                                    _WinAPI_BitBlt($hDC, 0, 0, $aPos[2], $aPos[3], $hMemDC, $aPos[0], $aPos[1], $SRCCOPY)
                                    _WinAPI_SelectObject($hMemDC, $hPrev)
                                    _WinAPI_DeleteDC($hMemDC)
                                    Return BitOR($CDRF_NOTIFYITEMDRAW, $CDRF_NOTIFYPOSTPAINT)
                                Case $CDDS_POSTPAINT
                                    $hMemDC = _WinAPI_CreateCompatibleDC($hDC)
                                    If Not $hTemp Then
                                        $hTemp = _WinAPI_CreateCompatibleBitmap($hDC, $aPos[2], $aPos[3])
                                        $hPrev = _WinAPI_SelectObject($hMemDC, $hTemp)
                                        _WinAPI_BitBlt($hMemDC, 0, 0, $aPos[2], $aPos[3], $hDC, 0, 0, $MERGECOPY)
                                    Else
                                        $hMemDC = _WinAPI_CreateCompatibleDC($hDC)
                                        $hPrev = _WinAPI_SelectObject($hMemDC, $hTemp)
                                        _WinAPI_BitBlt($hDC, 0, 0, $aPos[2], $aPos[3], $hMemDC, 0, 0, $SRCCOPY)
                                    EndIf
                                    _WinAPI_SelectObject($hMemDC, $hPrev)
                                    _WinAPI_DeleteDC($hMemDC)
                                    Return $CDRF_DODEFAULT
                            EndSwitch
                        Case $CDDS_ITEMPREPAINT
                            If $hTemp Then
                                _WinAPI_DeleteObject($hTemp)
                                $hTemp = 0
                            EndIf
                            Switch $ItemSpec
                                Case $TBCD_TICS
                                    Return $CDRF_SKIPDEFAULT
                                Case $TBCD_THUMB, $TBCD_CHANNEL
                                    Return $CDRF_DODEFAULT
                            EndSwitch
                    EndSwitch
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY
 


Не устраивает обводка активного слайдера точками, хотелось бы убрать. Как?? Потом, если окно прозрачное, как в данном скрипте, то после активации слайдера, под ним фон становится отличным от фона всего окна, он как бы более прозрачный, что-ли..
3
Регулярные выражения и прочее / Re: Помогите с регулярным выражением
« Последний ответ от ra4o Отправлен Вчера в 20:05:59 »
Цитировать
файл с уникальными адресами
по какому критерию отсеяли адреса "37.190.42.103;adm;1234" , "37.190.42.103;Administrator;1234"  ,"37.190.42.103;admin;1234" и почему оставили именно "37.190.42.103;system;1234" ?
4
Регулярные выражения и прочее / Помогите с регулярным выражением
« Последний ответ от Grizli Отправлен Вчера в 19:13:37 »
Здравствуйте, не могу осилить задачу- есть текстовый файл вида
37.190.42.103;system;1234
37.110.1.87;root;12345
37.110.33.125;root;12345
37.110.54.119;admin;1234
37.190.42.103;adm;1234
37.190.42.103;Administrator;1234
37.190.83.238;adm;1234
37.190.42.103;admin;1234

нужно на выходе получить файл с уникальными адресами вида
37.110.1.87;root;12345
37.110.33.125;root;12345
37.110.54.119;admin;1234
37.190.42.103;system;1234
37.190.83.238;adm;1234
5
Общие вопросы по AutoIt / Шрифты, стили текста элементов управления
« Последний ответ от musicstashall Отправлен Вчера в 17:12:51 »
Столкнулся с задачей, когда потребовалось устанавливать шрифт текста в элементах управления такой, чтобы соответствовал дефолтному шрифту системы в данный момент. Дело в том, что если я применяю стиль к шрифту, в данном случае это подчеркнутый текст, то непосредственно сам шрифт становится отличным от дефолтного. Вот пример:

Код: AutoIt [Выделить]
#include <GUICtrlOnHover.au3>

$Back = GUICtrlCreateLabel('<< Назад', $x + 30, $y + 352, 50)
    GUICtrlSetColor(-1, 0x696969)
    GUICtrlSetFont(-1, -1, -1, -1)
    $Complete = GUICtrlCreateLabel('Завершить', $x + 90, $y + 352, 60)
    GUICtrlSetColor(-1, 0x696969)
    GUICtrlSetFont(-1, -1, -1, -1)
    $forward = GUICtrlCreateLabel('Далее >>', $x + 160, $y + 352, 50)
    GUICtrlSetColor(-1, 0x696969)
    GUICtrlSetFont(-1, -1, -1, -1)

Func _Hover($CtrlID, $iParam)
    Switch $iParam
        Case 1 ;Hover
        Switch $CtrlID
            Case $Back
                GUICtrlSetFont($Back, -1, -1, 4)
            Case $Complete
                GUICtrlSetFont($Complete, -1, -1, 4)
            Case $forward Then 
                GUICtrlSetFont($forward, -1, -1, 4)    
           
        EndSwitch
        Case 2 ;Leave Hover
        Switch $CtrlID
            Case $Back
                GUICtrlSetFont($Back, -1, -1, -1)
            Case $Complete
                GUICtrlSetFont($Complete, -1, -1, -1)
            Case $forward
                GUICtrlSetFont($forward, -1, -1, -1)               
           
        EndSwitch
    EndSwitch
EndFunc
 


Вопрос: есть ли возможность получить системный шрифт и его применять к элементам? Либо что-то может иное посоветуете.
6
Общие вопросы по AutoIt / Шрифты, стили текста элементов управления
« Последний ответ от musicstashall Отправлен Вчера в 17:11:15 »
Столкнулся с задачей, когда потребовалось устанавливать шрифт текста в элементах управления такой, чтобы соответствовал дефолтному шрифту системы в данный момент. Дело в том, что если я применяю стиль к шрифту, в данном случае это подчеркнутый текст, то непосредственно сам шрифт становится отличным от дефолтного. Вот пример:

Код: AutoIt [Выделить]
#include <GUICtrlOnHover.au3>

$Back = GUICtrlCreateLabel('<< Назад', $x + 30, $y + 352, 50)
    GUICtrlSetColor(-1, 0x696969)
    GUICtrlSetFont(-1, -1, -1, -1)
    $Complete = GUICtrlCreateLabel('Завершить', $x + 90, $y + 352, 60)
    GUICtrlSetColor(-1, 0x696969)
    GUICtrlSetFont(-1, -1, -1, -1)
    $forward = GUICtrlCreateLabel('Далее >>', $x + 160, $y + 352, 50)
    GUICtrlSetColor(-1, 0x696969)
    GUICtrlSetFont(-1, -1, -1, -1)

Func _Hover($CtrlID, $iParam)
    Switch $iParam
        Case 1 ;Hover
        Switch $CtrlID
            Case $Back
                GUICtrlSetFont($Back, -1, -1, 4)
            Case $Complete
                GUICtrlSetFont($Complete, -1, -1, 4)
            Case $forward Then 
                GUICtrlSetFont($forward, -1, -1, 4)    
           
        EndSwitch
        Case 2 ;Leave Hover
        Switch $CtrlID
            Case $Back
                GUICtrlSetFont($Back, -1, -1, -1)
            Case $Complete
                GUICtrlSetFont($Complete, -1, -1, -1)
            Case $forward
                GUICtrlSetFont($forward, -1, -1, -1)               
           
        EndSwitch
    EndSwitch
EndFunc
 


Вопрос: есть ли возможность получить системный шрифт и его применять к элементам? Либо что-то может иное посоветуете.
7
Доброго всем. Хочу изобразить слайдер с цветной полоской, что получается:

Код: AutoIt [Выделить]
#include <WinAPI.au3>
#include <ComboConstants.au3>
#Include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <SliderConstants.au3>
#include <Constants.au3>
#include <TabConstants.au3>
#Include <WinAPIEx.au3>
#include <File.au3>
#include <GuiTab.au3>
#include <GDIPlus.au3>
Local $gui1 = GUICreate("", 400, 250, -1, -1)

GUIRegisterMsg($WM_HSCROLL, "WM_HVSCROLL")
GUIRegisterMsg($WM_VSCROLL, "WM_HVSCROLL")
Local $x = 3
Local $y = 75

_GDIPlus_Startup()
$hImage = _GDIPlus_BitmapCreateFromScan0(240, 5)
$hGraphics = _GDIPlus_ImageGetGraphicsContext($hImage)
$hBrush = _GDIPlus_BrushCreateSolid(0xFF00FF4d)
_GDIPlus_GraphicsFillRect($hGraphics, 0, 0, 240, 5, $hBrush)
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_BitmapDispose($hImage)
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_Shutdown()
$Pic1 = GUICtrlCreatePic("", $x + 130, $y+10, 240, 5)
$Pic2 = GUICtrlCreatePic("", $x + 130, $y+60, 240, 5)
Local $iSlider1 = GUICtrlCreateSlider($x + 130, $y, 240, 25)
Local $iSlider2 = GUICtrlCreateSlider($x + 130, $y+50, 240, 25)
GUICtrlSetStyle($iSlider1, BitOR(0x00001018, $WS_CHILD, $WS_VISIBLE))
GUICtrlSetStyle($iSlider2, BitOR(0x00001018, $WS_CHILD, $WS_VISIBLE))
;GUICtrlSetStyle($iSlider1, $TBS_NOTICKS, $WS_EX_TRANSPARENT)
;GUICtrlSetStyle($iSlider2, $TBS_NOTICKS, $WS_EX_TRANSPARENT)
GUICtrlSetLimit($iSlider1, 240)
GUICtrlSetLimit($iSlider2, 240)
GUISetState()
GUICtrlSendMsg($Pic1, 0x0172, 0, $hBitmap)
GUICtrlSendMsg($Pic2, 0x0172, 0, $hBitmap)

_WinAPI_DwmEnableBlurBehindWindow($gui1, 1, 1)
While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $iSlider1, $iSlider2
            ;_WinAPI_RedrawWindow($gui1)
            ;GUICtrlSendMsg($Pic1, 0x0172, 0, $hBitmap)
            ;GUICtrlSendMsg($Pic2, 0x0172, 0, $hBitmap)
    EndSwitch
WEnd

Func WM_HVSCROLL($hWnd, $MsgID, $wParam, $lParam)
    Switch $lparam
        Case GUICtrlGetHandle($iSlider1)
            Update()
        Case GUICtrlGetHandle($iSlider2)
            Update()
    EndSwitch
EndFunc

Func Update()
    GUICtrlSendMsg($Pic1, 0x0172, 0, $hBitmap)
    GUICtrlSetState($iSlider1, $GUI_ONTOP + $GUI_NOFOCUS)
    GUICtrlSendMsg($Pic2, 0x0172, 0, $hBitmap)
    GUICtrlSetState($iSlider2, $GUI_ONTOP + $GUI_NOFOCUS)
EndFunc
 


Пока ползунок двигаешь, полоска перекрывает его, как только отпустишь, всё как надо, красиво, аккуратно. Так же когда элемент теряет фокус, полоски исчезают. В общем хочу спросить совета у тех, кто что-то подобное уже делал и знает все нюансы, как это реализовать. Так же хочется, чтобы вокруг слайдера не рисовалась рамка, выделяющая его, какой для этого нужен стиль.
8
Цитировать
Спасибо. Сори, не понял как применить?
Подключаете UDF к скрипту
Код: AutoIt [Выделить]
#include <Restart.au3>

и когда нужен рестарт скрипта вызываете функцию
Код: AutoIt [Выделить]
_ScriptRestart()

9
да нет все проше. там дерево файлов и папок в сетевой шаре. и там много -много уровней вложенности. и мне надо обработать каждый файл. а именно - скормить его конвертилке
10
памяти будет занято сколько сам размер файла. и если он большой, то и читаться в память будет дольше
вот поэтому можно через чтение строк.
а что за файл? может там структура типа ini?
Страницы: [1] 2 3 ... 10