#include <Windows.h>
typedef BOOL(WINAPI* PlaySoundFunc)(LPCTSTR lpszSound, HMODULE hmod, DWORD fdwSound);
PlaySoundFunc g_pOrigPlaySound = nullptr;
BOOL WINAPI MyPlaySound(LPCTSTR lpszSound, HMODULE hmod, DWORD fdwSound)
{
// 在这里编写你想要替代PlaySound()函数的代码
// ...
// 调用原始的PlaySound()函数
if (g_pOrigPlaySound)
{
return g_pOrigPlaySound(lpszSound, hmod, fdwSound);
}
return FALSE;
}
HHOOK g_hHook = nullptr;
LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode == HCBT_CREATEWND && wParam == 0)
{
HWND hWnd = (HWND)lParam;
TCHAR szClassName[256];
if (GetClassName(hWnd, szClassName, sizeof(szClassName) / sizeof(TCHAR)) > 0 &&
_tcscmp(szClassName, _T("#32770")) == 0) // 对话框窗口类名为"#32770"
{
// 在对话框创建时钩取PlaySound()函数
HMODULE hMod = GetModuleHandle(NULL);
g_pOrigPlaySound = (PlaySoundFunc)GetProcAddress(hMod, "PlaySoundW");
if (g_pOrigPlaySound)
{
g_hHook = SetWindowsHookEx(WH_CBT, (HOOKPROC)MyPlaySound, hMod, GetCurrentThreadId());
}
}
}
return CallNextHookEx(g_hHook, nCode, wParam, lParam);
}
int main()
{
// 安装钩子函数
HHOOK hHook = SetWindowsHookEx(WH_CBT, CBTProc, NULL, GetCurrentThreadId());
// 运行你的应用程序
// 卸载钩子函数
UnhookWindowsHookEx(hHook);
return 0;
}
````在这里插入代码片`## 机缘
提示:可以和大家分享最初成为创作者的初心
例如:
1. 实战项目中的经验分享
2. 日常学习过程中的记录
3. 通过文章进行技术交流
4. ...
---
## 收获
提示:在创作的过程中都有哪些收获
例如:
1. 获得了多少粉丝的关注
2. 获得了多少正向的反馈,如赞、评论、阅读量等
3. 认识和哪些志同道合的领域同行
4. ...
---
## 日常
提示:当前创作和你的工作、学习是什么样的关系
例如:
1. 创作是否已经是你生活的一部分了
2. 有限的精力下,如何平衡创作和工作学习
3. ...
---
## 成就
提示:你过去写得最好的一段代码是什么? 请用代码块贴出来
例如:
1. 某个解题代码
2. 某个项目实现代码
3. …
---
## 憧憬
提示:职业规划、创作规划等
**Tips**
1. 您发布的文章将会展示至 [里程碑专区](https://blog.youkuaiyun.com/rank/list/milestone) ,您也可以在 [专区](https://blog.youkuaiyun.com/rank/list/milestone) 内查看其他创作者的纪念日文章
2. 优质的纪念文章将会获得神秘打赏哦
06-24
330
