{
关键字=写入注册表 说明url类
采集软件=MKM - 我的知识管理
采集日期=2023-11-23 21:41:53
数字签名=BCF567C6895F1E56C9194A8E4FF2652B
}
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,
Dialogs, StdCtrls, ComCtrls,
Registry, shlobj, OleCtrls, SHDocVw, IdBaseComponent,
IdComponent,
IdTCPConnection, IdTCPClient, IdHTTP, ExtCtrls,
IdAntiFreezeBase,
IdAntiFreeze, jpeg, ScktComp;
uses
wininet;
procedure regURL; //写入注册表,说明url类
var
reg: TRegistry;
strtmp: string;
strfile: string;
s: string;
bisfirst: boolean;
begin
{写入注册表 说明url类}
{
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\TooBubble]
“URL Protocol”=“c:\test.exe”
@=“ToobubbleProtocol”
[HKEY_CLASSES_ROOT\TooBubble\DefaultIcon]
@=“c:\test.exe,0”
[HKEY_CLASSES_ROOT\TooBubble\shell]
[HKEY_CLASSES_ROOT\TooBubble\shell\open]
[HKEY_CLASSES_ROOT\TooBubble\shell\open\command]
@="“c:\test.exe” “%1"”
}
try //v80
bisfirst := FALSE; //缺省认为不是第一次运行
strfile := lowercase(Application.ExeName);
reg := TRegistry.Create;
reg.RootKey := HKEY_CLASSES_ROOT; //HKEY_CLASSES_ROOT\指定要操作的主键是
s := 'jjorder'; //指定要操作的key
if reg.OpenKey(s, true) then begin
//v73
{增加对与初次使用程序的判断}
strtmp := lowercase(reg.ReadString('')); //读取关联信息
if strtmp <> lowercase('jjorderProtocol') then begin // 表示是初次运行本程序
//给用户一个提示
bisfirst := true;
showmessage('提示: a订单打印功能,需要修改注册表URL协议关联。');
end;
{增加对与初次使用程序的判断}
reg.WriteString('', 'jjorderProtocol'); //写入asc字串到键值
reg.WriteString('URL Protocol', strfile);
reg.CloseKey;
end; {openkey 里面那个true参数,表示,如果发现key不存在,就自动创建}
s := 'jjorder\shell\open\command';
if reg.OpenKey(s, true) then begin
strfile := lowercase(Application.ExeName);
strfile := '"' + strfile + '" "%1"';
strtmp := lowercase(reg.ReadString('')); //读取关联信息
if strtmp = strfile then begin //表示ok 没有搬过家
// showmessage('已经注册过了');
reg.CloseKey;
reg.Free;
end
else begin //被搬家了 ,需要重新注册路径
//用于打开.sos文件的可执行程序
reg.WriteString('', '"' + Application.ExeName + '" "%1"');
reg.CloseKey;
reg.OpenKey('jjorder\DefaultIcon', true);
//取当前可执行程序的图标为.sos文件的图标
reg.WriteString('', '' + Application.ExeName + ',0'); //0
reg.CloseKey;
reg.Free;
//立即刷新 ,使得修改立即生效
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
end;
//v73
{增加对与初次使用程序的判断}
if bisfirst then begin // 表示是初次运行本程序
//给用户一个提示
showmessage(‘提示:注册表URL协议关联。- OK’);
end;
{增加对与初次使用程序的判断}
end; //
except //v80
end;
end;