如何在未知扩展名时使用ShellExecuteA打开关联视频文件?
问题:如何通过无扩展名的文件名打开对应视频文件?
std::string str1 = "C:\\Users\\user\\Desktop\\Notes"; ShellExecuteA(NULL, "open", str1.c_str(), NULL, NULL, SW_SHOWNORMAL);
这段代码的适用场景很有限。
我在DJ程序中处理.mp3文件时,这些文件的某个标签里存储了关联视频的文件名,之前所有视频都是.mpeg格式。通过DJ软件的API我能获取到标签内容,也知道视频文件的存储路径(所有视频都在同一个文件夹下)。因为扩展名固定,就算标签里只有文件名没有扩展名,我也能拼接出完整路径用ShellExecuteA()打开视频。
现在的问题是:我打算改用.avi、.h264等其他格式的视频,这时没法提前知道扩展名,但ShellExecuteA()必须要带扩展名的完整文件名才能正常工作。
我不想在.mp3的标签里添加扩展名,目前想到两个解决思路:
- 暴力枚举可能的扩展名,依次尝试
.mpeg、.avi、.h264等,只要ShellExecuteA()不返回错误就停止; - 在已知的视频存储路径下,搜索与标签中文件名(不含扩展名)匹配的文件,直接获取完整的文件名(所有文件名即便去掉扩展名也是唯一的)。
内容的提问来源于stack exchange,提问作者locodog
相关产品推荐
相关产品推荐

