Что нового

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

z3xix13

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




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

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

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
во первых, объясни пож-та смысл своего ника.
во вторых, что значит определенное условие? почему бы сразу не написать это самое условие?
 
Автор
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,322
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
Спасибо буду пробовать сделать что хочу )
 
Верх