怎样实现。。。(50分)

  • 主题发起人 主题发起人 qf0421
  • 开始时间 开始时间
Q

qf0421

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样将自己的程序加入到系统的右键菜单中去?
即:将某一类型的文件默认打开方式设为我的程序?
 
才看的一篇文章推荐给你!!!

右键任来去
用于开发WINDOWS程序的语言不少,一般来说小型通用程序用DELPHI是个不错的选择,没听说过吗?——“聪明的程序员用DELPHI”。我们上网常用的FOXMAIL、网络蚂蚁等都是用它开发的。

兴致来了用DELPHI做个小程序,要与朋友们共享,想没想过将它注册到系
统的右键中?朋友们只需在文件上点击右键,就可以选择启动你的杰作来工作
了。
现在就演示一下如何召唤右键:
procedure TForm1.Button1Click(Sender: TObject);var
a:TRegistry;begin
a:=TRegistry.create;
a.rootkey:=HKEY_CLASSES_ROOT;
//用openkey打开一个主键,如果此主键不存在则自动创建
if a.openkey('*/shell/cutbig',true) then
begin
//用writestring将设置值写入打开的主键 a.writestring('','切割与组装(&k)');
a.closekey;
end;
if a.openkey('*/shell/cutbig/command',true) then
begin
//command子键的内容是点击右键后选择相应项后要运行的程序; //%1是在单击右键时选中的文件名
a.writestring('','c:/delphi/myprogram.exe'+'"%1"'); a.closekey;
end;
a.free;end;
当然,要记住在interface的USES中加入registry单元,否则编译时无法识别TRegistry,这是DELPHI
为处理注册表而提供的。
如果需要删去右键的这个功能,如何做,很简单:
procedure TForm1.Button2Click(Sender: TObject);
var a:TRegistry;
begin

a:=TRegistry.create;
a.rootkey:=HKEY_CLASSES_ROOT;
//用deletekey删除一个主键,其所包含的子键也被删除,如果已无此主键,
运行删除操作不会带来别的危害
a.deletekey('*/shell/cutbig');
a.free;end;
怎么样,右键呼之即来,挥之即去的感觉,酷吧?
_____________________________________________________________________
 
那程序怎样得到传递的参数呢?
另外,我如何将特定的文件与我的程序关联呢?
上面的程序好象不能解决这个问题。
 
//定义注册表变量
g_Regini : TRegIniFile;

//建立注册表
g_Regini := TRegIniFile.Create('');
g_Regini.RootKey := HKEY_CLASSES_ROOT;

//得到指定文件类型在注册表中的位置
strFileContent := '/' + g_Regini.ReadString('/.txt', '', 'txtfile');

//写入自定义的操作方式
g_Regini.WriteString(strFileContent + '/shell/自己的操作方式/command', '', ParamStr(0) + ' %1');

//释放注册表
g_Regini.Free;

带上参数的话,只要在程序启动的时候检测ParamCount(参数个数)、ParamStr(index)(参数内容)就可以了。
 
多人接受答案了。
 
后退
顶部