【发布时间】:2019-08-23 16:05:30
【问题描述】:
我正在尝试从 DLL 中播放音乐。但是,每当我尝试这样做时,PlaySound 函数什么都不做。
我已经尝试在资源中包含 wav 文件,并且我知道当我将 DLLMain 编译为普通主文件时,该代码可以正常运行,它可以毫无问题地播放音乐。 DLLMain 代码如下所示:
if (ul_reason_for_call == DLL_PROCESS_ATTACH) {
PlaySoundA("C:\\Sound.wav", NULL, SND_FILENAME);
}
return TRUE;
奇怪的是,我可以看到这首歌在程序的记忆中;它的内存使用量上升到它播放歌曲时应该做的事情,但它没有声音。此外,编译为 exe 的相同代码也可以完美运行;我不知道出了什么问题。
更新: 事实证明这是因为您无法在 DLLMain 中执行很多事情 - 有什么办法可以解决这个问题吗?
【问题讨论】:
-
不要在 DllMain 中做任何有趣的事情:docs.microsoft.com/en-us/windows/win32/dlls/dllmain