中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [VBS]如何右键调用一个我自己的VBS脚本?
作者:
标题: [VBS]如何右键调用一个我自己的VBS脚本? 上一主题 | 下一主题
kich
中级用户





积分 397
发帖 168
注册 2006-10-8
状态 离线
『楼 主』:  [VBS]如何右键调用一个我自己的VBS脚本?

我想在右键菜单中添加一个条目,点击它能调用我自己编写的VBS脚本。

比如说,我在一个文件夹里右击一下,弹出右键,一面有一项自己建的“产生文件列表”这个菜单,执行的话,就执行我指定的一个VBS脚本(我已经编辑好,但我想还缺一个由右键时传递过来的文件夹地址的参数吧)。这样就可以在当前文件下建立一个TXT文本,里面显示的是当前文件夹下所有文件列表!

程序我会编写,就是不知道怎么用右键调用,还有右键怎么传递这个“地址”参数呢??


网上简单查了下说,要什么 CLSID值!
并看见一段代码!
=============================================
我手头有一个注册表文件,它就可以自建CLSID,我想自己也做个。
的确,随意进行修改是行不通的
具体如下:

[HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\Hidext]
@="{00000000-0000-0000-0000-000000000012}"

[HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\Hidext]
@=hex(2):25,53,79,73,74,65,6d,52,6f,6f,74,25,5c,73,79,73,74,65,6d,33,32,5c,73,\
68,64,6f,63,76,77,2e,64,6c,6c,00
"ThreadingModel"="Apartment"

[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000000012}\Instance]
"CLSID"="{3f454f0e-42ae-4d7c-8ea3-328250d6e272}"

[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000000012}\Instance\InitPropertyBag]
"method"="ShellExecute"
"Param1"="c:\\program files\\hide.vbs"
"command"="superhide"
"CLSID"="{13709620-C279-11CE-A49E-444553540000}"
"Alexis" <alexis@microsoft.com> 写入消息新闻:efexsIA9GHA.4644@TK2MSFTNGP04.phx.gbl...
> CLSID 不是建立一个名字就可以使用那么简单,需要赋予 CLSID 各种必需的组件
> 信息,例如执行文件路径、执行文件名称、关联的组件名称等等,总之比较麻烦。
> 一般不建议手动建立新的 CLSID。


至少要分七步走。

第一是查找现有的 CLSID 避免冲突、第二是自己建立 CLSID、第三是在“默认”
值指定 CLSID 名称、第四是在 DefaultIcon 中指定图标、第五是指定执行程序
动态链接库、第六是在 Shell 中指定打开动作、第七是在 ShellFolder 中指定
右键菜单。


前面都好做,关键是要做Shell Namespace扩展,这样必须写一个DLL,估计你没有这个能力。
也许可以等待别人做一个通用的类似插件功能的就好了~

其实你可以用普通的文件关联来达到你的要求就好了~。


==========================================

请高手赐教,怎么做这样的右键连接到我的VBS呢?

2007-3-15 10:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
baomaboy
银牌会员





积分 1513
发帖 554
注册 2005-12-30
状态 离线
『第 2 楼』:  

没这么复杂,

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\AVP6Bak]
@="卡巴斯基病毒库备份"

[HKEY_CLASSES_ROOT\Directory\shell\AVP6Bak\command]
@="wscript.exe \"C:\\WINDOWS\\system32\\AVP6Bak.vbs\" \"%L\""


每个DLL做好后都会有自己的类标识,而且由于修改等原因重新编译后一次
类标识就有变化了,所以说类标识是DLL生成的你自己建了也没作用,
你既然要取文件夹做目标那就在Directory的shell下建立命令啊,
另外象@="wscript.exe c:\\program files\\hide.vbs"这样调用只能是一般的运行而已对于你要建列表来说没效果的,注意要加“L”传递路径等参数,

[ Last edited by baomaboy on 2007-3-19 at 04:43 AM ]

2007-3-19 04:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
baomaboy
银牌会员





积分 1513
发帖 554
注册 2005-12-30
状态 离线
『第 3 楼』:  

@="{00000000-0000-0000-0000-000000000012}"

实际起作用的是于它联动的系统自动的一个默认动态链接库文件,你可以在注册表中由此处追查下去就能找到是哪个库文件了。

2007-3-19 04:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kich
中级用户





积分 397
发帖 168
注册 2006-10-8
状态 离线
『第 4 楼』:  

恩,对要传递路径,那么请问VBS脚本怎么调用这个路径呢?
传递过来,脚本总要调用这个路径再操作吧??

同样,操作文件的时候,也要传递路径!

简单小例子,右键里加“显示文件大小"的功能!
然后,右击某个文件,选择这个功能,就能显示当前文件的大小的命令?
也就是,怎么获得传递过来的这个文件地址呢?

2007-3-19 10:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
baomaboy
银牌会员





积分 1513
发帖 554
注册 2005-12-30
状态 离线
『第 5 楼』:  

msgbox WScript.Arguments(0)

把上面这句保存为VBS文件用右键调用或者直接拖文件到这个VBS文件上你看看什么效果:

2007-3-19 11:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kich
中级用户





积分 397
发帖 168
注册 2006-10-8
状态 离线
『第 6 楼』:  

我是拖文件的,回答是无效字符!
第一行,第一个 !!
呵呵

2007-3-19 11:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kich
中级用户





积分 397
发帖 168
注册 2006-10-8
状态 离线
『第 7 楼』:  

右键导入还没学会!呵呵,谢谢指导!

2007-3-19 11:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
baomaboy
银牌会员





积分 1513
发帖 554
注册 2005-12-30
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by kich at 2007-3-19 11:36:
我是拖文件的,回答是无效字符!
第一行,第一个 !!
呵呵

可能你是复制的吧 是否多复制了不可见的控制符 或者你少复制了字符啊
...sgbox

2007-3-19 11:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
baomaboy
银牌会员





积分 1513
发帖 554
注册 2005-12-30
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by kich at 2007-3-19 11:36:
我是拖文件的,回答是无效字符!
第一行,第一个 !!
呵呵



2007-3-19 11:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kich
中级用户





积分 397
发帖 168
注册 2006-10-8
状态 离线
『第 10 楼』:  

呵呵,好像我是在网吧,禁止VBS,但网吧是怎么做到的呢?

2007-3-19 11:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
baomaboy
银牌会员





积分 1513
发帖 554
注册 2005-12-30
状态 离线
『第 11 楼』:  



  Quote:
Originally posted by kich at 2007-3-19 11:54:
呵呵,好像我是在网吧,禁止VBS,但网吧是怎么做到的呢?

很多方法啊 注册表修改对象的关键字、注销DLL、如果怕你在重新注册的话 直接删掉DLL了。

2007-3-19 12:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kich
中级用户





积分 397
发帖 168
注册 2006-10-8
状态 离线
『第 12 楼』:  

感谢 宝马兄!!
今天下了您好多的文件(当前还下了那个解码文件),回去好好研究下!
相信技术很有长进了!!

幸福!!

2007-3-19 12:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: