C# 执行类似Start>;在C中运行#

C# 执行类似Start>;在C中运行#,c#,.net,pinvoke,C#,.net,Pinvoke,我想创建一个命令执行器,如Start>Run。该应用程序有一个文本框,当用户输入命令时,例如:记事本“C:\test.txt”它应该打开带有此文件的记事本或%PROGRAMFILES%它应该打开“Programs Files”目录 对于%PROGRAMFILES%和其他Windows变量,我可以使用Environment.ExpandEnvironmentVariable,获取它们的路径并传递到进程。启动 对于记事本,我可以用空格分隔,第一部分进入文件名,其余字符串进入进程startinfo的参

我想创建一个命令执行器,如
Start>Run
。该应用程序有一个
文本框
,当用户输入命令时,例如:
记事本“C:\test.txt”
它应该打开带有此文件的记事本或
%PROGRAMFILES%
它应该打开“Programs Files”目录

对于
%PROGRAMFILES%
和其他Windows变量,我可以使用
Environment.ExpandEnvironmentVariable
,获取它们的路径并传递到
进程。启动

对于记事本,我可以用空格分隔,第一部分进入
文件名
,其余字符串进入
进程startinfo的
参数


但我想知道的是,“开始”>“运行”是如何工作的?是否有类似于我可以在不拆分命令行或扩展变量的情况下执行整个命令的功能?可能是pinvoke?

据我所知,运行对话框是通过调用
ShellExecuteEx
实现的。您可以通过
过程实现同样的效果。启动
使用ShellExecute
。您确实需要展开环境变量,并将命令拆分为文件名和参数。您已经在问题中描述了如何做到这一点,而且,就我所知,运行对话框的功能没有编程接口


但是,可以通过编程方式显示“运行”对话框。创建请求接口的对象的实例,然后调用该方法。

也许您可以使用
start
命令行命令?在这里您可以找到运行对话框搜索的一些详细信息-