/
VisualEffect.pas
83 lines (74 loc) · 2.63 KB
/
VisualEffect.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
unit VisualEffect;
interface
uses Windows,messages, SysUtils, Forms, ShellApi;
Const WM_VISUALEFFECTGIF = WM_USER + 8001;
WM_VISUALEFFECTDESC = WM_USER + 8002;
WM_VISUALEFFECTSHOW = WM_USER + 8003;
WM_VISUALEFFECTHIDE = WM_USER + 8004;
WM_VISUALEFFECTQUIT = WM_USER + 8005;
WM_VISUALEFFECTRESIZE = WM_USER + 8006;
WM_VISUALEFFECTMOVE = WM_USER + 8007;
procedure VisualEffectLoad(GifName : string; Pos,Size : Tpoint; Show : Boolean = True);
procedure VisualEffectHintInfo(Text : String);
procedure VisualEffectQuit();
implementation
procedure VisualEffectLoad(GifName : string; Pos,Size : Tpoint; Show : Boolean = True);
var Handle : HWND;
VisualEffectExe : String;
nAtom : word;
begin
Handle := FindWindow('TVisualEffectforSM',nil);
if Handle = 0
then begin
VisualEffectExe := ExtractFileDir(Application.ExeName) + '\VisualEffect.exe';
if not FileExists(VisualEffectExe) then Exit;
ShellExecute(Application.MainFormHandle,'Open', PChar(VisualEffectExe) ,'','',SW_SHOWNORMAL);
SleepEx(800,False);
Application.ProcessMessages;
Handle := FindWindow('TVisualEffectforSM',nil);
end;
if Handle = 0 then Exit;
nAtom := GlobalAddAtom(Pchar(GifName));
SendMessage(Handle,WM_VISUALEFFECTGIF,0,nAtom);
GlobalDeleteAtom(nAtom);
SendMessage(Handle,WM_VISUALEFFECTMOVE,Pos.X,Pos.Y);
SendMessage(Handle,WM_VISUALEFFECTSHOW,0,0);
end;
procedure VisualEffectHintInfo(Text : String);
var Handle : HWND;
VisualEffectExe : String;
nAtom : word;
begin
Handle := FindWindow('TVisualEffectforSM',nil);
if Handle = 0
then begin
VisualEffectExe := ExtractFileDir(Application.ExeName) + '\VisualEffect.exe';
if not FileExists(VisualEffectExe) then Exit;
ShellExecute(Application.MainFormHandle,'Open', PChar(VisualEffectExe) ,'','',SW_SHOWNORMAL);
SleepEx(800,False);
Application.ProcessMessages;
Handle := FindWindow('TVisualEffectforSM',nil);
end;
if Handle = 0 then Exit;
nAtom := GlobalAddAtom(Pchar(Text));
SendMessage(Handle,WM_VISUALEFFECTDESC,0,nAtom);
GlobalDeleteAtom(nAtom);
end;
procedure VisualEffectQuit();
var Handle : HWND;
VisualEffectExe : String;
begin
Handle := FindWindow('TVisualEffectforSM',nil);
if Handle = 0
then begin
VisualEffectExe := ExtractFileDir(Application.ExeName) + '\VisualEffect.exe';
if not FileExists(VisualEffectExe) then Exit;
ShellExecute(Application.MainFormHandle,'Open', PChar(VisualEffectExe) ,'','',SW_SHOWNORMAL);
SleepEx(800,False);
Application.ProcessMessages;
Handle := FindWindow('TVisualEffectforSM',nil);
end;
if Handle = 0 then Exit;
SendMessage(Handle,WM_VISUALEFFECTQUIT,0,0);
end;
end.