From all of us at MJT we wish you season’s greetings and a wonderful start to 2019.
Here’s a fun little script with a message from Macro Scheduler. Open Macro Scheduler (download the trial if you don’t already have it), click New to create a new macro and paste this code in and hit run.
OnEvent>key_down,VK27,0,Quit
SRT>Quit
SetControlText>Sparkler,TEdit,1,Complete
WaitWindowClosed>Sparkler
Wait>1
DeleteFile>%temp_dir%\Sparkler.scp
Exit>0
END>Quit
DeleteFile>%temp_dir%\Sparkler.scp
LabelToVar>SparkleScript,vScrData
WriteLn>%temp_dir%\Sparkler.scp,wres,vScrData
Dialog>Dialog1
object Dialog1: TForm
BorderStyle = bsNone
Caption = 'Happy Holidays'
ClientHeight = 330
ClientWidth = 780
Color = 111111
Position = poScreenCenter
object Panel3: TPanel
Left = 0
Top = 0
Width = 780
Height = 330
BevelEdges = []
BevelOuter = bvNone
Caption = 'And a Happy New Year'
Color = 111111
Font.Charset = ANSI_CHARSET
Font.Color = clRed
Font.Height = -80
Font.Name = 'Vladimir Script'
Font.Style = []
ParentFont = False
Visible = False
end
object Panel2: TPanel
Left = 0
Top = 0
Width = 780
Height = 330
BevelEdges = []
BevelOuter = bvNone
Caption = 'Merry Christmas'
Color = 111111
Font.Charset = ANSI_CHARSET
Font.Color = clRed
Font.Height = -96
Font.Name = 'Old English Text MT'
Font.Style = []
ParentFont = False
end
object Panel1: TPanel
Left = 0
Top = 0
Width = 780
Height = 330
BevelEdges = []
BevelOuter = bvNone
Caption = ''
Color = 111111
end
end
EndDialog>Dialog1
Show>Dialog1
ExecuteFile>%temp_dir%\Sparkler.scp
Let>WIN_USEHANDLE=1
GetWindowPos>Dialog1.handle,Dia1X,Dia1Y
Let>WIN_USEHANDLE=0
Add>Dia1Y,165
Let>StartY=Dia1Y
Let>YFlag=1
Wait>0.3
Let>kk=0
Repeat>kk
Add>kk,4
If>Dia1Y>{%StartY%+20}
Let>YFlag=0
EndIf
If>Dia1Y<{%StartY%-20}
Let>YFlag=1
EndIf
Add>Dia1X,4
If>YFlag=1
Add>Dia1Y,8
Else
Sub>Dia1Y,8
EndIf
Wait>0.025
If>Dia1X>40
SetControlText>Sparkler,TEdit,1,%Dia1X%;%Dia1Y%
EndIf
SetDialogProperty>Dialog1,Panel1,Left,kk
Until>kk>750
Timer>Begin
GetWindowPos>Sparkler,SparkX,SparkY
Label>Loop
If>{%Dia1X%<%SparkX%+150}
Add>Dia1X,1
EndIf
If>Dia1Y>StartY
Sub>Dia1Y,1
EndIf
If>Dia1YDia1Y,1
EndIf
SetControlText>Sparkler,TEdit,1,%Dia1X%;%Dia1Y%
Wait>0.01
Timer>Stop
If>{%Stop%-%Begin%>5000}
GoSub>Fade
EndIf
Goto>Loop
SRT>Fade
SetDialogProperty>Dialog1,,AlphaBlend,True
Let>Fader=255
Repeat>Fader
Sub>Fader,5
SetDialogProperty>Dialog1,,AlphaBlendValue,Fader
Wait>0.1
Until>Fader<0
Let>Fader=255
SetDialogProperty>Dialog1,Panel3,Visible,True
SetDialogProperty>Dialog1,Panel2,Visible,False
SetDialogProperty>Dialog1,,AlphaBlendValue,Fader
Wait>3
Timer>Begin
GetScreenRes>ScreenX,ScreenY
While>{%Stop%-%Begin%<10000}
Timer>Stop
Random>100,Pct
Add>pct,1
Let>Dia1X={round(%ScreenX%*(%pct%/100))}
Random>100,Pct
Add>pct,1
Let>Dia1Y={round(%ScreenY%*(%pct%/100))}
SetControlText>Sparkler,TEdit,1,%Dia1X%;%Dia1Y%
Sub>Fader,5
SetDialogProperty>Dialog1,,AlphaBlendValue,Fader
Wait>0.2
EndWhile
SetControlText>Sparkler,TEdit,1,Complete
WaitWindowClosed>Sparkler
Wait>1
DeleteFile>%temp_dir%\Sparkler.scp
Exit>0
END>Fade
/*
SparkleScript:
Let>size=200
OnEvent>key_down,vk27,0,Quit
SRT>Quit
Exit>0
END>Quit
Dialog>Dialog2
object Dialog2: TForm
BorderStyle = bsNone
Caption = 'Sparkler'
Color = 1
TransparentColor = True
TransparentColorValue = 1
object Panel1: TPanel
Left = 0
Top = 0
BevelOuter = bvNone
Caption = 'Panel1'
Color = 1
TabOrder = 0
end
object Edit1: TEdit
Text = '-1000;-1000'
Visible = False
end
end
EndDialog>Dialog2
Let>WIN_USEHANDLE=1
MoveWindow>Dialog2.handle,-1000,-1000
Let>WIN_USEHANDLE=0
AddDialogHandler>Dialog2,,OnClose,Quit
SetDialogProperty>Dialog2,,ClientHeight,size
SetDialogProperty>Dialog2,,ClientWidth,size
SetDialogProperty>Dialog2,Panel1,Height,size
SetDialogProperty>Dialog2,Panel1,Width,size
SetDialogProperty>Dialog2,,AlphaBlend,True
SetDialogProperty>Dialog2,,AlphaBlendValue,0
Show>Dialog2
Let>halfSize={round(%size%/2)}
Let>85Per={round(%halfSize%*0.85)}
Let>15Per={round(%halfSize%*0.15)}
Let>ang2=0
Let>kk=0
SetDialogProperty>Dialog2,,AlphaBlendValue,255
Repeat>kk
GetDialogProperty>Dialog2,Edit1,Text,vPos
If>vPos=Complete
Let>kk=-100
Goto>Done
EndIf
Separate>vPos,;,Cur
Sub>Cur_1,%halfSize%
Sub>Cur_2,%halfSize%
MoveWindow>Sparkler,Cur_1,Cur_2
Add>kk,1
Random>85Per,res
Add>res,%15Per%
Random>50,color
Add>Color,45500
Random>90,ang2
Let>ang2=%ang2%*4
GoSub>Angle,Dialog2,Panel1,ang2,%halfSize%,%halfSize%,%halfSize%,4,1
Random>90,ang3
Let>ang3=%ang3%*4
GoSub>Angle,Dialog2,Panel1,ang3,%halfSize%,%halfSize%,%halfSize%,4,1
Random>90,ang
Let>ang=%ang%*4
SetDialogProperty>Dialog2,Panel1,caption,space
GoSub>Angle,Dialog2,Panel1,ang,%halfSize%,%halfSize%,res,2,color
Label>Done
Until>kk<0
//Angle Usage:
//GoSub>Angle,Dialog,Object,Angle(in degrees),XStart,YStart,Length,PenSize,PenColor
//Requires Drawline subroutine
SRT>Angle
Let>DegreeAngle=Angle_var_3
Let>XStart=Angle_var_4
Let>Ystart=Angle_var_5
Let>LineLength=Angle_var_6
Let>RadAngle={%DegreeAngle%*(pi/180)}
Let>XEnd={trunc((cos(%RadAngle%))*%LineLength%)}
Let>YEnd={trunc((sin(%RadAngle%))*%LineLength%)}
Let>XEnd=%XEnd%+%XStart%
Let>YEnd=%YEnd%+%YStart%
GoSub>DrawLine,%Angle_var_1%.%Angle_var_2%.Handle,Angle_var_7,Angle_var_8,XStart,YStart,XEnd,YEnd
END>Angle
SRT>DrawLine
LibFunc>user32,GetDC,HDC,%DrawLine_var_1%
LibFunc>gdi32,CreatePen,Penres,0,%DrawLine_var_2%,%DrawLine_var_3%
LibFunc>gdi32,SelectObject,SOPres,hdc,Penres
Libfunc>gdi32,MoveToEx,mtres,HDC,%DrawLine_var_4%,%DrawLine_var_5%,0
LibFunc>gdi32,LineTo,ltres,hdc,%DrawLine_var_6%,%DrawLine_var_7%
LibFunc>gdi32,DeleteObject,DOres,Penres
LibFunc>user32,ReleaseDC,RDCres,HDC_1,HDC
END>DrawLine
*/
Thanks to Dick Lockey for writing this little script (back in 2014).
Remember this?
Case Study: Macro Scheduler Saves 3600 Elf-Hours and Gets Presents Delivered On Time