Что нового

Рисовка рамки вокруг окна

z3xix13

Новичок
Сообщения
7
Репутация
0
Помогите пожалуйста сделать рисовку рамки вокруг окна при определенных условиях.
Пример рамки:




Надо например так:

If 1=1 Then
Рисует рамку вокруг активного окна (если условия не соблюдаются рамка пропадет)
endif
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
во первых, объясни пож-та смысл своего ника.
во вторых, что значит определенное условие? почему бы сразу не написать это самое условие?
 
Автор
Z

z3xix13

Новичок
Сообщения
7
Репутация
0
Ну смысла в нике особо нету я его сделал когда мне было 12 лет, взял из игры NFS UNDERGROUND 2 там название дисков было z3xix а 13 мое любимое число.

По теме: я написал чтобы при таком условии :

if 1=1 then
рисовка рамки вокруг активного окна
endif




Добавлено:
Сообщение автоматически объединено:

нашел скрипт который при наводке курсора делает рамку вокруг контролсов и вокруг окна. Помогите мне из этого соорудить подсветку окна при условии.


вот скрипт
Код:
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>

Opt("GuiOnEventMode", 1)
HotKeySet("{ESC}", "QuitApp")

If Not IsDeclared("WM_WINDOWPOSCHANGED") Then Assign("WM_WINDOWPOSCHANGED",0x0047)
Global $ahGUI[4]
Global $Last_hControl = -1

Global $Frame_Color = 0xff0000;0xFF0000
Global $Frame_Width = 5
Global $hCtrl
$Main_GUI = GuiCreate("Highlight Controls Demo")
GUISetOnEvent($GUI_EVENT_CLOSE, "QuitApp")
GUIRegisterMsg($WM_WINDOWPOSCHANGED, "WM_WINDOWPOSCHANGED")


GUICtrlCreateButton("Button", 20, 20)
GUICtrlCreateCheckbox("CheckBox", 20, 60)
GUICtrlCreateEdit("", 120, 60, 240, 150)


GUICtrlCreateLabel("Info: ", 20, 250)
GUICtrlSetFont(-1, 9, 800)
$Info_Label = GUICtrlCreateLabel("", 120, 270, 250, 80)

GUISetState()

While 1
    Sleep(100)

    $hCtrl = _ControlGetHovered()

    If $hCtrl <> 0 And $Last_hControl <> $hCtrl And Not IsHighLight_GUIs($hCtrl) Then
        if not _IsPressed("1") Then
            $Last_hControl = $hCtrl
            $aCtrlPos = WinGetPos($hCtrl)

            GUICtrlSetData($Info_Label, _
                    "X = " & $aCtrlPos[0] & @CRLF & _
                    "Y = " & $aCtrlPos[1] & @CRLF & _
                    "W = " & $aCtrlPos[2] & @CRLF & _
                    "H = " & $aCtrlPos[3] & @CRLF & _
                    "Control Data = " & ControlGetText($hCtrl, "", ""))

            GUISquareDelete()
            GUICreateSquare($aCtrlPos[0], $aCtrlPos[1], $aCtrlPos[2], $aCtrlPos[3])
        EndIf
    Else
        $aNewCtrlPos = WinGetPos($hCtrl)
        for $n = 0 to 3
            if $aCtrlPos[$n] <> $aNewCtrlPos[$n] Then
                GUISquareDelete()
                $hCtrl = 0
                $Last_hControl = 0
                ExitLoop
            EndIf
        Next
    EndIf
WEnd

Func GUICreateSquare($X, $Y, $W, $H)
    $X -= $Frame_Width
    $Y -= $Frame_Width
    $W += $Frame_Width
    $H += $Frame_Width
    $ahGUI[0] = GUICreate("", $W, $Frame_Width, $X, $Y, $WS_POPUP, $WS_EX_TOPMOST+$WS_EX_TOOLWINDOW)
    GUISetBkColor($Frame_Color)

    $ahGUI[1] = GUICreate("", $Frame_Width, $H, $X, $Y, $WS_POPUP, $WS_EX_TOPMOST+$WS_EX_TOOLWINDOW)
    GUISetBkColor($Frame_Color)

    $ahGUI[2] = GUICreate("", $Frame_Width, $H, $X+$W, $Y, $WS_POPUP, $WS_EX_TOPMOST+$WS_EX_TOOLWINDOW)
    GUISetBkColor($Frame_Color)

    $ahGUI[3] = GUICreate("", $W+$Frame_Width, $Frame_Width, $X, $Y+$H, $WS_POPUP, $WS_EX_TOPMOST+$WS_EX_TOOLWINDOW)
    GUISetBkColor($Frame_Color)

    For $i = 0 To 3
        GUISetState(@SW_SHOW, $ahGUI[$i])
    Next
EndFunc

Func GUISquareDelete()
    For $i = 0 To 3
        If IsHWnd($ahGUI[$i]) And $ahGUI[$i] <> $Main_GUI Then GUIDelete($ahGUI[$i])
    Next

    $ahGUI = ""
    Dim $ahGUI[4]
EndFunc

Func IsHighLight_GUIs($hCtrl)
    For $i = 0 To 3
        If $ahGUI[$i] = $hCtrl Then Return True
    Next
    Return False
EndFunc

Func _ControlGetHovered()
    Local $aRet = DllCall("user32.dll", "int", "WindowFromPoint", "long", MouseGetPos(0), "long", MouseGetPos(1))
    If Not IsArray($aRet) Then Return SetError(1, 0, 0)
    Return HWnd($aRet[0])
