当前位置:主页>销售管理软件> 列表

关于shell的,我觉得比较难

财务软件版1楼: 在windows上面选择一个文件,右键,会出现环境菜单,我希望实现的功能是,在获取一个文件的handle以后,能得到他的环境菜单,然后执行其中的某一个。比如,机器上安装了winrar以后,我就能获得的文件的环境菜单上关于用winrar进行压缩的选项并且执行。
感觉比较麻烦的,请各位富翁指点了。

2楼: 文件关联到哪个应用程序好像是已经写到注册表里去了呀,直接读注册表吧. 如小企业财务管理软件

3楼: 顶,同意楼上。
procedure registerfiletype(ext,key,desc,icon,prg:string);
//ext: 文件名后缀 ,如可以为 ''.tst'' 或 ''afile.tst''
//key: 在注册表中的键值 ,要唯一
//desc: 关联程序的描述
//icon: 缺省的程序图标 ,如 Application.ExeName+'',1'',可以缺省
//prg: 对应的应用程序
var myreg : treginifile;
ct : integer;
begin
// 取文件的后缀
ct := pos(''.'',ext);
while ct > 0 do begin
delete(ext,ct,1);
ct := pos(''.'',ext);
end;
if (ext = '''') or (prg = '''') then exit; // 判断后缀及应用程序是否有效
ext := ''.''+ext;
myreg := treginifile.create('''');
try
myreg.rootkey := hkey_classes_root; // 根应该为 HKEY_CLASSES_ROOT
if key = '''' then key := copy(ext,2,maxint)+''_auto_file'';
// 如果没给出键值 ,则自动创建一个
myreg.writestring(ext,'''',key); // 写入描述的键值
myreg.writestring(key,'''',desc); // 写入描述
if icon <> '''' then
myreg.writestring(key+''\DefaultIcon'','''',icon);
// 写入缺省图标
myreg.writestring(key+''\shell\open\command'','''',prg+'' "%1"'');
// 写入相关联的应用程序
finally
myreg.free;
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil); //发送消息给系统
end;
end;

4楼: 好像还是没有说清楚,就这么说好了
我希望做一个对文件操作的程序,实现的功能是1。知道选择的文件的上下文菜单有那些项。2。在程序里面能够选择执行我需要的某一项。
例如我的机器上安装了winrar,我就希望得到右键点击后的extract File...并执行

5楼: 楼上已经告诉你了啊。直接读注册表就可以知道有些什么扩展了。

另外winrar有命令行模式的,可能更适合你。

6楼: 你可以参考《windows外壳扩展编程入门实例》,我想应该能解决你的问题