-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscreenwin.pas
More file actions
152 lines (122 loc) · 3.32 KB
/
Copy pathscreenwin.pas
File metadata and controls
152 lines (122 loc) · 3.32 KB
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
unit ScreenWin;
{$IFDEF FPC}
{$MODE DELPHI}
{$ENDIF}
interface
uses
LCLIntf, LCLType, SysUtils, Classes, Graphics, Controls, Forms,
ExtCtrls, StdCtrls;
type
{ TScreenForm }
TScreenForm = class(TForm)
Timer1: TTimer;
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
procedure FormCreate(Sender: TObject);
procedure FormHide(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormKeyPress(Sender: TObject; var Key: char);
procedure FormMouseMove(Sender: TObject;
{%H-}Shift: TShiftState; X, Y: Integer);
procedure FormMouseUp(Sender: TObject; {%H-}Button: TMouseButton;
{%H-}Shift: TShiftState; X, Y: Integer);
procedure FormShow(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
FixedMyInput: Boolean;
Testing: Boolean;
CurrentInputStr: string;
Pass: string;
protected
procedure CMHintShow(var Message: TCMHintShow); message CM_HINTSHOW;
public
FixMyInputStr: string;
constructor Create(TheOwner: TComponent; aTesting: Boolean; aPass: string);
end;
var
ScreenForm: TScreenForm;
implementation
{$R *.lfm}
Function IsKeyDown(Const VirtualKeyCode: Integer): Boolean; Inline;
Begin
Result:= (GetKeyState(VirtualKeyCode) And $80) <> 0;
End;
{ TScreenForm }
procedure TScreenForm.CMHintShow(var Message: TCMHintShow);
begin
with TCMHintShow(Message) do
if not ShowHint then
Message.Result := 1;
inherited;
end;
constructor TScreenForm.Create(TheOwner: TComponent; aTesting: Boolean;
aPass: string);
begin
inherited Create(TheOwner);
FixedMyInput:= False;
Testing := aTesting;
Pass := LowerCase(aPass);
end;
procedure TScreenForm.FormCreate(Sender: TObject);
begin
Brush.Style := bsClear;
Align:= alClient;
end;
procedure TScreenForm.FormCloseQuery(Sender: TObject; var CanClose: boolean);
begin
CanClose := FixedMyInput;
end;
procedure TScreenForm.FormHide(Sender: TObject);
begin
Timer1.Enabled := True;
end;
procedure TScreenForm.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Testing and ((key = VK_ESCAPE) or (key = VK_RETURN)) then
begin
FixedMyInput:= True;
Close;
end;
if (ssAlt in Shift) then
Hide;
end;
procedure TScreenForm.FormKeyPress(Sender: TObject; var Key: char);
var
at: integer;
begin
CurrentInputStr := CurrentInputStr + LowerCase(key);
at:= length(CurrentInputStr);
if CurrentInputStr[at] <> pass[at] then
CurrentInputStr := '';
if CurrentInputStr = pass then
begin
FixedMyInput := true;
close;
end
end;
procedure TScreenForm.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Application.ProcessMessages;
end;
procedure TScreenForm.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
end;
procedure TScreenForm.FormShow(Sender: TObject);
begin
Width := Screen.DesktopWidth;
Height := Screen.DesktopHeight;
Left := Screen.DesktopLeft;
Top := Screen.DesktopTop;
end;
procedure TScreenForm.Timer1Timer(Sender: TObject);
begin
if not IsKeyDown(VK_MENU) then
begin
Show;
Timer1.Enabled:= False;
end;
end;
end.