我想在我的C#代码中从Windows启动运行对话框(Windows + R)。
我认为可以使用explorer.exe完成此操作,但是我不确定如何执行。
最佳答案
不支持RunFileDlg
API,Microsoft可能会从Windows的 future 版本中删除IShellDispatch::FileRun
API(我同意MS对向后兼容性的 promise ,以及尽管该API尚未公开,但似乎广为人知的事实使得这种可能性不大,但仍然存在一个潜在可能)。
启动运行对话框的受支持方法是使用 RunFileDlg
方法。
在C#中,可以通过以下方式访问此方法:转到“添加引用”,选择“COM”选项卡,然后选择“Microsoft Shell控件和自动化”。完成此操作后,您可以启动对话框,如下所示:
Shell32.Shell shell = new Shell32.Shell();
shell.FileRun();
是的,
[STAThread]
API提供了更多的可定制性,但这具有被记录,受支持的优点,因此将来不太可能破坏。请注意,Shell32必须在STA线程上运行。如果您的代码中出现异常,请像下面这样在方法声明上方添加ojit_code,例如:
[STAThread]
private static void OpenRun() {
//Shell32 code here
}
任何调用使用Shell32的方法的方法也应在STA线程上运行。