CornerNotify > PleasantNotify
●Added Fade In, Fade Out animation when show, exit
●Round Corner
●Optimized SourceCode
●Added persistent mode for time parameter
●Can modify Width and Height
/ Tested on AutoHotkey_L 32bit v1.1.19.1
/ based on 'Corner Notify' by robertcollier4
/ Credits robertcollier4, Learning One, lagomorph, joedf and all AHK forum users
/ Last Modified by Soft 2015/01/23
Instruction
● To Create PleasantNotification
PleasantNotify(Title, Messages, width, height, position, time)
*Title - you can use variable, else must be String
*Messages - same as Title
*width - GUI width for PleasantNotify, if omited 700
*height - GUI height for PleasantNotify, if omitted 300
*position - GUI postion for PleasantNotify, it omitted bottom right corner
position argument syntax is to create a string with the following:
t=top, vc= vertical center, b=bottom
l=left, hc=horizontal center, r=right
*time - remaining time for PleasantNotify, if omitted 10
write "P" for Persistent remain, Notify_Destroy() to destroy
● To Destroy PleasantNotification GUI
Notify_Destroy()
● To Modify PleasantNotify's Title and Message
pn_mod_title(title)
pn_mod_msg(message)
Lib File
Code: Select all
PleasantNotify(title, message, pnW=700, pnH=300, position="b r", time=10) {
global pn_title, pn_msg, PN_hwnd, w, h
Notify_Destroy()
Gui, Notify: +AlwaysOnTop +ToolWindow -SysMenu -Caption +LastFound
PN_hwnd := WinExist()
WinSet, ExStyle, +0x20
WinSet, Transparent, 0
Gui, Notify: Color, 0xF2F2F0
Gui, Notify: Font, c0x07D82F s18 wBold, Segoe UI
Gui, Notify: Add, Text, % " x" 20 " y" 12 " w" pnW-20 " vpn_title", % title
Gui, Notify: Font, cBlack s15 wRegular
Gui, Notify: Add, Text, % " x" 20 " y" 56 " w" pnW-20 " h" pnH-56 " vpn_msg", % message
RealW := pnW + 50
RealH := pnH + 20
Gui, Notify: Show, W%RealW% H%RealH% NoActivate
WinMove(PN_hwnd, position)
if A_ScreenDPI = 96
WinSet, Region,0-0 w%pnW% h%pnH% R40-40,%A_ScriptName%
/* For Screen text size 125%
if A_ScreenDPI = 120
WinSet, Region, 0-0 w800 h230 R40-40, %A_ScriptName%
*/
winfade("ahk_id " PN_hwnd,210,5)
if (time <> "P")
{
Closetick := time*1000
SetTimer, ByeNotify, % Closetick
}
}
Notify_Destroy() {
global PN_hwnd
ByeNotify:
SetTimer, ByeNotify, Off
winfade("ahk_id " PN_hwnd,0,5)
Gui, Notify: Destroy
return
}
pn_mod_title(title) {
global pn_title
GuiControl, Notify: Text,pn_title, % title
}
pn_mod_msg(message) {
global pn_msg
GuiControl, Notify: Text,pn_msg, % message
}
WinMove(hwnd,position) {
SysGet, Mon, MonitorWorkArea
WinGetPos,ix,iy,w,h, ahk_id %hwnd%
x := InStr(position,"l") ? MonLeft : InStr(position,"hc") ? (MonRight-w)/2 : InStr(position,"r") ? MonRight - w : ix
y := InStr(position,"t") ? MonTop : InStr(position,"vc") ? (MonBottom-h)/2 : InStr(position,"b") ? MonBottom - h : iy
WinMove, ahk_id %hwnd%,,x,y
}
winfade(w:="",t:=128,i:=1,d:=10) {
w:=(w="")?("ahk_id " WinActive("A")):w
t:=(t>255)?255:(t<0)?0:t
WinGet,s,Transparent,%w%
s:=(s="")?255:s ;prevent trans unset bug
WinSet,Transparent,%s%,%w%
i:=(s<t)?abs(i):-1*abs(i)
while(k:=(i<0)?(s>t):(s<t)&&WinExist(w)) {
WinGet,s,Transparent,%w%
s+=i
WinSet,Transparent,%s%,%w%
sleep %d%
}
}
Code: Select all
#SingleInstance force
#NoEnv
PleasantNotify("PleasantNotify", "position vc hc, 3 seconds" , 600, 210, "vc hc", "6")
Sleep, 3000
pn_mod_title("you can change titles")
pn_mod_msg("Also messages")
Sleep, 3000
PleasantNotify("PleasantNotify", "position t hc" , 600, 210, "t hc", "3")
Sleep, 3000
PleasantNotify("PleasantNotify", "position b hc" , 600, 210, "b hc", "3")
Sleep, 3000
PleasantNotify("PleasantNotify", "position default, b r" , 600, 210, "b r", "3")
Sleep, 3000
PleasantNotify("PleasantNotify", "position b l" , 600, 210, "b l", "3")
Sleep, 3000
PleasantNotify("PleasantNotify", "position t l" , 600, 210, "t l", "3")
Sleep, 3000
PleasantNotify("PleasantNotify", "position t r" , 600, 210, "t r", "3")
return
PleasantNotify(title, message, pnW=700, pnH=300, position="b r", time=10) {
global pn_title, pn_msg, PN_hwnd, w, h
Notify_Destroy()
Gui, Notify: +AlwaysOnTop +ToolWindow -SysMenu -Caption +LastFound
PN_hwnd := WinExist()
WinSet, ExStyle, +0x20
WinSet, Transparent, 0
Gui, Notify: Color, 0xF2F2F0
Gui, Notify: Font, c0x07D82F s18 wBold, Segoe UI
Gui, Notify: Add, Text, % " x" 20 " y" 12 " w" pnW-20 " vpn_title", % title
Gui, Notify: Font, cBlack s15 wRegular
Gui, Notify: Add, Text, % " x" 20 " y" 56 " w" pnW-20 " h" pnH-56 " vpn_msg", % message
RealW := pnW + 50
RealH := pnH + 20
Gui, Notify: Show, W%RealW% H%RealH% NoActivate
WinMove(PN_hwnd, position)
if A_ScreenDPI = 96
WinSet, Region,0-0 w%pnW% h%pnH% R40-40,%A_ScriptName%
/* For Screen text size 125%
if A_ScreenDPI = 120
WinSet, Region, 0-0 w800 h230 R40-40, %A_ScriptName%
*/
winfade("ahk_id " PN_hwnd,210,5)
if (time <> "P")
{
Closetick := time*1000
SetTimer, ByeNotify, % Closetick
}
}
Notify_Destroy() {
global PN_hwnd
ByeNotify:
SetTimer, ByeNotify, Off
winfade("ahk_id " PN_hwnd,0,5)
Gui, Notify: Destroy
return
}
pn_mod_title(title) {
global pn_title
GuiControl, Notify: Text,pn_title, % title
}
pn_mod_msg(message) {
global pn_msg
GuiControl, Notify: Text,pn_msg, % message
}
WinMove(hwnd,position) {
SysGet, Mon, MonitorWorkArea
WinGetPos,ix,iy,w,h, ahk_id %hwnd%
x := InStr(position,"l") ? MonLeft : InStr(position,"hc") ? (MonRight-w)/2 : InStr(position,"r") ? MonRight - w : ix
y := InStr(position,"t") ? MonTop : InStr(position,"vc") ? (MonBottom-h)/2 : InStr(position,"b") ? MonBottom - h : iy
WinMove, ahk_id %hwnd%,,x,y
}
winfade(w:="",t:=128,i:=1,d:=10) {
w:=(w="")?("ahk_id " WinActive("A")):w
t:=(t>255)?255:(t<0)?0:t
WinGet,s,Transparent,%w%
s:=(s="")?255:s ;prevent trans unset bug
WinSet,Transparent,%s%,%w%
i:=(s<t)?abs(i):-1*abs(i)
while(k:=(i<0)?(s>t):(s<t)&&WinExist(w)) {
WinGet,s,Transparent,%w%
s+=i
WinSet,Transparent,%s%,%w%
sleep %d%
}
}
Reference
CornerNotify http://www.autohotkey.com/board/topic/9 ... nernotify/
WinMove http://www.autohotkey.com/board/topic/7 ... ntry461385
Winfade http://ahkscript.org/boards/viewtopic.php?f=6&t=512