Shellexecute是什么意思?一篇文章给你讲清楚!

吉云

今天跟大家唠唠我用`shellexecute`这个东西的一些实践心得,这玩意儿,说白,就是让你用程序去打开一些外部的东西,比如文件,网页,或者直接运行个程序啥的。

一开始接触`shellexecute`,我还觉得挺高大上的,名字听着就唬人。但真正上手之后,发现也就那么回事儿。当时我的需求是,用户点击一个按钮,就要打开一个指定的文件夹。这需求听着简单?但是,如果不用`shellexecute`,我还真不知道怎么搞。

于是我就开始查资料,各种搜,各种看。网上的例子倒是不少,但是直接复制粘贴到我的代码里,总是报错,要么就是没反应。折腾好半天,才发现,原来是参数没搞对。`shellexecute`这玩意儿,参数挺多的,而且每个参数都有不同的含义,一不小心就填错。

Shellexecute是什么意思?一篇文章给你讲清楚!

我就仔细研究下`shellexecute`的各个参数,像是`hwnd`,`lpOperation`,`lpFile`,`lpParameters`,`lpDirectory`,`nShowCmd`这些,一个个查资料,一个个试。

`hwnd`,这个是窗口句柄,我直接填0,表示没有父窗口。

`lpOperation`,这个是操作类型,比如“open”、“print”等等,我这里要打开文件夹,就填“open”。

`lpFile`,这个是要打开的文件或文件夹的路径,我直接写死我想要打开的文件夹路径。

`lpParameters`,这个是传递给程序的参数,我这里不需要,就填0。

`lpDirectory`,这个是程序的默认目录,我这里也不需要,就填0。

Shellexecute是什么意思?一篇文章给你讲清楚!

`nShowCmd`,这个是程序的显示方式,比如最大化、最小化、隐藏等等,我这里要正常显示,就填`SW_SHOWNORMAL`。

搞清楚这些参数之后,我就开始写代码。还是各种报错,各种没反应。后来我发现,原来是我的路径写错。我把路径写成相对路径,但是`shellexecute`需要的是绝对路径。

我就把路径改成绝对路径,再试一下,成!文件夹终于打开!当时那个激动,感觉自己解决一个大难题。

不过问题又来。如果文件夹路径里有空格,`shellexecute`就会报错。我查下资料,发现需要用引号把路径括起来。我就在路径前后加上引号,再试一下,成!终于完美解决这个问题。

后来我又用`shellexecute`做几个其他的需求,比如打开网页,运行程序等等。`shellexecute`还是挺好用的,只要搞清楚各个参数的含义,就可以轻松实现很多功能。

`shellexecute`也有一些缺点。比如,它只能打开一些简单的文件或程序,对于一些复杂的操作,可能就无能为力。而且`shellexecute`的错误处理机制也比较简单,如果出错,只能返回一个错误码,很难定位到具体的原因。

Shellexecute是什么意思?一篇文章给你讲清楚!

不过对于大多数的需求来说,`shellexecute`已经足够用。而且`shellexecute`使用起来非常简单,只需要几行代码就可以实现很多功能。我还是非常喜欢用`shellexecute`的。

总结一下我使用`shellexecute`的一些经验:

一定要搞清楚各个参数的含义,不要盲目地复制粘贴代码。

路径一定要写成绝对路径,不要写相对路径。

如果路径里有空格,一定要用引号把路径括起来。

要仔细阅读`shellexecute`的错误码,以便快速定位问题。

Shellexecute是什么意思?一篇文章给你讲清楚!

希望这些经验对大家有所帮助。

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]