求教以下C++播放*.wav的代码
我要是用它来播放x64dbg.exe 内置的资源中的.wav文件 ,那个路径是不是得修改一下?因为,我看到的QT的源码中是这样的:
QFile file(":/icons/images/egg.wav"); <=======看这句!!!!
if(file.open(QIODevice::ReadOnly))
{
QByteArray egg = file.readAll();
PlaySoundA(egg.data(), 0, SND_MEMORY | SND_ASYNC | SND_NODEFAULT);
}
#include <Windows.h>
#include <mmsystem.h>
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <assert.h>
#pragma comment(lib,"WinMM.Lib")
using namespace std;
BOOL MByteToWChar(LPCSTR lpcszStr, LPWSTR lpwszStr, DWORD dwSize)
{
// Get the required size of the buffer that receives the Unicode
// string.
DWORD dwMinSize;
dwMinSize = MultiByteToWideChar(CP_ACP, 0, lpcszStr, -1, NULL, 0);
assert(dwSize >= dwMinSize);
// Convert headers from ASCII to Unicode.
MultiByteToWideChar(CP_ACP, 0, lpcszStr, -1, lpwszStr, dwMinSize);
return TRUE;
}
int main(int argc, char** argv)
{
string s = "D:\\MyDesktop\\6.wav";// "bt.wav";
wchar_t wText = { 0 };
MByteToWChar(s.c_str(), wText, sizeof(wText) / sizeof(wText));
PlaySound(wText, NULL, SND_FILENAME | SND_SYNC);
system("pause");
return 0;
}
一个是绝对的,一个是相对的。
一个是外部的,一个是资源包内置的。
调用方式也得变吧? 后面部分代码,都没读文件吧?那播放不了
QT那个是读取资源文件中所有内容,放到播放里。
而下面那个vc的代码就没有读文件,只是穿了个路径进去。 Eaglecad 发表于 2021-11-27 21:39
后面部分代码,都没读文件吧?那播放不了
QT那个是读取资源文件中所有内容,放到播放里。
@Eaglecad
求大师兄给改个相对路径的(能调内部文件的)完整版的C++实现代码(第2段部分) 不是 你这个转换字符串是干什么的?直接读取文件到buff里不就可以播放了 播放不行吗?playsound好像是100k以下才可以 92013 发表于 2021-11-27 22:14
不是 你这个转换字符串是干什么的?直接读取文件到buff里不就可以播放了
应该加个L或TEXT就行了… 冥界3大法王 发表于 2021-11-27 22:08
@Eaglecad
求大师兄给改个相对路径的(能调内部文件的)完整版的C++实现代码(第2段部分)
http://www.360doc.cn/mip/874485227.html可以参考这个试试,没开电脑,就没试。 谢谢诸位,一会试试。
有了x64dbg编译环境,果然能办很多事。
刚把向命令行传内置命令学会,这次可以办很多梦想中的事情了。{:301_986:} 不懂 有时间可以都试试
页:
[1]