需求:调用本机的播放器播放某个文件下的MP4的文件
应用场景:获取某个文件夹下的所有文件名,播放指定的文件
Step1 获取某个文件夹下的所有文件名
void Cxxx_Dialog::GetFileFromDirectory(CString csDirPath, vector<CString> &vctPath)
{
csDirPath+="*.mp4";
HANDLE file;
WIN32_FIND_DATA fileData;
file = FindFirstFile(csDirPath.GetBuffer(), &fileData);
if (file !=INVALID_HANDLE_VALUE)
{
vctPath.push_back(fileData.cFileName);
while(FindNextFile(file, &fileData))
{
vctPath.push_back(fileData.cFileName);
}
}
}
参数说明:
参数1:csDirPath 某个文件夹的路径例如 D://testFile//
参数2:vctPath 用来接收指定文件夹下的所有文件名
函数说明:主要是使用 FindFirstFile 和 FindNextFile 这两个FILE操作相关的接口 来实现这个功能。
Step2 播放指定的路径的文件
if(PathFileExists(strPlayPathName))
ShellExecute(NULL, _T("Open"), strPlayPathName, NULL, NULL, SW_SHOWNORMAL);
参数说明:strPlayPathName这个参数是完整的文件路径 例如:D://testFile//1.MP4
通过ShellExecute来调用外部的程序软件
根据MSDN提供的说明可知:
HINSTANCE ShellExecuteA(
HWND hwnd, //父窗口的句柄,用于显示UI或错误消息。如果操作未与窗口关联,则此值可以为NULL。
LPCSTR lpOperation, //可执行的操作 如:edit,explore,find,open,print,NULL
LPCSTR lpFile, //执行文件的路径
LPCSTR lpParameters, //如果exe类型的文件,则这个参数是传入exe的参数之一;否则为NULL即可
LPCSTR lpDirectory, //同上 执行exe相关的路径设置
INT nShowCmd //显示的方式; 如:SW_HIDE,SW_SHOW 等等
);
具体的说明可参照:
https://docs.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shellexecutea
文章处理文件的方式参考: