📄 globals.pas
字号:
{*******************************************************}
{ }
{ 系统工具箱程序中自添加的全局变量及过程单元 }
{ }
{ Copyright (c) 2005, MICHAEL }
{ http://xuhaohome.yeah.net OR xuhaohome.2008.cc }
{ E-Mail:x_h168@163.com QQ:10660578 8416321 }
{ }
{*******************************************************}
unit Globals;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls,Registry,ShlObj,ActiveX,ComObj,INIFiles;
//公共变量过程声明
Function CheckProgramStart(MainFormName:string):boolean; //检查当前程序是否正在运行
Procedure BringWindow; //激活和当前程序同名的窗体
procedure ShowWindowMode(FormName:TForm;Const Mode:integer); //激活显示程序窗体
function SearchAllFile(Path:string;Ext:string):TStrings;
Function ResultCmdFile:string;
Function ResultNotepadFile:string;
Function ResultDirectXFile:string;
Function ResultRegeditFile:string;
Procedure ExitWindowsSystem(Const I:integer);
Procedure EmptyRecycleBin ; //清空回收站
Function RegKeyExists(RootKEY:HKEY;Const Openkey,KeyName:string):boolean;
Function RegValueExists(RootKEY:HKEY;Const Openkey,KeyName:string):boolean;
Function DeleteKey(RootKEY:HKEY;Const Openkey,KeyName:string):boolean;
Function DeleteValue(RootKEY:HKEY;Const Openkey,KeyName:string):boolean;
Function GetRegStringKey(RootKEY:HKEY;Const Openkey,KeyName:string):String;
Function SetRegStringKey(RootKEY:HKEY;Const Openkey,KeyName,KeyValue:string):Boolean;
Function GetRegIntegerKey(RootKEY:HKEY;Const Openkey,KeyName:string):integer;
Function SetRegIntegerKey(RootKEY:HKEY;Const Openkey,KeyName:string;KeyValue:integer):Boolean;
Function GetRegBinaryKey(RootKEY:HKEY;Const Openkey,KeyName:string):Byte;
Function SetRegBinaryKey(RootKEY:HKEY;Const Openkey,KeyName:string;KeyValue:Byte):Boolean;
Function BooleanToInteger(Const BooleanValue:Boolean):integer;
Function IntegerToBoolean(Const IntegerValue:integer):Boolean;
Function YesNoToBoolean(Const YesNoValue:string):Boolean;
Function BooleanToYesNo(Const BooleanValue:boolean):string;
Function StringToBoolean(Const StringValue:string):Boolean;
Function BooleanToString(Const BooleanValue:boolean):string;
var
IF_CheckProgramStart:boolean=True; //是否限制程序只启动一次
counter: Integer;
IsMinimizeAll:boolean=False;//用来标志当前是否最小化所有程序了 在执行最小化/最大化所有过程时用
IsHide:boolean=False; //用来标志在热键进行隐藏显示本程序时的状态
IsCDROMClose:boolean=True; //用来标志在热键进行弹出关闭光驱时光驱的状态
IsHideTaskBar:boolean=False; //用来标志在当前是否已设置隐藏了系统任务栏
shellapp: variant; //系统外壳SHELL对象
ShowWindowHotKey:string='Ctrl+Shift+Alt+Win+Z'; //用来激活程序窗体的热键
const
Product_Name:string='系统工具箱'; //程序的名称
Product_Ver:string='V1.0 测试版'; //程序版本
Product_Writer:string='许 昊'; //程序作者
Product_CopyRight:string='MICHAEL'; //程序版权
Product_ConfigIni:string='config.dat'; //程序的配置文件名称
Home_Url:string='http://xuhaohome.yeah.net'; //主页地址
Home_UrlNew:string='http://xuhaohome.2008.cc'; //主页地址
E_mail:string='x_h168@etang.com'; //邮件地址
QQ:string='8416321 10660578'; //QQ号码
EndDate:string='2005-02-30'; //程序完成时间
Product_About=' 本应用程序在Windows 2000+Delphi7平台开发完成,绝大部分功能通用于Win98/Win2000'+#13+'/WinXP/Win2003系统。欢迎自由拷贝使用,但请注明原版权!使用本程序所造成的一切后果作者'+#13+'将不负任何责任!欢迎有任何问题欢迎跟我联系。';
IEActiveXList:array[0..48] of string=('B83FC273-3522-4CC6-92EC-75CC86678DA4::3721网络实名第一版',
'4522DBFE-14CD-4A59-AC2A-54BADFDD6D53::3721网络实名第二版',
'8D898B17-976D-44C1-84E6-AF38842AC9EC::3721网络实名第三版',
'FC327B3F-377B-4CB7-8B61-27CD69816BC3::WeatherCAST',
'1B0E7716-898E-48CC-9690-4E338E8DE1D3::3721上网助手老版',
'7CA83CF1-3AEA-42D0-A4E3-1594FC6E48B2::3721上网助手新版',
'4EDBBAEA-F509-49F6-94D1-ECEC4BE5B686::3721中文邮',
'9A578C98-3C2F-4630-890B-FC04196EF420::CNNIC中文网址',
'BC207F7D-3E63-4ACA-99B5-FB5F8428200C::百度搜索伴侣',
'9BBC1154-218D-453C-97F6-A06582224D81::百度搜霸',
'CF051549-EDE1-40F5-B440-BCD646CF2C25::网易泡泡',
'15DDE989-CD45-4561-BF99-D22C0D5C2B74::新浪点点通',
'98FA5667-513F-4F15-8A15-C171477B8847::新浪IE通',
'CE7C3CF0-4B15-11D1-ABED-709549C10000::搜狐搜索工具1',
'484FF54A-CC44-467E-9C31-5B89FC753007::搜狐搜索工具2',
'2D0C7226-747E-11D6-83F0-00E04C4A2F90::搜狐视频播放器',
'48FE89A0-486C-48DF-9DEC-BED22BDC6057::新浪go',
'CD1A82F2-3770-4509-8355-0D2F45158F21::新浪igame',
'DBAE7000-01EC-4162-8FEB-8A27AC937CA0::新浪gane',
'36CB6B28-FC08-4373-8F54-1A02E3C15B7D::藏琼阁',
'F504CF55-2AA9-4752-B2DD-01D06A81D93E::迅彩图铃通',
'58CDB34C-B4D7-418B-A0FB-C4C8A01C2F0E::51.net',
'8135EF31-FE8C-4C6E-A18A-F59944C3A488::dudu',
'54F8C0E2-34F9-474F-B47F-2CFCFE2300A2::imuChat',
'4B106874-DD36-11D0-8B44-00A024DD9EFF::ADODB.Stream 2.5',
'00000566-0000-0010-8000-00AA006D2EA4::ADODB.Stream 2.7',
'8522F9B3-38C5-4AA4-AE40-7401F1BBC851::Ahmm Dialers',
'69A72A8A-84ED-4A75-8CE7-263DBEF3E5D3::Alexa Toolbar',
'0E1230F8-EA50-42A9-983C-D22ABC2EED3B::cmpro',
'03C543A1-C090-418F-A1D0-FB96380D601D::Holistyc',
'E8EDB60C-951E-4130-93DC-FAF1AD25F8E7::Mtree Dialers1',
'FC87A650-207D-4392-A6A1-82ADBC56FA64::Mtree Dialers2',
'D6862A22-1DD6-11D3-BB7C-444553540000::Portal Toolbar',
'65B818E1-F4D8-4F96-A1DF-35F3D1C86194::Roings',
'3717DF57-0396-463D-98B7-647C7DC6898A::SearchIt Toolbar',
'7EB2A76C-97AE-4CF3-9C6A-EA0F61F137E1::Sexxx',
'10954C80-4F0F-11D3-B17C-00C0DFE39736::thebugs',
'018B7EC3-EECA-11D3-8E71-0000E82C6C0D::xxxToolbar1',
'EF86873F-04C2-4A95-A373-5703C08EFC7B::xxxToolbar2',
'12398DD6-40AA-4C40-A4EC-A42CFC0DE797::xxxToolbar3',
'6BF52A52-394A-11D3-B153-00C04F79FAA6::Windows Media Player',
'CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA::Real One Player',
'D27CDB6E-AE6D-11CF-96B8-444553540000::Flash Player',
'D7F0CC2E-FB09-4B38-B9A7-6807CBCD4859::新浪iGame 2',
'32B88AFD-33DA-4E17-BE89-1029DE44DED6::每步直达网址',
'051299DE-2CFD-4EA8-A432-F0429B4E7A5D::信天搜霸',
'A8739816-022C-11D6-A85D-00C04F9AEAFB::WebEye',
'5FCEA0BA-123B-469a-A27B-8EFF96FEA71D::爱思美中文邮',
'8601658B-9360-00C1-AE00-00C03EA25D91::Alibaba 1');
//热键操作的类型
HotKeyActions:array[0..15] of String=('执行程序', //0
'打开命令行', //1
'打开记事本程序', //2
'打开资源管理器', //3
'显示运行对话框', //4
'显示搜索文件对话框', //5
'最小化所有窗口', //6
'隐藏/显示程序窗体', //7
'启动屏幕保护程序', //8
'弹出/关闭光驱', //9
'显示关机对话框', //10
'退出程序', //11
'关闭显示器', //12
'注销登陆', //13
'重启系统', //14
'关闭系统'); //15
//默认热键操作的热键
DefaultHotKey:array[1..15] of String=('Ctrl+Alt+Shift+C',
'Ctrl+Alt+Shift+N',
'Ctrl+Alt+Shift+E',
'Ctrl+Alt+Shift+R',
'Ctrl+Alt+Shift+F',
'Ctrl+Alt+Shift+D',
'Ctrl+Alt+Shift+S',
'Ctrl+Alt+Win+P',
'Ctrl+Alt+Shift+J',
'Ctrl+Alt+Win+Q',
'Ctrl+Alt+Shift+Q',
'Ctrl+Alt+Shift+P',
'Ctrl+Alt+Win+L',
'Ctrl+Alt+Win+R',
'Ctrl+Alt+Win+S');
implementation
uses sysifo,HotKeyManager;
Function CheckProgramStart(MainFormName:string):boolean;
var Mutex:THandle;
begin //检查当前程序是否正在运行并激活它,如果在运行反回True否则为False(MainFormName为程序主窗体名称最好用Application.MainForm)
try
Mutex:=CreateMutex(NIL,True,Pchar(Product_Name+Product_Writer));
IF GetLastError<>ERROR_ALREADY_EXISTS THEN //如果不存在另一实例
begin
Result:=False;
end else
begin
Result:=True;
ReleaseMutex(Mutex);
end;
Finally
end;
end;
Procedure BringWindow;
function AnsiContainsText(const AText, ASubText: string): Boolean;
begin
Result := AnsiPos(AnsiUppercase(ASubText), AnsiUppercase(AText)) > 0;
end;
function AnsiReplaceText(const AText, AFromText, AToText: string): string;
begin
Result := StringReplace(AText, AFromText, AToText, [rfReplaceAll, rfIgnoreCase]);
end;
function GetVKKeyName(HotKey: String):Char;
var //从热键的组合中取出单独的键名(只取单键,不能区别功能键)
I: Integer;
begin
HotKey:=AnsiReplaceText(HotKey,'Ctrl','');
HotKey:=AnsiReplaceText(HotKey,'Shift','');
HotKey:=AnsiReplaceText(HotKey,'Alt','');
HotKey:=AnsiReplaceText(HotKey,'Win','');
HotKey:=AnsiReplaceText(HotKey,'+','');
HotKey:=AnsiReplaceText(HotKey,' ','');
Result:=((HotKey[1]));
end;
var
TheWindow: HWND;
I:integer;
begin
//下面这段被注释掉的代码是自动提取取另自定义的程序激活热键
if (ShowWindowHotKey='')and(FileExists(ExtractFilePath(paramstr(0))+Product_ConfigIni)) then
with TIniFile.Create(ExtractFilePath(paramstr(0))+Product_ConfigIni) do
begin
For i:=-1 to strtoint(ReadString('HotKeyList','Count','-1')) do
begin
if AnsiContainsText(ReadString('HotKeyList','HotKeyAction'+inttostr(I),''),HotKeyActions[7]) then ShowWindowHotKey:=ReadString('HotKeyList','TheHotKey'+inttostr(I),'-1');
end;
end else if ShowWindowHotKey='' then ShowWindowHotKey:=DefaultHotKey[7];
if AnsiContainsText(ShowWindowHotKey,'Ctrl') THEN keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), 0, 0);
if AnsiContainsText(ShowWindowHotKey,'Alt') THEN keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), 0, 0);
if AnsiContainsText(ShowWindowHotKey,'Shift') THEN keybd_event(VK_SHIFT, MapVirtualKey(VK_SHIFT, 0), 0, 0);
if AnsiContainsText(ShowWindowHotKey,'Win') THEN keybd_event(VK_LWIN, MapVirtualKey(VK_LWIN, 0), 0, 0);
keybd_event(ord(GetVKKeyName(ShowWindowHotKey)), MapVirtualKey(ord(GetVKKeyName(ShowWindowHotKey)), 0), 0, 0); //处理不成自动取键值
keybd_event(ord(GetVKKeyName(ShowWindowHotKey)), MapVirtualKey(ord(GetVKKeyName(ShowWindowHotKey)), 0), KEYEVENTF_KEYUP, 0);
if AnsiContainsText(ShowWindowHotKey,'Win') THEN keybd_event(VK_LWIN, MapVirtualKey(VK_LWIN, 0), KEYEVENTF_KEYUP, 0);
if AnsiContainsText(ShowWindowHotKey,'Shift') THEN keybd_event(VK_SHIFT, MapVirtualKey(VK_SHIFT, 0), KEYEVENTF_KEYUP, 0);
if AnsiContainsText(ShowWindowHotKey,'Alt') THEN keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), KEYEVENTF_KEYUP, 0);
if AnsiContainsText(ShowWindowHotKey,'Ctrl') THEN keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), KEYEVENTF_KEYUP, 0);
Thewindow:=FindWindow(nil,Pchar(Product_Name));
SendMessage(Thewindow,WM_SYSCOMMAND,SC_RESTORE,0);
ShowWindow(Thewindow,SW_SHOW);
ShowWindow(Thewindow,SW_SHOWNORMAL);
SetWindowLong(Thewindow, GWL_EXSTYLE,
not (GetWindowLong(Thewindow, GWL_EXSTYLE)
or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW));
SetForegroundWindow(Thewindow);
BringWindowToTop(TheWindow);
end;
procedure ShowWindowMode(FormName:TForm;const Mode:integer);
begin //显示程序窗体 Mode为要把窗体控制显示成的类型,功能未完成
try
case Mode of
0:begin//隐藏程序窗体
//FormName.Visible:=False;
ShowWindow(Application.Handle, SW_HIDE);
ShowWindow(Application.MainForm.Handle, SW_HIDE);
FormName.Hide;
end;
1:begin//最前端显示程序窗体
if Application.MainForm <> nil then
begin // Restore the app, but don't automatically show its taskbar icon
ShowWindow(Application.Handle, SW_SHOW);
//在任务栏上显示应用程序窗口
ShowWindow(Application.MainForm.Handle,SW_SHOW);
ShowWindow(FormName.handle, SW_SHOW);
SetWindowLong(Application.Handle, GWL_EXSTYLE,not (GetWindowLong(Application.handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW));
Application.Restore; // Show the form itself
if Application.MainForm.WindowState = wsMinimized then Application.MainForm.WindowState := wsNormal; // Override minimized state
Application.MainForm.Visible := True; // Bring the main form (or its modal dialog) to the foreground
Application.MainForm.SetFocus;
SetForegroundWindow(Application.Handle);
Application.BringToFront;
Application.MainForm.BringToFront;
end;
end;
2:begin
;
end;
end;
except
end;
end;
Function ResultCmdFile:string;
begin
if FileExists(myGetSystemDirectory+'\Cmd.exe') then Result:=myGetSystemDirectory+'\Cmd.exe' else
if FileExists(myGetWindowsDirectory+'\Cmd.exe') then Result:=myGetWindowsDirectory+'\Cmd.exe' else
if FileExists(myGetSystemDirectory+'\Command.com') then Result:=myGetSystemDirectory+'\Command.com' else
if FileExists(myGetWindowsDirectory+'\Command.com') then Result:=myGetWindowsDirectory+'\Command.com'
else Result:='Command';
end;
Function ResultNotepadFile:string;
begin
if FileExists(myGetSystemDirectory+'\notepad.exe') then Result:=myGetSystemDirectory+'\notepad.exe' else
if FileExists(myGetWindowsDirectory+'\notepad.exe') then Result:=myGetWindowsDirectory+'\notepad.exe'
else Result:='notepad';
end;
Function ResultDirectXFile:string;
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -