📄 unit1.~pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Unit2, ExtCtrls, math;
type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Button2: TButton;
Timer1: TTimer;
Button3: TButton;
Timer2: TTimer;
Timer3: TTimer;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure Timer3Timer(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
procedure hotkey(var msg:tmessage);message wm_hotkey;
procedure SendKeys(sSend: string);
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
mylist1:TStringlist;
mylist2:TStringlist;
mylist3:TStringlist;
F1hk:atom;
F2hk:atom;
F3hk:atom;
F4hk:atom;
c1,c2,c3:integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.ShowModal;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;
procedure TForm1.hotkey(var msg:tmessage); //热键响应事件
var
s:byte;
begin
if msg.LParamHi=VK_F1 then
begin
timer1.Enabled:=false;
timer2.Enabled:=false;
timer3.Enabled:=false;
timer1.Enabled:=true;
end;
if msg.LParamHi=VK_F2 then
begin
timer1.Enabled:=false;
timer2.Enabled:=false;
timer3.Enabled:=false;
timer2.Enabled:=true;
end;
if msg.LParamHi=VK_F3 then
begin
timer1.Enabled:=false;
timer2.Enabled:=false;
timer3.Enabled:=false;
timer3.Enabled:=true;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
F1hk:=globaladdatom('F1')-$C000;
F2hk:=globaladdatom('F2')-$C000;
F3hk:=globaladdatom('F3')-$C000;
RegisterHotKey(handle,F1hk,0,vk_f1);
RegisterHotKey(handle,F2hk,0,vk_f2);
RegisterHotKey(handle,F3hk,0,vk_f3);
if fileexists('普通骂人.txt') then
begin
mylist1:=TStringlist.Create;
mylist1.LoadFromFile('普通骂人.txt');
end;
if fileexists('长像骂人.txt') then
begin
mylist2:=TStringlist.Create;
mylist2.LoadFromFile('长像骂人.txt');
end;
if fileexists('其它骂人.txt') then
begin
mylist3:=TStringlist.Create;
mylist3.LoadFromFile('其它骂人.txt');
end;
c1:=mylist1.Count;
c2:=mylist2.Count;
c3:=mylist3.Count;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
globalDeleteatom(F1hk);
globalDeleteatom(F2hk);
globalDeleteatom(F3hk);
mylist1.Free;
mylist2.Free;
mylist3.Free;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
h:integer;
begin
Randomize;
h:=RandomRange(0,c1);
SendKeys(mylist1.Strings[h]);
keybd_event(13,mapvirtualkey(13,0),0,0);
keybd_event(13,mapvirtualkey(13,0),keyeventf_keyup,0);
end;
procedure TForm1.Timer2Timer(Sender: TObject);
var
h:integer;
begin
Randomize;
h:=RandomRange(0,c2);
SendKeys(mylist2.Strings[h]);
keybd_event(13,mapvirtualkey(13,0),0,0);
keybd_event(13,mapvirtualkey(13,0),keyeventf_keyup,0);
end;
procedure TForm1.Timer3Timer(Sender: TObject);
var
h:integer;
begin
Randomize;
h:=RandomRange(0,c3);
SendKeys(mylist3.Strings[h]);
keybd_event(13,mapvirtualkey(13,0),0,0);
keybd_event(13,mapvirtualkey(13,0),keyeventf_keyup,0);
end;
procedure TForm1.SendKeys(sSend:string);
var
i:integer;
focushld,windowhld:hwnd;
threadld:dword;
ch: byte;
begin
windowhld:=GetForegroundWindow;
//获得前台应用程序的活动窗口的句柄
threadld:=GetWindowThreadProcessId(Windowhld,nil);
//获取与指定窗口关联在一起的一个进程和线程标识符
AttachThreadInput(GetCurrentThreadId,threadld,true);
//通常,系统内的每个线程都有自己的输入队列。 //
//AttachThreadInput允许线程和进程共享输入队列。 //
//连接了线程后,输入焦点、窗口激活、鼠标捕获、键盘状态 //
//以及输入队列状态都会进入共享状态 //
Focushld:=getfocus;
//获得拥有输入焦点的窗口的句柄
AttachThreadInput(GetCurrentThreadId,threadld,false);
if focushld = 0 then Exit;
//如果没有输入焦点则退出发送过程
i := 1;
while i <= Length(sSend) do
//该过程发送指定字符串(中英文皆可以)
begin
ch := byte(sSend[ i ]);
if Windows.IsDBCSLeadByte(ch) then
begin
Inc(i);
SendMessage(focushld, WM_IME_CHAR, MakeWord(byte(sSend[ i ]), ch), 0);
end
else
SendMessage(focushld, WM_IME_CHAR, word(ch), 0);
Inc(i);
end;
postmessage(focushld,WM_keydown,13,0);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
timer1.Interval:=strtoint(edit1.text);
timer2.Interval:=strtoint(edit1.text);
timer3.Interval:=strtoint(edit1.text);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -