gpt4 book ai didi

windows - 在 Windows 中捕获笔记本电脑盖子关闭事件?

转载 作者:可可西里 更新时间:2023-11-01 13:29:31 26 4
gpt4 key购买 nike

我正在寻找一种方法来拦截笔记本电脑盖子关闭事件。在 Windows 7 中,电源管理允许我在盖子关闭时选择所需的行为。所以必须有一种方法让 Windows 知道盖子何时关闭。

我进行了研究,但只找到了监测 sleep 事件的建议。我想更具体地只响应盖子关闭。

有人有什么建议吗?

谢谢!

最佳答案

问题是指 GUID_LIDSWITCH_STATE_CHANGE 而不是 GUID_LIDCLOSE_ACTION。

GUID_LIDCLOSE_ACTION 监视用户在关闭盖子时是否更改电源行为(控制面板 -> 电源设置 -> 选择关闭盖子时的操作)

如果你想监控盖子关闭/打开的事件,你需要注册 GUID_LIDSWITCH_STATE_CHANGE。我用它作为 Windows 服务:

int ServiceMain(int argc, char** argv)
{
serviceStatusHandle = RegisterServiceCtrlHandlerExA(serviceName, (LPHANDLER_FUNCTION_EX) ServiceControlHandler, 0);
...
lidcloseRegHandle = RegisterPowerSettingNotification(serviceStatusHandle, &GUID_LIDSWITCH_STATE_CHANGE, DEVICE_NOTIFY_SERVICE_HANDLE);
...
}

在服务控制处理程序中:

/**
* Event handler for windows service.
*/
void WINAPI ServiceControlHandler(DWORD controlCode, DWORD evtype, PVOID evdata, PVOID Context)
{
switch (controlCode)
{...
case SERVICE_CONTROL_POWEREVENT:
WriteToLog("Service Control: SERVICE_CONTROL_POWEREVENT builds and fwd the msg");
msg.control = SERVICE_CONTROL_POWEREVENT;
msg.event_type = (int) evtype;
msg.event_data = evdata;
...
}
}

evtype 是 PBT_POWERSETTINGCHANGE 并且在 evdata 中记录了事件:0 表示关闭,1 表示打开。

更多细节在这里: https://msdn.microsoft.com/en-us/library/aa372723.aspx https://msdn.microsoft.com/en-us/library/hh769082(v=vs.85).aspx

关于windows - 在 Windows 中捕获笔记本电脑盖子关闭事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4486674/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com