⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setkey.pas

📁 大家来看看很好的源码啊里面包含很多知识点啊学习学习
💻 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 + -