Что нового

[Мышь, клавиатура] Отобразить клик

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Код:
#include <Misc.au3>
#include <WinAPISys.au3>
#include <GuiConstants.au3>

$GUI = GUICreate("", 25, 25, 0, 0, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW, $WS_EX_TRANSPARENT, $WS_EX_LAYERED))
GUISetBkColor(0xABCDEF)
_WinAPI_SetLayeredWindowAttributes($GUI, 0xABCDEF, 0, $LWA_COLORKEY)
GUICtrlCreateGraphic(0, 0, 25, 25)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetGraphic(-1, $GUI_GR_PENSIZE, 5)
GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xFF8080) ; цвет круга
GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 2, 2, 21, 21)

While Sleep(10)
  If _IsPressed("01") Then
    GUISetState(@SW_SHOWNA)
    While _IsPressed("01")
      WinSetOnTop($GUI, "", 1)
      $Pos = MouseGetPos()
      WinMove($GUI, "", $Pos[0] - 12, $Pos[1] - 12)
      Sleep(10)
    WEnd
    GUISetState(@SW_HIDE)
  EndIf
WEnd
 

Dima1337

Осваивающий
Сообщения
186
Репутация
24
Цвет и размер понятно, но вот как бы прозрачности не много добавить?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Dima1337 [?]
как бы прозрачности не много добавить?
Код:
#include <Misc.au3>
#include <WinAPI.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>

Global $hGUI, $iX, $iY

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

$hGUI = GUICreate('', 25, 25, 0, 0, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW, $WS_EX_TRANSPARENT, $WS_EX_LAYERED))
GUISetBkColor(0xABCDEF)
GUICtrlCreateGraphic(0, 0, 25, 25)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetGraphic(-1, $GUI_GR_PENSIZE, 5)
GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xFF0000)
GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 2, 2, 21, 21)
_WinAPI_SetLayeredWindowAttributes($hGUI, 0xABCDEF, 50);50 - прозрачность

While Sleep(10)
	If _IsPressed('01') Then
		GUISetState(@SW_SHOWNOACTIVATE, $hGUI)
		While _IsPressed('01')
			If __NewPos($iX, $iY) Then WinMove($hGUI, '', $iX, $iY)
			Sleep(10)
		WEnd
		GUISetState(@SW_HIDE, $hGUI)
	EndIf
WEnd

Func __NewPos(ByRef $i_X, ByRef $i_Y)
	Local $a_Pos, $i_Ret
	$a_Pos = MouseGetPos()
	If $i_X <> $a_Pos[0] Then
		$i_X = $a_Pos[0] - 12
		$i_Ret = 1
	EndIf
	If $i_Y <> $a_Pos[1] Then
		$i_Y = $a_Pos[1] - 12
		$i_Ret = 1
	EndIf
	Return $i_Ret
EndFunc   ;==>__NewPos

Func _Exit()
	Exit
EndFunc   ;==>_Exit
 
Автор
zelich

zelich

Новичок
Сообщения
149
Репутация
0
madmasles, огромное спасибо!
А спросить как сделать несколько кликов уже наглость?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Мой вариант:

Код:
#NoTrayIcon
#include <GUIConstantsEx.au3>
#include <WinAPISys.au3>
#include <MouseOnEvent.au3>

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

Global $fClick = False
Global $fFull = True
Global $iThickness = 4
Global $iSize = 22
Global $iDuration = 100
Global $nColor = 0xFF8080
Global $nInColor = 0xFFFFFF
Global $iTransparency = 255 ;Set Lower for transparency
Global $sSound = @WindowsDir & '\Media\Windows Navigation Start.wav'

$hGUI = GUICreate('', $iSize, $iSize, 0, 0, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW, $WS_EX_TRANSPARENT, $WS_EX_LAYERED))
GUISetBkColor(0xABCDEF, $hGUI)
_WinAPI_SetLayeredWindowAttributes($hGUI, 0xABCDEF, $iTransparency)

GUICtrlCreateGraphic(0, 0, $iSize, $iSize)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetGraphic(-1, $GUI_GR_PENSIZE, $iThickness)
GUICtrlSetGraphic(-1, $GUI_GR_COLOR, $nColor)
GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 2, 2, $iSize - 4, $iSize - 4)

If $fFull Then
	GUICtrlCreateGraphic($iThickness, $iThickness, $iSize - ($iThickness * 2), $iSize - ($iThickness * 2))
	GUICtrlSetState(-1, $GUI_DISABLE)
	GUICtrlSetGraphic(-1, $GUI_GR_PENSIZE, $iThickness * 2)
	GUICtrlSetGraphic(-1, $GUI_GR_COLOR, $nInColor)
	GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 2, 2, $iSize - ($iThickness * 2) - 4, $iSize - ($iThickness * 2) - 4)
EndIf

_MouseSetOnEvent($MOUSE_PRIMARYDOWN_EVENT, '_Mouse_Events')
_MouseSetOnEvent($MOUSE_PRIMARYUP_EVENT, '_Mouse_Events')
_MouseSetOnEvent($MOUSE_MOVE_EVENT, '_Mouse_Events')

While 1
	If $fClick Then
		$fClick = False
		
		If $sSound Then
			SoundPlay($sSound)
		EndIf
		
		$aMPos = MouseGetPos()
		WinMove($hGUI, '', $aMPos[0] - ($iSize / 2), $aMPos[1] - ($iSize / 2))
		GUISetState(@SW_SHOWNA, $hGUI)
		Sleep($iDuration)
		GUISetState(@SW_HIDE, $hGUI)
	EndIf
	
	Sleep(10)
WEnd

