📄 setkey.pas
字号:
//###############################################################
//######作者:杨畅(sheepchang)##################################
//######Email:sheepchang@gmail.com QQ:1103754####################
//######我为人人,人人为我。希望大家一起交流,共同进步!##########
//###############################################################
unit setkey;
interface
uses
Windows,Classes,Forms,Dialogs,HotKeyManager,dxCore,dxButtons,
dxCheckCtrls,Registry,Inifiles,Controls, StdCtrls,ComCtrls;
type
TForm2 = class(TForm)
HotKeyManager1: THotKeyManager;
HotKey1: THotKey;
Label1: TLabel;
Label2: TLabel;
HotKey2: THotKey;
dxButton1: TdxButton;
dxCheckbox1: TdxCheckbox;
dxCheckbox2: TdxCheckbox;
procedure HotKeyManager1HotKeyPressed(HotKey: Cardinal; Index: Word);
procedure FormCreate(Sender: TObject);
procedure dxButton1Click(Sender: TObject);
procedure dxCheckbox1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
HotKeyIndex1, HotKeyIndex2: Word;
end;
var
Form2: TForm2;
qscreeninifile :Tinifile;
implementation
uses capture, qcapture;
{$R *.dfm}
const
LOCALIZED_KEYNAMES = True;
procedure TForm2.FormCreate(Sender: TObject);
var
Regtemp : TRegistry;
begin
//创建程序参数保存文件qscreen.ini在windows目录
qscreeninifile:= TInifile.Create('qscreen.ini');
//读取参数文件qscreen.ini中dxCheckbox2的值,若不存在默认为True
dxCheckbox2.Checked := qscreeninifile.ReadBool('dxCheckbox2', '是否提示', True);
//读取参数文件qscreen.ini中HotKey1的值, 若不存在默认为16449即Ctrl+A
HotKey1.HotKey:=qscreeninifile.Readinteger('HotKey1', '全屏截图热键', 16467);
//读取参数文件qscreen.ini中HotKey2的值, 若不存在默认为16465即Ctrl+Q
HotKey2.HotKey:=qscreeninifile.Readinteger('HotKey2', '区域截图热键', 16465);
//注册两个默认的热键
HotKeyIndex1 := HotKeyManager1.AddHotKey(HotKey1.HotKey);
HotKeyIndex2 := HotKeyManager1.AddHotKey(HotKey2.HotKey);
//读取注册表中的自动启动项,以设置dxCheckbox1状态
Regtemp:=TRegistry.Create;
Regtemp.RootKey:=HKEY_LOCAL_MACHINE;
Regtemp.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',True);
if Regtemp.ValueExists('Screen') then
//若存在则dxCheckbox1.Checked为真
begin
dxCheckbox1.Checked:=True;
end
else
//若不存在则dxCheckbox1.Checked为假
begin
dxCheckbox1.Checked:=False;
end
end;
procedure TForm2.HotKeyManager1HotKeyPressed(HotKey: Cardinal; Index: Word);
begin
SetForegroundWindow(Application.Handle);
if Index = HotKeyIndex1 then
//若HotKey1被激发就打开Form4中的Timer1计时器
begin
Form4.Timer1.Enabled := True;
end
//若HotKey2被激发就打开Form5中的Timer1计时器
else if Index = HotKeyIndex2 then
Form5.Timer1.Enabled := True
else
ShowMessage('未知的热键!');
end;
procedure TForm2.dxButton1Click(Sender: TObject);
//更改热键并关闭程序设置窗体
begin
HotKeyIndex1 := HotKeyManager1.ChangeHotKey(HotKeyIndex1, HotKey1.HotKey);
HotKeyIndex2 := HotKeyManager1.ChangeHotKey(HotKeyIndex2, HotKey2.HotKey);
Close;
end;
procedure TForm2.dxCheckbox1Click(Sender: TObject);
var Regtemp : TRegistry;
//向注册表的自启动项中写入键值
begin
Regtemp:=TRegistry.Create;
Regtemp.RootKey:=HKEY_LOCAL_MACHINE;
Regtemp.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',True);
if dxCheckbox1.checked then
begin
Regtemp.WriteString('Screen',Application.ExeName);
end
else
Regtemp.DeleteValue('Screen');
Regtemp.CloseKey;
Regtemp.Free;
end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
//当程序设置窗体关闭时,更新参数保存文件qscreen.ini中关键字的值
begin
qscreeninifile.writeBool('dxCheckbox2', '是否提示',dxCheckbox2.Checked);
qscreeninifile.writeinteger('HotKey1', '全屏截图热键', HotKey1.HotKey);
qscreeninifile.writeinteger('HotKey2', '区域截图热键', HotKey2.HotKey);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -