微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

创建简单的自定义上下文菜单命令-如何运行使用右键单击的文件路径/名称的VB脚本?

如何解决创建简单的自定义上下文菜单命令-如何运行使用右键单击的文件路径/名称的VB脚本?

我下载了一个文件,并想验证它的MD5校验和。 7Zip的文件上下文菜单输出不包含MD5校验和,因此我从Windows站点下载了fciv.exe,并将其复制到了System32文件夹中。

然后,我尝试添加一个自定义上下文菜单项。我发现我可以在Computer \ HKEY_CLASSES_ROOT * \ shell处修改注册表,并在其下面添加带有命令键的MD5密钥以执行cmd /k fciv.exe "%1"作为解决方案。

但是,我想走得更远,并使用VB脚本将输出发送到简单的消息框,而不是打开控制台。我发现代码here如下:

Option Explicit

Const WshRunning = 0
Const WshFinished = 1
Const WshFailed = 2

Dim shell : Set shell = CreateObject("WScript.Shell")
Dim exec : Set exec = shell.Exec("fciv.exe filename-from-right-click")

While exec.Status = WshRunning
    WScript.Sleep 50
Wend

Dim output

If exec.Status = WshFailed Then
    output = exec.StdErr.ReadAll
Else
    output = exec.StdOut.ReadAll
End If

WScript.Echo output

这就是我被困住的地方:

  1. 我不知道如何修改脚本以使用右键单击菜单中可用的文件路径 第二,甚至在我尝试运行脚本时。

  2. 当我什至尝试使用上下文菜单运行脚本时,Windows都会弹出一个“此应用程序无法在您的PC上运行”的弹出窗口。

有什么建议吗?如果它是可复制文本的对话框,则加分。预先感谢!

解决方法

例如,假设您创建了c:\ temp \ md5.vbs(并且脚本可以正常工作!),为什么不将命令值设置为(通过导入此注册表):

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\MD5]
@="Get MD5 Checksum"

[HKEY_CLASSES_ROOT\*\shell\MD5\command]
@="wscript.exe \"c:\\temp\\md5.vbs\" \"%1\""

和您的脚本可以:

Option Explicit

Const WshRunning = 0
Const WshFinished = 1
Const WshFailed = 2

Dim shell : Set shell = CreateObject("WScript.Shell")
Dim exec : Set exec = shell.Exec("fciv.exe " & chr(34) & Wscript.Arguments(0) & chr(34))

While exec.Status = WshRunning
    WScript.Sleep 50
Wend

Dim output

If exec.Status = WshFailed Then
    output = exec.StdErr.ReadAll
Else
    output = exec.StdOut.ReadAll
    InputBox "Copy and paste your MD5 checksum","MD5 Checksum",output 
End If

Set exec = Nothing
Set shell = Nothing

这是未经测试的,您可能想要“可变”(环境变量?)c:\ temp \在现实世界中的位置,而不是硬编码的路径...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?