EndFunc


Func WM_WINDOWPOSCHANGED($hWndGUI, $MsgID, $WParam, $LParam)
    If $hWndGUI = $Main_GUI or $hWndGUI = $hCtrl Then
        GUISquareDelete()
        $Last_hControl = -1
    Else
        Return $GUI_RUNDEFMSG
    EndIf
EndFunc

Func QuitApp()
    Exit
EndFunc
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
z3xix13,
Окнами.
Код:
#NoTrayIcon
#include <Misc.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>

Opt('TrayMenuMode', 1)
Opt('MustDeclareVars', 1)

Global $aGUI[4]

HotKeySet('{ESC}', '_Exit')

For $i = 0 To 3
	$aGUI[$i] = GUICreate('', 0, 0, 0, 0, $WS_POPUP, _
			BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
	GUISetBkColor(0xFF0000, $aGUI[$i])
	GUISetState(@SW_HIDE, $aGUI[$i])
Next

While 1
	If _IsPressed('01') Then ;левая кнопка мыши
		_DrawWindow()
		While _IsPressed('01')
			Sleep(10)
		WEnd
		_DrawWindowHide()
	EndIf
	Sleep(50)
WEnd

Func _DrawWindowHide()
	For $i = 0 To 3
		GUISetState(@SW_HIDE, $aGUI[$i])
	Next
EndFunc   ;==>_DrawWindowHide

Func _DrawWindow()
	Local $hWin, $aPos

	$hWin = WinGetHandle('[ACTIVE]')
	If Not $hWin Then Return
	$aPos = WinGetPos($hWin)
	If @error Then Return
	WinMove($aGUI[0], '', $aPos[0], $aPos[1], 3, $aPos[3])
	WinMove($aGUI[1], '', $aPos[0], $aPos[1], $aPos[2], 3)
	WinMove($aGUI[2], '', $aPos[0] + $aPos[2], $aPos[1], 3, $aPos[3])
	WinMove($aGUI[3], '', $aPos[0], $aPos[1] + $aPos[3], $aPos[2] + 3, 3)
	For $i = 0 To 3
		GUISetState(@SW_SHOWNOACTIVATE, $aGUI[$i])
		WinSetOnTop($aGUI[$i], '', 1)
	Next
EndFunc   ;==>_DrawWindow

Func _Exit()
	Exit
EndFunc   ;==>_Exit

Элементами Label.
Код:
#NoTrayIcon
#include <WinAPIEx.au3>
#include <Misc.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>

Opt('TrayMenuMode', 1)
Opt('MustDeclareVars', 1)

Global $hGUI, $nLeft, $nTop, $nRight, $nBottom

HotKeySet('{ESC}', '_Exit')

$hGUI = GUICreate('Test', @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP, _
		BitOR($WS_EX_LAYERED, $WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
GUISetBkColor(0xFFFFFF)
$nLeft = GUICtrlCreateLabel('', 0, 0)
$nTop = GUICtrlCreateLabel('', 0, 0)
$nRight = GUICtrlCreateLabel('', 0, 0)
$nBottom = GUICtrlCreateLabel('', 0, 0)
For $i = $nLeft To $nBottom
	GUICtrlSetBkColor($i, 0xFF0000)
	GUICtrlSetState($i, $GUI_HIDE)
Next
GUISetState()
_WinAPI_SetLayeredWindowAttributes($hGUI, 0xFFFFFF, 0, $LWA_COLORKEY)
_WinAPI_EmptyWorkingSet()

While 1
	If _IsPressed('01') Then ;левая кнопка мыши
		_DrawWindow()
		While _IsPressed('01')
			Sleep(10)
		WEnd
		_DrawWindowHide()
	EndIf
	Sleep(50)
WEnd

Func _DrawWindowHide()
	For $i = $nLeft To $nBottom
		GUICtrlSetState($i, $GUI_HIDE)
	Next
EndFunc   ;==>_DrawWindowHide

Func _DrawWindow()
	Local $hWin, $aPos

	$hWin = WinGetHandle('[ACTIVE]')
	If Not $hWin Then Return
	$aPos = WinGetPos($hWin)
	If @error Then Return
	For $i = $nLeft To $nBottom
		GUICtrlSetState($i, $GUI_HIDE)
	Next
	GUICtrlSetPos($nLeft, $aPos[0], $aPos[1], 3, $aPos[3])
	GUICtrlSetPos($nTop, $aPos[0], $aPos[1], $aPos[2], 3)
	GUICtrlSetPos($nRight, $aPos[0] + $aPos[2], $aPos[1], 3, $aPos[3])
	GUICtrlSetPos($nBottom, $aPos[0], $aPos[1] + $aPos[3], $aPos[2] + 3, 3)
	For $i = $nLeft To $nBottom
		GUICtrlSetState($i, $GUI_SHOW)
	Next
	WinSetOnTop($hGUI, '', 1)
EndFunc   ;==>_DrawWindow

Func _Exit()
	Exit
EndFunc   ;==>_Exit
Оба скрипта создают рамку вокруг активного окна при нажатой левой кнопке мыши.
z3xix13 [?]
Используйте тег AutoIt.
 
Автор
Z

z3xix13

Новичок
Сообщения
7
Репутация
0
Спасибо буду пробовать сделать что хочу )
 
Автор
Z

z3xix13

Новичок
Сообщения
7
Репутация
0
Спасибо, решено :IL_AutoIt_1:
 
Верх