vb代码让cmd执行命令_windows – 如何使用VBScirpt在已打开的CMD窗口中执行命令

您可以尝试通过将按键作为Windows消息发送到运行程序的CMD窗口以编程方式键入命令.

我不知道VBS,也许它有一个功能或函数映射到系统API函数PostMessage和/或SendMessage.如果它确实很好,特别是如果有人发布了解释如何使用它们的答案.与此同时,我可以在批处理文件中向您展示如何在名为SendMessage的实用程序的帮助下使用此方法.

基本上,该实用程序允许您将任意Windows消息发送到任意窗口,如下所示:

SendMessage.exe target_specification /message:value /wparam:value /lparam:value

我将稍后解决target_specification位,其他参数是:

> / message:value – 正在发送的消息,由代码指定.在你的情况下,它将是以下之一:

/message:WM_CHAR

/message:258

/message:0x0102

这些都指定了WM_CHAR message.

> / wparam:value – 对于WM_CHAR消息,这个消息应该是正在发送的击键代码.

在您的情况下,由于您的命令仅由ASCII字符组成,因此所有代码都将匹配相应字符的ASCII代码.因此,您可以使用ASCII chart转换命令中的字符.例如,s将是

/wparam:115

和h

/wparam:104

等等.

/wparam:13

> / lparam:value – 从WM_CHAR’s manual page可以看出LPARAM参数实际上应该作为单个数值携带多条信息.但是,对于您的具体情况,只需记住该参数应该简单地指定为

/lparam:1

现在到目标规范部分.这个可能很棘手.您将从the tool’s web page的描述中了解到指定目标窗口的方法有多种.但是,并非每种方法都适用于您.

例如,您可以尝试按进程名称指定目标:

/processname:name_of_your_executable

但是,如果您没有直接调用您的程序,而是在例如批处理文件,然后程序将不会在自己的窗口中运行,而是借用托管CMD会话的窗口,因此这种方法可能无法正常工作.

如果这确实是您调用程序的方式,那么您可以尝试使用窗口标题来指定目标:

/windowtitle:window_title

这里要记住的唯一警告是标题必须唯一地标识所需的窗口,否则键击将被发送到与指定标题匹配的所有窗口.您可以尝试通过在调用程序的批处理中使用title命令来统一标题(在调用程序之前设置它).

因此,总结一下,完整的备份脚本(批处理脚本)可能是这样的,假设为了示例的目的,目标窗口将由其标题指定:

@ECHO OFF

:: s

SendMessage.exe /windowtitle:"My Title" /message:WM_CHAR /wparam:115 /lparam:1

:: h

SendMessage.exe /windowtitle:"My Title" /message:WM_CHAR /wparam:104 /lparam:1

:: u

SendMessage.exe /windowtitle:"My Title" /message:WM_CHAR /wparam:117 /lparam:1

:: t

SendMessage.exe /windowtitle:"My Title" /message:WM_CHAR /wparam:116 /lparam:1

:: d

SendMessage.exe /windowtitle:"My Title" /message:WM_CHAR /wparam:100 /lparam:1

:: o

SendMessage.exe /windowtitle:"My Title" /message:WM_CHAR /wparam:111 /lparam:1

:: w

SendMessage.exe /windowtitle:"My Title" /message:WM_CHAR /wparam:119 /lparam:1

:: n

SendMessage.exe /windowtitle:"My Title" /message:WM_CHAR /wparam:110 /lparam:1

:: ENTER

SendMessage.exe /windowtitle:"My Title" /message:WM_CHAR /wparam:13 /lparam:1

:: y

SendMessage.exe /windowtitle:"My Title" /message:WM_CHAR /wparam:121 /lparam:1

:: e

SendMessage.exe /windowtitle:"My Title" /message:WM_CHAR /wparam:101 /lparam:1

:: s

SendMessage.exe /windowtitle:"My Title" /message:WM_CHAR /wparam:115 /lparam:1

:: ENTER

SendMessage.exe /windowtitle:"My Title" /message:WM_CHAR /wparam:13 /lparam:1

:: wait for some time (~3 sec) till the program shuts down,if necessary

PING -n 4 localhost 1>NUL

:: proceed with the back-up

...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值