shellexecute函数详解,使用技巧与注意事项!

吉云

今天给大家伙儿分享一下我最近折腾的 `shellexecute` 实践记录,一开始我对这个东西也是一头雾水,各种查资料,然后一点点摸索,总算是搞明白。

先说说我遇到的需求,就是想在程序里直接调用系统默认的程序打开指定的文件,比如说,我想用默认的图片查看器打开一张图片,或者用默认的浏览器打开一个网页。一开始我想到的是 `WinExec()`,但是发现它只能打开 `.exe` 文件,其他的就不行。

然后我就开始找别的办法,这才发现 `ShellExecute` 这个好东西。简单来说,它就是个“万能钥匙”, 啥都能打开,文本文件、图片、网页,甚至可以直接运行程序。

shellexecute函数详解,使用技巧与注意事项!

接下来就是具体的操作。我先是查 `ShellExecute` 的函数原型,发现要传好几个参数,当时有点懵。

c++

HINSTANCE ShellExecute(

HWND hwnd,

LPCSTR lpOperation,

LPCSTR lpFile,

shellexecute函数详解,使用技巧与注意事项!

LPCSTR lpParameters,

LPCSTR lpDirectory,

INT nShowCmd

`hwnd`:这个就是父窗口的句柄,一般传 `NULL` 就行。

shellexecute函数详解,使用技巧与注意事项!

`lpOperation`:这个是要执行的操作,比如 "open" 就是打开,"print" 就是打印,如果传 `NULL`,系统会自动判断。

`lpFile`:这个就是要打开的文件或者网址的路径。

`lpParameters`:这个是传递给程序的参数,如果打开的是文件,一般传 `NULL`。

`lpDirectory`:这个是程序的默认目录,一般传 `NULL`。

`nShowCmd`:这个是程序的显示方式,比如 `SW_SHOWNORMAL` 是正常显示,`SW_MAXIMIZE` 是最大化显示。

搞清楚这些参数之后,我就开始写代码。

shellexecute函数详解,使用技巧与注意事项!

c++

#include

int main() {

// 打开一个图片文件

ShellExecute(NULL, "open", "C:\\*", NULL, NULL, SW_SHOWNORMAL);

// 打开一个网页

shellexecute函数详解,使用技巧与注意事项!

ShellExecute(NULL, "open", "*", NULL, NULL, SW_SHOWNORMAL);

// 运行一个程序

ShellExecute(NULL, "open", "C:\\Windows\\System32\\*", NULL, NULL, SW_SHOWNORMAL);

return 0;

shellexecute函数详解,使用技巧与注意事项!

这段代码很简单,就是分别用 `ShellExecute` 打开一个图片文件、一个网页和一个计算器程序。

编译运行之后,发现都能正常打开,心里那个高兴!

在实际使用中,肯定会遇到各种各样的问题。比如,文件路径不对,程序找不到,等等。这个时候就要仔细检查代码,看看是不是哪里写错。

我还试用 `ShellExecute` 来打开目录,发现也很好用。

c++

ShellExecute(NULL, "explore", "C:\\", NULL, NULL, SW_SHOWNORMAL); //打开C盘

shellexecute函数详解,使用技巧与注意事项!

`ShellExecute` 是个非常实用的函数,可以让我们很方便地在程序里调用系统默认的程序来打开各种文件。学会它,感觉自己又掌握一项新的技能,以后遇到类似的需求就不用愁。

今天的分享就到这里,希望对大家有所帮助。下次再见!

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

目录[+]