当前位置:   article > 正文

Windows编程:在程序中打开文件和文件夹_shellexecutew 打开路径

shellexecutew 打开路径

ShellExecute函数用于执行shell命令,可用于打开文件夹或文件,ShellExecute函数的多字节版本ShellExecuteA(宽字符版本为ShellExecuteW)原型如下

HINSTANCE ShellExecuteA(HWND hwnd,LPCSTR lpOperation,LPCSTR lpFile,LPCSTR lpParameters,LPCSTR lpDirectory,INT nShowCmd);

hwnd为父窗口版本,如果不需要父窗口则传入NULL
lpOperation字符串指示操作行为,可取edit/explore/find/open/print,打开文件夹和文件主要用到explore和open
lpFile文件或文件夹路径
lpParameters如果lpFile是可执行文件,这里作为其参数,不然传NULL即可
lpDirectory被执行文件的工作路径,如果是NULL,则默认是当前程序的工作路径,如果被执行文件需要查找含相对路径的文件时可能需要设置这个值
nShowCmd打开的文件窗口显示模式SW_*宏,如SW_HIDE/SW_SHOW,这个参数被传给打开的可执行文件(WinMain的第四个参数),至于要怎么处理由它自己决定
该函数返回HINSTANCE类型,可转为int,大于42时表示操作成功,下面是官方文档列出的错误


需包含头文件#include <shellapi.h>
1、打开文件夹
下面函数用于打开文件夹,打开文件夹第二个参数传入"explore",第三个参数为文件夹路径

  1. void OpenFolder(const char* folderPath)
  2. {
  3.     int ret = (int)::ShellExecuteA(NULL, "explore", folderPath, NULL, NULL, SW_SHOWNORMAL);
  4.     if (ret <= 32)
  5.     {
  6.         //打开出错
  7.     }
  8. }

2、打开文件
打开文件时ShellExecuteA第二个参数传入"open",第三个参数传文件路径(传文件夹路径时也可以打开文件夹),第四个参数可传入执行参数,将该功能定义为函数ExecuteFile

  1. void ExecuteFile(const char* filePath,const char* param=NULL)
  2. {
  3.     int ret = (int)::ShellExecuteA(NULL, "open", filePath, param, NULL, SW_SHOWNORMAL);
  4.     if (ret <= 32)
  5.     {
  6.         //打开出错
  7.     }
  8. }

调用ExecuteFile可用于打开文档、可执行文件、网址,还可以打开默认邮件客户端发送邮件
(1)打开文档
filePath传入文档路径时,会以该文档默认打开方式打开文档,如传入图片路径则使用默认看图软件打开图片

ExecuteFile("F:/test.png");

(2)打开可执行文件
filePath传入可执行文件路径

ExecuteFile("calc.exe");

(3)打开网址
filePath传入网址

ExecuteFile("https://www.baidu.com");

(4)发送邮件
filePath传入"mailto:"就会打开默认邮件客户端

ExecuteFile("mailto:");

"mailto:"后面还可以跟其他可选的参数,比如收件人邮件地址,主题和主体内容

ExecuteFile("mailto:123456@qq.com?subject=你好&body=我在测试发送邮件");

Windows系统有一个文件资源管理器explorer.exe,可用于文件的管理,filePath传入"explorer.exe",在param传入一些参数也可以实现文件或文件夹打开的功能
如参数/select用于打开文件所在的文件夹并选中该文件

ExecuteFile("explorer.exe","/select,F:\\test.png");

这句代码打开F盘文件夹,并选中test.png,而不是直接打开图片,注意select后面的逗号以及文件路径使用\\分隔符
打开文件夹可使用/e参数

ExecuteFile("explorer.exe","/e,C:\\Program Files");

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/281840
推荐阅读
相关标签
  

闽ICP备14008679号