相关疑难解决方法(0)

用于检测系统在C#中从睡眠状态唤醒的事件

我需要检测系统电源状态模式.确切地说,我需要一个事件,当Windows 7从睡眠中醒来时会激活.我已经在使用:

SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;
Run Code Online (Sandbox Code Playgroud)

但是这个事件的问题在于它被提升了四次:可能是在计算机进入睡眠模式和计算机唤醒之后.我想要一个只在计算机唤醒时引发的事件.这有什么事吗?

c# windows events

27
推荐指数
2
解决办法
2万
查看次数

如何检测窗口是否会休眠或暂停?

我在用

SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler(
    SystemEvents_PowerModeChanged
);
Run Code Online (Sandbox Code Playgroud)

判断Windows何时挂起.但我怎么知道它是进入休眠还是暂停?

是否有.Net或PInvoke方法来执行此操作?

c# winapi

15
推荐指数
1
解决办法
8230
查看次数

无法捕捉睡眠/暂停消息(winXP)

我的应用程序需要阻止睡眠/休眠模式.我已经有了代码,但在成功捕获WM_POWERBROADCAST消息后,PBT_APMQUERYSUSPENDPBT_APMQUERYSTANDBY都未成功捕获.有趣的是,PBT_APMRESUMECRITICALPBT_APMRESUMEAUTOMATIC消息被我的应用程序捕获.

底线问题:我的应用程序无法捕获备用/暂停消息,但成功捕获恢复消息是否有任何原因?

这个Q&A [stackoverflow.com]有帮助,顺便说一下,但是这些消息似乎没有进入我的应用程序.

我的代码(为了简洁起见删除了事件日志代码):

        protected override void WndProc(ref System.Windows.Forms.Message m)
    {
        // Power status event triggered
        if (m.Msg == (int)NativeMethods.WindowMessage.WM_POWERBROADCAST)
        {
            // Machine is trying to enter suspended state
            if (m.WParam.ToInt32() == (int)NativeMethods.WindowMessage.PBT_APMQUERYSUSPEND ||
                m.WParam.ToInt32() == (int)NativeMethods.WindowMessage.PBT_APMQUERYSTANDBY)
            {
                // Have perms to deny this message?
                if((m.LParam.ToInt32() & 0x1) != 0)
                {
                    // If so, deny broadcast message
                    m.Result = new IntPtr((int)NativeMethods.WindowMessage.BROADCAST_QUERY_DENY);
                }
            }
            return; // ?! …
Run Code Online (Sandbox Code Playgroud)

c# hibernate-mode sleep-mode

6
推荐指数
1
解决办法
5422
查看次数

标签 统计

c# ×3

events ×1

hibernate-mode ×1

sleep-mode ×1

winapi ×1

windows ×1