使用API Monitor巧妙探测C++程序中监听2620端口的模块

  • 88
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 62
    评论
以下是一个简单的示例程序,用于在 Windows C++ 非窗口程序监听系统的休眠消息: ``` #include <windows.h> LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); int main() { // 注册一个消息类 WNDCLASS wc = {}; wc.lpfnWndProc = WndProc; wc.hInstance = GetModuleHandle(NULL); wc.lpszClassName = L"MyMessageClass"; RegisterClass(&wc); // 创建一个隐藏的窗口,用于接收消息 HWND hWnd = CreateWindowEx(0, L"MyMessageClass", L"", 0, 0, 0, 0, 0, HWND_MESSAGE, NULL, NULL, NULL); // 设置系统休眠消息过滤器 GUID guid = GUID_MONITOR_POWER_ON; HPOWERNOTIFY hPowerNotify = RegisterPowerSettingNotification(hWnd, &guid, DEVICE_NOTIFY_WINDOW_HANDLE); MSG msg; while (GetMessage(&msg, NULL, 0, 0) > 0) { TranslateMessage(&msg); DispatchMessage(&msg); } // 注销消息类和系统休眠消息过滤器 UnregisterClass(L"MyMessageClass", GetModuleHandle(NULL)); UnregisterPowerSettingNotification(hPowerNotify); return 0; } LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_POWERBROADCAST: if (wParam == PBT_POWERSETTINGCHANGE) { // 处理系统休眠消息 POWERBROADCAST_SETTING* pSetting = (POWERBROADCAST_SETTING*)lParam; if (pSetting->PowerSetting == GUID_MONITOR_POWER_ON) { if (pSetting->Data[0] == 0) { // 系统正在进入休眠状态 // TODO: 处理休眠状态进入的逻辑 } else { // 系统正在唤醒 // TODO: 处理休眠状态唤醒的逻辑 } } } break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; } ``` 该程序注册了一个消息类,并创建了一个隐藏的窗口,用于接收系统休眠消息。程序使用 `RegisterPowerSettingNotification` 函数注册了一个系统休眠消息的过滤器,并使用消息循环来处理接收到的消息。在窗口的消息处理函数程序判断接收到的消息是否为系统休眠消息,并根据消息类型执行相应的逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 62
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dvlinker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值