中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]CMD调用“开始”菜单中的“运行”
作者:
标题: [求助]CMD调用“开始”菜单中的“运行” 上一主题 | 下一主题
bilv
新手上路





积分 7
发帖 4
注册 2006-10-27
状态 离线
『楼 主』:  [求助]CMD调用“开始”菜单中的“运行” [已使用 LLM 解释]

CMD或批处理中,怎样才调用“开始”菜单中的“运行”?

Last edited by bilv on 2010-11-5 at 14:32 ]
LLM 解释

解决方案

在CMD或批处理中,调用“开始”菜单中的“运行”可以通过以下几种方式:

方法一:使用 start 命令结合 explorer 来启动“运行”对话框

在CMD窗口或者批处理脚本中输入以下命令:

start "" rundll32.exe shell32.dll,Control_RunDLL

这里的原理是利用 start 命令来启动一个新的进程。rundll32.exe 是一个系统进程,它可以调用动态链接库中的函数。shell32.dll 是Windows外壳相关的动态链接库,Control_RunDLLshell32.dll 中的一个函数,它会打开“运行”对话框。

方法二:通过发送特定的Windows消息来实现(使用VBScript结合批处理)

首先创建一个VBScript脚本文件,比如 run.vbs,内容如下:

Set objShell = CreateObject("WScript.Shell")
objShell.Run "rundll32.exe shell32.dll,Control_RunDLL"

然后在批处理脚本中调用这个VBScript脚本:

cscript //nologo run.vbs

这里VBScript通过 WScript.Shell 对象来运行 rundll32.exe 相关命令,从而启动“运行”对话框。

方法三:使用PowerShell结合批处理

在批处理中调用PowerShell来执行启动“运行”对话框的操作。例如:

powershell -Command "[System.Diagnostics.Process]::Start('rundll32.exe','shell32.dll,Control_RunDLL')"

PowerShell提供了强大的进程管理功能,通过 System.Diagnostics.Process 类的 Start 方法来启动新的进程,这里启动 rundll32.exe 进程并传递相关参数来调用 Control_RunDLL 函数。

背景信息:

在Windows系统中,“运行”对话框是一个常见的功能,用户可以通过它来快速启动程序、打开文件夹或者执行一些系统命令。CMD(命令提示符)和批处理脚本是Windows系统中用于执行命令行操作的工具。而 rundll32.exe 是系统中用于调用动态链接库函数的程序,shell32.dll 包含了很多与Windows外壳相关的函数,Control_RunDLL 函数是 shell32.dll 中用于打开“运行”对话框的关键函数。VBScript是一种基于Windows脚本宿主的脚本语言,PowerShell是一种任务自动化和配置管理框架,结合批处理脚本可以实现更灵活的命令行操作。



2010-11-5 14:24
查看资料  发短消息  网志   编辑帖子  回复  引用回复
LTQ
新手上路




积分 19
发帖 16
注册 2023-7-3
状态 离线
『第 2 楼』:   使用 LLM 解释/回答一下

不用调用,start就行


2023-8-25 10:27
查看资料  发送邮件  发短消息  网志  OICQ (86684092)  编辑帖子  回复  引用回复
chenyucheng
初级用户

我是新人



积分 152
发帖 70
注册 2023-7-21
来自 浙江省台州市
状态 离线
『第 3 楼』:  回覆 [已使用 LLM 解释]

start %WINDIR%\explorer.exe shell:::{一串代码}

有一串代码可以打开“运行”窗口。具体是什么,稍后再讲。
LLM 解释

背景信息

在Windows操作系统的CMD(命令提示符)环境中,start命令用于启动一个程序、文件或文件夹等。%WINDIR%\explorer.exe表示调用Windows系统目录下的资源管理器程序。而shell:::{特定代码}这种形式是利用Windows的Shell命名空间来访问特定的系统功能或文件夹等。

具体实现打开“运行”窗口的代码

要通过CMD调用打开“运行”窗口,对应的shell:::后面的代码是{2559a1f3 - 21d7 - 11d4 - bdaf - 00c04f60b9f0}。所以完整的命令应该是:

start %WINDIR%\explorer.exe shell:::{2559a1f3 - 21d7 - 11d4 - bdaf - 00c04f60b9f0}

技术细节及多种解决方案探讨

  • 技术细节
    • Windows的Shell命名空间是一种分层的结构,通过特定的GUID(全局唯一标识符)来标识不同的系统位置或功能。上面提到的GUID{2559a1f3 - 21d7 - 11d4 - bdaf - 00c04f60b9f0}就唯一标识了“运行”窗口对应的Shell对象。
    • explorer.exe作为资源管理器程序,能够解析并打开由Shell命名空间指定的对象。
  • 多种解决方案
    • 使用VBScript脚本:可以编写一个VBScript脚本,例如:
Set objShell = CreateObject("WScript.Shell")
objShell.Run "rundll32.exe shell32.dll,Control_RunDLL"

然后通过CMD执行该VBScript脚本,也能达到打开“运行”窗口的目的。这里rundll32.exe用于调用动态链接库中的函数,shell32.dll中的Control_RunDLL函数可以用来打开“运行”相关的功能。 - 使用PowerShell:在PowerShell中可以使用以下命令来打开“运行”窗口:

[System.Diagnostics.Process]::Start("rundll32.exe", "shell32.dll,Control_RunDLL")

PowerShell是Windows提供的强大脚本环境,通过调用系统进程的方式来实现相同的功能。





新手上路!
现在的我来研究研究,我小时没用过的操作系统--DOS。古老的DOS资源比较稀缺,现在新开发的DOS软件也很少,还需要大家的努力,让DOS玩出新花样.
2023-9-2 16:40
查看资料  发送邮件  发短消息  网志  OICQ (744766348)  编辑帖子  回复  引用回复

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


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



论坛跳转: