|
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 |
|