Func _Mouse_Events($iEvent)
	Switch $iEvent
		Case $MOUSE_PRIMARYUP_EVENT
			$fClick = True
		Case $MOUSE_MOVE_EVENT, $MOUSE_PRIMARYDOWN_EVENT
			GUISetState(@SW_HIDE, $hGUI)
			;SoundPlay('')
	EndSwitch
EndFunc

Func _Exit()
	Exit
EndFunc


Нужна библиотека MouseOnEvent - Обработка событии мышки.
 
Автор
zelich

zelich

Новичок
Сообщения
149
Репутация
0
madmasles
Мне на словах объяснить, я сам допишу...


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

CreatoR, спасибо
 
Автор
zelich

zelich

Новичок
Сообщения
149
Репутация
0
madmasles,
Что нужно дописать в скрипт InnI, что отображалось два клика?

Код:
#include <Misc.au3>
#include <WinAPISys.au3>
#include <GuiConstants.au3>

$GUI = GUICreate("", 25, 25, 0, 0, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW, $WS_EX_TRANSPARENT, $WS_EX_LAYERED))
GUISetBkColor(0xABCDEF)
_WinAPI_SetLayeredWindowAttributes($GUI, 0xABCDEF, 0, $LWA_COLORKEY)
GUICtrlCreateGraphic(0, 0, 25, 25)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetGraphic(-1, $GUI_GR_PENSIZE, 5)
GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xFF8080) ; цвет круга
GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 2, 2, 21, 21)

While Sleep(10)
  If _IsPressed("01") Then
    GUISetState(@SW_SHOWNA)
    While _IsPressed("01")
      WinSetOnTop($GUI, "", 1)
      $Pos = MouseGetPos()
      WinMove($GUI, "", $Pos[0] - 12, $Pos[1] - 12)
      Sleep(10)
    WEnd
    GUISetState(@SW_HIDE)
  EndIf
WEnd


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


Извиняюсь за долгий ответ
 
Автор
zelich

zelich

Новичок
Сообщения
149
Репутация
0
Подскажите пожалуйста!
Есть скрипт:
Код:
TraySetToolTip('Did I Click')

#include <Misc.au3>
#include <WinAPI.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>

#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>

Global $hGUI, $iX, $iY
Global $sSound = @WindowsDir & '\Media\Windows Navigation Start.wav'
Global $s
Local $s1
$t = InputBox('Did I Click', "Звук. 1— есть" & @CRLF, '', '', 150, 130)
If $t <> '1' Then
   $t= 0
EndIf

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

$hGUI = GUICreate('', 25, 25, 0, 0, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW, $WS_EX_TRANSPARENT, $WS_EX_LAYERED))
GUISetBkColor(0xABCDEF)
GUICtrlCreateGraphic(0, 0, 20, 20)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetGraphic(-1, $GUI_GR_PENSIZE, 4)
GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xFF0000) ; red
;~ GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00FF00) ; green
;~ GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x0000FF) ; blue
GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 4, 4, 16, 16)
_WinAPI_SetLayeredWindowAttributes($hGUI, 0xABCDEF, 95) ;95 - прозрачность

While Sleep(10)
    If _IsPressed('01') Then
        GUISetState(@SW_SHOWNOACTIVATE, $hGUI)
        While _IsPressed('01')
            If __NewPos($iX, $iY) Then WinMove($hGUI, '', $iX, $iY)
			         If $t= 1 Then
					 SoundPlay($sSound)
					 EndIf
            Sleep(10)
        WEnd
        GUISetState(@SW_HIDE, $hGUI)
    EndIf
WEnd

Func __NewPos(ByRef $i_X, ByRef $i_Y)
    Local $a_Pos, $i_Ret
    $a_Pos = MouseGetPos()
    If $i_X <> $a_Pos[0] Then
        $i_X = $a_Pos[0] - 12
        $i_Ret = 1
    EndIf
    If $i_Y <> $a_Pos[1] Then
        $i_Y = $a_Pos[1] - 12
        $i_Ret = 1
    EndIf
    Return $i_Ret
EndFunc   ;==>__NewPos

Func _Exit()
    Exit
EndFunc   ;==>_Exit


Сейчас при вызове ввод данных 0/1. Хочу сделать checkbox.
16219266bd6b8f50974abffbe20cf97a.jpg

Где можно посмотреть примеры/образцы, чтоб сделать?
 
Автор
zelich

zelich

Новичок
Сообщения
149
Репутация
0
CreatoR сказал(а):
Вот сделал на основе этого утилиту SMC - Отображение клика мышки.
В вашей утилите не отображается "продолжительный" клик и если выставить большое значение Transparency и во время клика (его отображения) сдвинуть мышку- отображение клика сразу исчезает... Как это "победить"?
 
Автор
zelich

zelich

Новичок
Сообщения
149
Репутация
0
CreatoR сказал(а):
Закоментировать:
Код:
Case $MOUSE_MOVE_EVENT
			GUISetState(@SW_HIDE, $hCircle_GUI)

Спасибо!
Теперь при движении "клик" не исчезает, но остается на месте...
 

CreatoR

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

Код:
Case $MOUSE_MOVE_EVENT
			$aMPos = MouseGetPos()
			WinMove($hCircle_GUI, '', $aMPos[0] - ($iSize / 2), $aMPos[1] - ($iSize / 2), $iSize, $iSize)
 
Автор
zelich

zelich

Новичок
Сообщения
149
Репутация
0
CreatoR. опять спасиб!
Еще один вопрос: продолжительный клик т.е. нажал и подержал. Ещё помогите пожалуйста с этим
 
Автор
zelich

zelich

Новичок
Сообщения
149
Репутация
0
CreatoR
Вот теперь точно всё!
ОГРОМНОЕ спасибо!!!
 
Верх