Что нового

Сообщение на экране по верх всех окон

Isn

Новичок
Сообщения
119
Репутация
3
Доброго времени суток, нашел полезный для себя скрипт, но ни как не могу дописать его, как вывести сообщение поверх всех окон и изменить цвет текста?
Код:
#include <Color.au3>
#Include <WinAPIEx.au3>
#Include <WindowsConstants.au3>
#include <WindowsConstants.au3>
#include <WindowsConstants.au3>
;-----------------------------------------------------------------------------------------------------------
$hForm = GUICreate('MessLockWin', 1000, 700, -1, -1, $WS_EX_TOPMOST, $WS_POPUP, $WS_EX_LAYERED)
;$hForm = GUICreate('MessLockWin', 1000, 700, -1, -1, 1, $WS_EX_TOPMOST)
GUISetBkColor(0xABABAB)
$iRedColor = _ColorGetRed( 0x8080ff )
$Label1 = GUICtrlCreateLabel("Текст...", 50, 50, 1000, 500)
GUICtrlSetFont(-1, 80, 700, 0, "MS Sans Serif")
GUISetState()
;-----------------------------------------------------------------------------------------------------------
_WinAPI_SetLayeredWindowAttributes($hForm, 0xABABAB, 255, BitOR($LWA_COLORKEY, $LWA_ALPHA))
_Exit()
;-----------------------------------------------------------------------------------------------------------
Do
Until GUIGetMsg() = -3
Exit
;-----------------------------------------------------------------------------------------------------------
Func _Exit()
	Sleep (3500)
	Exit
EndFunc
;-----------------------------------------------------------------------------------------------------------



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

По верх всех окон разобрался
Код:
;#NoTrayIcon
#include <Color.au3>
#Include <WinAPIEx.au3>
#Include <WindowsConstants.au3>
#include <WindowsConstants.au3>
#include <WindowsConstants.au3>
;-----------------------------------------------------------------------------------------------------------
$hForm = GUICreate('MessLockWin', 1000, 700, -1, -1, $WS_POPUP, $WS_EX_LAYERED)
WinSetOnTop("MessLockWin", "", 1)
GUISetBkColor(0xABABAB)
$iRedColor = _ColorGetRed( 0x8080ff )
$Label1 = GUICtrlCreateLabel("Текст...", 50, 50, 1000, 500)
GUICtrlSetFont(-1, 80, 700, 0, "MS Sans Serif")
GUISetState()
;-----------------------------------------------------------------------------------------------------------
_WinAPI_SetLayeredWindowAttributes($hForm, 0xABABAB, 255, BitOR($LWA_COLORKEY, $LWA_ALPHA))
_Exit()
;-----------------------------------------------------------------------------------------------------------
Do
Until GUIGetMsg() = -3
Exit
;-----------------------------------------------------------------------------------------------------------
Func _Exit()
	Sleep (4500)
	Exit
EndFunc
;-----------------------------------------------------------------------------------------------------------

Теперь бьюсь над изменением цвета текста.
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Замечания :naughty: :
1) Вместо:
Код:
WinSetOnTop("MessLockWin", "", 1)

можно добавить GUI стиль $WS_EX_TOPMOST.

2)
Код:
$iRedColor = _ColorGetRed( 0x8080ff )

Это не нужно, соотвецтвенно #include <Color.au3> тоже не нужно.

3) Достаточно 1 раз добавить #Include <WindowsConstants.au3>.

4) Вместо этого:
Код:
_Exit()
;-----------------------------------------------------------------------------------------------------------
Do
Until GUIGetMsg() = -3
Exit
;-----------------------------------------------------------------------------------------------------------
Func _Exit()
    Sleep (4500)
    Exit
EndFunc
;-----------------------------------------------------------------------------------------------------------

лучше просто написать:
Код:
Sleep(4500)

Вот:
Код:
#Include <WinAPIEx.au3>
#Include <WindowsConstants.au3>

$hForm = GUICreate('MessLockWin', 1000, 700, -1, -1, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_TOPMOST)
GUISetBkColor(0xABABAB)
$Label1 = GUICtrlCreateLabel("Текст...", 50, 50, 1000, 500)
GUICtrlSetFont(-1, 80, 700, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFF0000) ;Цвет (красный)
GUISetState()

_WinAPI_SetLayeredWindowAttributes($hForm, 0xABABAB, 255, BitOR($LWA_COLORKEY, $LWA_ALPHA))
Sleep(3000)


Вот ещё вариант (в виде функции):
Код:
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <FontConstants.au3>

_DrawText('Hello world', 80, 'Verdana', 0xFFFFFF, 3000)

;===================================================
; Параметры:	 $Text	 - Текст.
;				$Size	- Размер текста.
;				$Font	- Шрифт текста.
;				$Color	- Цвет текста.
;				$Time	- Время отображения текста.
;===================================================
Func _DrawText($Text, $Size, $Font, $Color, $Time)
	$tRECT = DllStructCreate($tagRect)
	DllStructSetData($tRECT, "Left", 0)
	DllStructSetData($tRECT, "Top", (@DesktopHeight / 2) - ($Size / 2))
	DllStructSetData($tRECT, "Right", @DesktopWidth)
	DllStructSetData($tRECT, "Bottom", @DesktopHeight)

	$hDC = _WinAPI_GetDC(0)
	$hFont = _WinAPI_CreateFont($Size, 0, 0, 0, 800, False, False, False, $DEFAULT_CHARSET, _
			$OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, $Font)
	$hOldFont = _WinAPI_SelectObject($hDC, $hFont)

	_WinAPI_SetTextColor($hDC, $Color)
	_WinAPI_SetBkColor($hDC, 0x000000)
	_WinAPI_SetBkMode($hDC, $TRANSPARENT)

	$init = TimerInit()
	Do
		_WinAPI_DrawText($hDC, $Text, $tRECT, $DT_CENTER)
		Sleep(100)
	Until TimerDiff($init) > $Time

	_WinAPI_SelectObject($hDC, $hOldFont)
	_WinAPI_DeleteObject($hFont)
	_WinAPI_ReleaseDC(0, $hDC)
	_WinAPI_InvalidateRect(0, 0)
	$tRECT = 0
EndFunc
 

axlwor

Скриптер
Сообщения
657
Репутация
147
:scratch:
Это зачем?
Код:
Do
    Sleep(3000)
    ExitLoop
Until False
 
Автор
Isn

Isn

Новичок
Сообщения
119
Репутация
3
Спасибо Zaramot, и всем кто откликнулся.
 
Верх