Что нового

[Окна, Диалоги] Точка посередине экрана

Сообщения
31
Репутация
-4
Всем привет!
Мне нужен скрипт который бы создавал по середине экрана точку зеленого цвета!
Чтобы она появлялась после нажатия F5 и выключалась на F6
Зарание спасибо!
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Код:
#include <WindowsConstants.au3>

Global $hDot_GUI
Global $iDot_Width = 10 ;Ширина точки
Global $iDot_Height = 10 ;Высота точки

HotKeySet("{ESC}", "_Quit")
HotKeySet("{F5}", "_DotGUI_Show")
HotKeySet("{F6}", "_DotGUI_Hide")

$hDot_GUI = GUICreate("", 10, 10, -1, -1, $WS_POPUP, $WS_EX_TOPMOST)
GUISetBkColor(0x008000)

While 1
	Sleep(10)
WEnd

Func _Quit()
	Exit
EndFunc

Func _DotGUI_Show()
	GUISetState(@SW_SHOWNOACTIVATE, $hDot_GUI)
EndFunc

Func _DotGUI_Hide()
	GUISetState(@SW_HIDE, $hDot_GUI)
EndFunc
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
БЕШАННЫЙ [?]
можно ещо для премера с 2 - 3 кнопки смени цвета?
Код:
#NoTrayIcon
#include <WindowsConstants.au3>
#include <WinAPI.au3>

Global $iDot_Round = 1 ;Задаёт форму точки (1 - круг, 0 - квадрат).
Global $iDot_Width = 5 ;Ширина точки
Global $iDot_Height = 5 ;Высота точки
Global $sDot_Colors = "0x008000|0xFF0000|0x0000FF" ;Цвета точки

Global $iDot_Color_Index = 1
Global $aDot_Colors = StringSplit($sDot_Colors, "|")
Global $hDot_GUI

HotKeySet("{ESC}", "_Quit")
HotKeySet("{F4}", "_DotGUI_SwitchColor")
HotKeySet("{F5}", "_DotGUI_Show")
HotKeySet("{F6}", "_DotGUI_Hide")

$hDot_GUI = GUICreate("", $iDot_Width, $iDot_Height, -1, -1, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))
_DotGUI_SwitchColor(1)

If $iDot_Round Then
	$hRegion = _WinAPI_CreateRoundRectRgn(0, 0, $iDot_Width, $iDot_Height, $iDot_Width, $iDot_Height)
	_WinAPI_SetWindowRgn($hDot_GUI, $hRegion)
EndIf

While 1
    Sleep(10)
WEnd

Func _Quit()
    Exit
EndFunc

Func _DotGUI_SwitchColor($iFlag = 0)
    If Eval('iFlag') = 0 And Not BitAND(WinGetState($hDot_GUI), 2) Then
        Return
    EndIf
    
    GUISetBkColor($aDot_Colors[$iDot_Color_Index], $hDot_GUI)
    
    $iDot_Color_Index += 1
    
    If $iDot_Color_Index > $aDot_Colors[0] Then
        $iDot_Color_Index = 1
    EndIf
EndFunc

Func _DotGUI_Show()
    GUISetState(@SW_SHOWNOACTIVATE, $hDot_GUI)
EndFunc

Func _DotGUI_Hide()
    GUISetState(@SW_HIDE, $hDot_GUI)
EndFunc


Переключение цвета по F4, цвета задаются в переменной $sDot_Colors через разделитель |.
 
Автор
Б
Сообщения
31
Репутация
-4
Понятно большое спасибо!
А какой тег отвечает за форму ну допустим что бы это был не квадрат а кружок?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
БЕШАННЫЙ [?]
какой тег отвечает за форму ну допустим что бы это был не квадрат а кружок?
Нету такого “тега”, чтобы сделать кружок нужно обрезать GUI, т.к по сути эта точка это обычное окно.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
БЕШАННЫЙ
А так и круг есть, и похулиганить можно. ;D
Код:
#NoTrayIcon
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WinAPI.au3>

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

$hDot_GUI = GUICreate('', 50, 50, -1, -1, $WS_POPUP, BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
GUISetBkColor(0xFF0000)
;GUICtrlCreateLabel('Поймай!', 0, 17, 50, 16, $SS_CENTER)
GUISetState(@SW_SHOWNOACTIVATE, $hDot_GUI)
$hRgn = _WinAPI_CreateRoundRectRgn(0, 0, 50, 50, 50, 50)
_WinAPI_SetWindowRgn($hDot_GUI, $hRgn)

While 1
	$aWinPos = WinGetPos($hDot_GUI)
	$aMousePos = MouseGetPos()

	If $aWinPos[0] - $aMousePos[0] < 10 And $aWinPos[0] - $aMousePos[0] > 0 - $aWinPos[2] Then
		If $aWinPos[1] - $aMousePos[1] < 10 And $aWinPos[1] - $aMousePos[1] > 0 - $aWinPos[3] Then
			WinMove($hDot_GUI, '', Random(10, @DesktopWidth - 60, 1), _
					Random(10, @DesktopHeight - 60, 1))
		ElseIf $aMousePos[1] - ($aWinPos[1] + $aWinPos[3]) < 10 And _
				$aMousePos[1] - ($aWinPos[1] + $aWinPos[3]) > 0 Then
			WinMove($hDot_GUI, '', Random(10, @DesktopWidth - 60, 1), _
					Random(10, @DesktopHeight - 60, 1))
		EndIf
	ElseIf $aMousePos[0] - ($aWinPos[0] + $aWinPos[2]) < 10 And _
			$aMousePos[0] - ($aWinPos[0] + $aWinPos[2]) > 0 Then
		If $aWinPos[1] - $aMousePos[1] < 10 And $aWinPos[1] - $aMousePos[1] > 0 - $aWinPos[3] Then
			WinMove($hDot_GUI, '', Random(10, @DesktopWidth - 60, 1), _
					Random(10, @DesktopHeight - 60, 1))
		ElseIf $aMousePos[1] - ($aWinPos[1] + $aWinPos[3]) < 10 And _
				$aMousePos[1] - ($aWinPos[1] + $aWinPos[3]) > 0 Then
			WinMove($hDot_GUI, '', Random(10, @DesktopWidth - 60, 1), _
					Random(10, @DesktopHeight - 60, 1))
		EndIf
	EndIf
	Sleep(10)
WEnd

Func _Quit()
	Exit
EndFunc   ;==>_Quit
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
madmasles [?]
и похулиганить можно
А зачем тогда мыш проверять?
Код:
...

GUICtrlCreateLabel('Поймай!', 0, 0, 50, 50, BitOR($SS_CENTER, $SS_CENTERIMAGE))

...

While 1
	$aCursor = GUIGetCursorInfo($hDot_GUI)
	
    If $aCursor[4] <> 0 Then
		WinMove($hDot_GUI, '', Random(10, @DesktopWidth - 110, 1), Random(10, @DesktopHeight - 60, 1))
    EndIf
	
    Sleep(10)
WEnd
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
CreatoR [?]
А зачем тогда мыш проверять?
Я надпись "Поймай" в самом конце добавил.
Вы, как всегда, правы, :smile: так, конечно, проще:
Код:
#NoTrayIcon
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WinAPI.au3>

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

$hDot_GUI = GUICreate('', 50, 50, -1, -1, $WS_POPUP, BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
GUISetBkColor(0xFF0000)
GUICtrlCreateLabel('Поймай!', 0, 0, 50, 50, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUISetState(@SW_SHOWNOACTIVATE, $hDot_GUI)
$hRgn = _WinAPI_CreateRoundRectRgn(0, 0, 50, 50, 50, 50)
_WinAPI_SetWindowRgn($hDot_GUI, $hRgn)

While 1
	$aCursor = GUIGetCursorInfo($hDot_GUI)
	If $aCursor[4] <> 0 Then
		WinMove($hDot_GUI, '', Random(10, @DesktopWidth - 60, 1), Random(10, @DesktopHeight - 60, 1))
		_ColorChange()
	EndIf
	Sleep(10)
WEnd

Func _ColorChange()
	GUISetBkColor(Random(0, 16777215, 1), $hDot_GUI)
EndFunc   ;==>_Color

Func _Quit()
	Exit
EndFunc   ;==>_Quit
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
madmasles [?]
Я надпись "Поймай" в самом конце добавил.
Ну можно и без неё, создать например пустой Label :smile:
Таке можно отслеживать указатель по _WinAPI_WindowFromPoint.

P.S
Что то мы уже в оффтопик перешли.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
OffTopic:
CreatoR [?]
можно отслеживать указатель по _WinAPI_WindowFromPoint
Код:
#NoTrayIcon
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WinAPI.au3>

HotKeySet('{ESC}', '_Quit')
Global $Struct = DllStructCreate($tagPoint)

$hDot_GUI = GUICreate('', 50, 50, -1, -1, $WS_POPUP, BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
GUISetBkColor(0xFF0000)
GUISetState(@SW_SHOWNOACTIVATE, $hDot_GUI)
$hRgn = _WinAPI_CreateRoundRectRgn(0, 0, 50, 50, 50, 50)
_WinAPI_SetWindowRgn($hDot_GUI, $hRgn)

While 1
	_Get_Pos()
	If _WinAPI_WindowFromPoint($Struct) = $hDot_GUI Then
		WinMove($hDot_GUI, '', Random(10, @DesktopWidth - 60, 1), Random(10, @DesktopHeight - 60, 1))
		_ColorChange()
	EndIf
	Sleep(10)
WEnd

Func _Quit()
	Exit
EndFunc   ;==>_Quit

Func _ColorChange()
	GUISetBkColor(Random(0, 16777215, 1), $hDot_GUI)
EndFunc   ;==>_ColorChange

Func _Get_Pos()
	DllStructSetData($Struct, "x", MouseGetPos(0))
	DllStructSetData($Struct, "y", MouseGetPos(1))
EndFunc   ;==>_Get_Pos
 
Автор
Б
Сообщения
31
Репутация
-4
Люди прошу прощения за свое нубство но я уже сижу в течение 2 чисов и пробую вставить ваш скрипт в программу
Код:
#include <GUIConstantsEx.au3>
#include <SliderConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 204, 259, 536, 214)
GUISetBkColor(0xFFFFFF)
$Slider1 = GUICtrlCreateSlider(8, 48, 190, 45)
$Slider2 = GUICtrlCreateSlider(8, 128, 190, 45)
$Slider3 = GUICtrlCreateSlider(8, 208, 190, 45)
$Label1 = GUICtrlCreateLabel("Размер точки", 16, 16, 107, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("Смещения в боки", 16, 96, 130, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$Label3 = GUICtrlCreateLabel("Смещения верх и вниз", 16, 184, 169, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd


Если кому то будет не трудно можете вписать этот скрипт в программу прописанную выше!
Код:
#NoTrayIcon
#include <WindowsConstants.au3>
#include <WinAPI.au3>

Global $iDot_Round = 1 ;Задаёт форму точки (1 - круг, 0 - квадрат).
Global $iDot_Width = 7 ;Ширина точки
Global $iDot_Height = 7 ;Высота точки
Global $sDot_Colors = "0x00FF00|0xFF0000|0xFFFF00|0x0000FF|0xFF00FF|0x00FFFF|0x000000" ;Цвета точки

Global $aDot_Colors = StringSplit($sDot_Colors, "|")
Global $iDot_Color_Index = 1

HotKeySet("{F8}", "_Quit")
HotKeySet("{F7}", "_DotGUI_SwitchColor")
HotKeySet("{F5}", "_DotGUI_Show")
HotKeySet("{F6}", "_DotGUI_Hide")

$hDot_GUI = GUICreate("", $iDot_Width, $iDot_Height, 837, 534, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))
_DotGUI_SwitchColor(1)

If $iDot_Round Then
    $hRegion = _WinAPI_CreateRoundRectRgn(0, 0, $iDot_Width, $iDot_Height, $iDot_Width, $iDot_Height)
    _WinAPI_SetWindowRgn($hDot_GUI, $hRegion)
EndIf

While 1
    Sleep(10)
WEnd

Func _Quit()
    Exit
EndFunc

Func _DotGUI_SwitchColor($iFlag = 0)
    If Eval('iFlag') = 0 And Not BitAND(WinGetState($hDot_GUI), 2) Then
        Return
    EndIf
    
    GUISetBkColor($aDot_Colors[$iDot_Color_Index], $hDot_GUI)
    
    $iDot_Color_Index += 1
    
    If $iDot_Color_Index > $aDot_Colors[0] Then
        $iDot_Color_Index = 1
    EndIf
EndFunc

Func _DotGUI_Show()
    GUISetState(@SW_SHOWNOACTIVATE, $hDot_GUI)
EndFunc

Func _DotGUI_Hide()
    GUISetState(@SW_HIDE, $hDot_GUI)
EndFunc

Зарание спасибо
P.s. я знаю я вас за сегодняшний день уже достал но просто уже не вижу выхода!
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
БЕШАННЫЙ [?]
можете вписать этот скрипт в программу прописанную выше!
Код:
#include <GUIConstantsEx.au3>
#include <SliderConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>

Global $iDot_Round = 1 ;Задаёт форму точки (1 - круг, 0 - квадрат).
Global $iDot_Width = 7 ;Ширина точки
Global $iDot_Height = 7 ;Высота точки
Global $sDot_Colors = "0x00FF00|0xFF0000|0xFFFF00|0x0000FF|0xFF00FF|0x00FFFF|0x000000" ;Цвета точки

Global $aDot_Colors = StringSplit($sDot_Colors, "|")
Global $iDot_Color_Index = 1
Global $hDot_GUI

HotKeySet("{F8}", "_Quit")
HotKeySet("{F7}", "_DotGUI_SwitchColor")
HotKeySet("{F5}", "_DotGUI_Show")
HotKeySet("{F6}", "_DotGUI_Hide")

$Form1 = GUICreate("Form1", 204, 259, 536, 214)
GUISetBkColor(0xFFFFFF)
$Slider1 = GUICtrlCreateSlider(8, 48, 190, 45)
GUICtrlSetData(-1, $iDot_Width)
$Slider2 = GUICtrlCreateSlider(8, 128, 190, 45)
GUICtrlSetData(-1, 50)
$Slider3 = GUICtrlCreateSlider(8, 208, 190, 45)
GUICtrlSetData(-1, 50)
$Label1 = GUICtrlCreateLabel("Размер точки", 16, 16, 107, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("Смещения в боки", 16, 96, 130, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$Label3 = GUICtrlCreateLabel("Смещения верх и вниз", 16, 184, 169, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)

_GUIDot_Create(0)

While 1
    $nMsg = GUIGetMsg()
	
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            _Quit()
		Case $Slider1 ;Размер точки
			$iDot_Width = GUICtrlRead($Slider1)
			$iDot_Height = $iDot_Width
			_GUIDot_Create(1)
		Case $Slider2 ;Смещения в боки
			$iLeft = GUICtrlRead($Slider2)
			
			If $iLeft < 50 Then
				_GUIDot_Create(1, (@DesktopWidth / 2) - ((50 - $iLeft) * 2))
			Else
				_GUIDot_Create(1, (@DesktopWidth / 2) + $iLeft)
			EndIf
		Case $Slider3 ;Смещения верх и вниз
			$iTop = GUICtrlRead($Slider3)
			
			If $iTop < 50 Then
				_GUIDot_Create(1, -1, (@DesktopHeight / 2) - ((50 - $iTop) * 2))
			Else
				_GUIDot_Create(1, -1, (@DesktopHeight / 2) + $iTop)
			EndIf
    EndSwitch
WEnd

Func _GUIDot_Create($iChangeSize = 0, $iLeft = -1, $iTop = -1)
	If $iChangeSize Then
		$aWinPos = WinGetPos($hDot_GUI)
		
		If $iLeft <> -1 Then $aWinPos[0] = $iLeft
		If $iTop <> -1 Then $aWinPos[1] = $iTop
		
		WinMove($hDot_GUI, "", $aWinPos[0], $aWinPos[1], $iDot_Width, $iDot_Height)
	Else
		$hDot_GUI = GUICreate("", $iDot_Width, $iDot_Height, 837, 534, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))
		_DotGUI_SwitchColor(1)
	EndIf
	
	If $iDot_Round Then
		Local $hRegion = _WinAPI_CreateRoundRectRgn(0, 0, $iDot_Width, $iDot_Height, $iDot_Width, $iDot_Height)
		_WinAPI_SetWindowRgn($hDot_GUI, $hRegion)
	EndIf
EndFunc

Func _Quit()
    Exit
EndFunc

Func _DotGUI_SwitchColor($iFlag = 0)
    If Eval('iFlag') = 0 And Not BitAND(WinGetState($hDot_GUI), 2) Then
        Return
    EndIf
    
    GUISetBkColor($aDot_Colors[$iDot_Color_Index], $hDot_GUI)
    
    $iDot_Color_Index += 1
    
    If $iDot_Color_Index > $aDot_Colors[0] Then
        $iDot_Color_Index = 1
    EndIf
EndFunc

Func _DotGUI_Show()
    GUISetState(@SW_SHOWNOACTIVATE, $hDot_GUI)
EndFunc

Func _DotGUI_Hide()
    GUISetState(@SW_HIDE, $hDot_GUI)
EndFunc
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
БЕШАННЫЙ
Или так попробовать:
Код:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <WinAPIEx.au3>

Global $iW = 50, _
		$iH = 50, _
		$iColor = 0xFF0000, _
		$iX_0 = (@DesktopWidth - $iW) / 2, _
		$iY_0 = (@DesktopHeight - $iH) / 2

$hGui = GUICreate('Test', 250, 330, 50, 50)
GUISetBkColor(0xF5F5DC)
$nLabel_R = GUICtrlCreateLabel('Диаметр точки', 10, 10, 230, 20, $SS_CENTER)
$nSlider_R = GUICtrlCreateSlider(10, 40, 230, 30)
GUICtrlSetLimit(-1, 150, 50)
$nLabel_W = GUICtrlCreateLabel('Смещение по горизонтали', 10, 80, 230, 20, $SS_CENTER)
$nSlider_W = GUICtrlCreateSlider(10, 110, 230, 30)
GUICtrlSetLimit(-1, @DesktopWidth - ($iW + 10), 10)
GUICtrlSetData(-1, (@DesktopWidth - ($iW + 10) + 10) / 2)
$nLabel_H = GUICtrlCreateLabel('Смещение по вертикали', 10, 150, 230, 20, $SS_CENTER)
$nSlider_H = GUICtrlCreateSlider(10, 180, 230, 30)
GUICtrlSetLimit(-1, @DesktopHeight - ($iH + 10), 10)
GUICtrlSetData(-1, (@DesktopHeight - ($iH + 10) + 10) / 2)
$nLabel_C = GUICtrlCreateLabel('Изменение цвета', 10, 220, 230, 20, $SS_CENTER)
$nSlider_C = GUICtrlCreateSlider(10, 250, 230, 30)
GUICtrlSetLimit(-1, 100, 0)
GUICtrlSetData(-1, 50)
$nButton_Go = GUICtrlCreateButton('Поехали', 75, 290, 100, 30)
GUICtrlSetFont(-1, 10, 800, 0, 'MS Sans Serif')
$nButton_Def = GUICtrlCreateButton('Default', 75, 290, 100, 30)
GUICtrlSetFont(-1, 10, 800, 0, 'MS Sans Serif')
GUICtrlSetState(-1, BitOR($GUI_HIDE, $GUI_DISABLE))
For $i = $nLabel_R To $nSlider_C
	GUICtrlSetFont($i, 10, 800, 0, 'MS Sans Serif')
	GUICtrlSetState($i, $GUI_DISABLE)
Next

$hGui_Round = GUICreate('', $iW, $iH, -1, -1, $WS_POPUP, BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
GUISetBkColor($iColor)
$hRgn = _WinAPI_CreateRoundRectRgn(0, 0, $iW, $iH, $iW, $iH)
_WinAPI_SetWindowRgn($hGui_Round, $hRgn)

GUISetState(@SW_SHOW, $hGui)

GUIRegisterMsg($WM_NCHITTEST, 'WM_NCHITTEST')

_WinAPI_EmptyWorkingSet()

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $nButton_Go
			GUISetState(@SW_DISABLE, $hGui)
			GUISetState(@SW_SHOWNOACTIVATE, $hGui_Round)
			GUICtrlSetState($nButton_Go, $GUI_HIDE)
			_GuiCircle($hGui_Round)
			For $i = $nLabel_R To $nSlider_C
				GUICtrlSetState($i, $GUI_ENABLE)
			Next
			GUICtrlSetState($nButton_Def, $GUI_SHOW)
			GUISetState(@SW_ENABLE, $hGui)
		Case $nSlider_R
			GUICtrlSetState($nButton_Def, $GUI_ENABLE)
			$aPos_R = WinGetPos($hGui_Round)
			$iR_New = GUICtrlRead($nSlider_R)
			GUICtrlSetLimit($nSlider_W, @DesktopWidth - ($iR_New + 10), 10)
			GUICtrlSetLimit($nSlider_H, @DesktopHeight - ($iR_New + 10), 10)
			WinMove($hGui_Round, '', $aPos_R[0] - ($iR_New - $aPos_R[2]) / 2, $aPos_R[1] - _
					($iR_New - $aPos_R[3]) / 2, $iR_New, $iR_New)
			$hRgn = _WinAPI_CreateRoundRectRgn(0, 0, $iR_New, $iR_New, $iR_New, $iR_New)
			_WinAPI_SetWindowRgn($hGui_Round, $hRgn)
		Case $nSlider_W
			GUICtrlSetState($nButton_Def, $GUI_ENABLE)
			$aPos_W = WinGetPos($hGui_Round)
			WinMove($hGui_Round, '', GUICtrlRead($nSlider_W), $aPos_W[1])
		Case $nSlider_H
			GUICtrlSetState($nButton_Def, $GUI_ENABLE)
			$aPos_H = WinGetPos($hGui_Round)
			WinMove($hGui_Round, '', $aPos_H[0], GUICtrlRead($nSlider_H))
		Case $nSlider_C
			GUICtrlSetState($nButton_Def, $GUI_ENABLE)
			_ColorChange($hGui_Round, GUICtrlRead($nSlider_C) * (16777215 / 100 - 100), GUICtrlRead($nSlider_C) * 16777215 / 100)
		Case $nButton_Def
			GUICtrlSetState($nButton_Def, $GUI_DISABLE)
			WinMove($hGui_Round, '', (@DesktopWidth - $iW) / 2, (@DesktopHeight - $iH) / 2, $iW, $iH)
			GUISetBkColor($iColor, $hGui_Round)
			$hRgn = _WinAPI_CreateRoundRectRgn(0, 0, $iW, $iH, $iW, $iH)
			_WinAPI_SetWindowRgn($hGui_Round, $hRgn)
			GUICtrlSetData($nSlider_W, (@DesktopWidth - ($iW + 10) + 10) / 2)
			GUICtrlSetLimit($nSlider_W, @DesktopWidth - ($iW + 10), 10)
			GUICtrlSetLimit($nSlider_H, @DesktopHeight - ($iH + 10), 10)
			GUICtrlSetData($nSlider_H, (@DesktopHeight - ($iH + 10) + 10) / 2)
			GUICtrlSetData($nSlider_R, 50)
			GUICtrlSetData($nSlider_C, 50)
	EndSwitch
WEnd

Func _GuiCircle($h_Gui)
	Local Const $degToRad = 3.14159265358979 / 180
	Local $iR = $iH * 5
	Local $iR_Spiral = $iR
	WinMove($h_Gui, '', $iX_0 + $iR, $iY_0)
	$i = 0
	While 1
		$i += 5
		$iR_Spiral = $iR - $i / 10
		If $iR_Spiral <= 0 Then
			GUISetBkColor($iColor, $h_Gui)
			ExitLoop
		EndIf
		If Not Mod($i, 100) Then _ColorChange($h_Gui)
		WinMove($h_Gui, '', $iX_0 + $iR_Spiral * Cos($i * $degToRad), $iY_0 + $iR_Spiral * Sin($i * $degToRad))
		Sleep(1)
	WEnd
	WinMove($hGui_Round, '', (@DesktopWidth - $iW) / 2, (@DesktopHeight - $iH) / 2, $iW, $iH)
EndFunc   ;==>_GuiCircle

Func _ColorChange($h_Win, $i_Min = 0, $i_Max = 16777215)
	GUISetBkColor(Random($i_Min, $i_Max, 1), $h_Win)
EndFunc   ;==>_ColorChange

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   ;==>WM_NCHITTEST
WinAPIEx.au3
 

TheDrum

Новичок
Сообщения
2
Репутация
0
Всем привет, спасбо за такой гайд, но я хотел спросить, можно ли, что бы точка эта, была вообще по верх всех окон? А то в игре Point Blank в полном экране она проподает, а в оконном нет, но в оконном не удобно(
 

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
TheDrum
Поверх игры нельзя!!! :smile: Читеров меньше!!! А то ПБ весь в читаках!
 
Верх