关于WinForm拦截屏幕保护消息

minioreo 2008-06-09 01:18:27
SC_MONITORPOWER SC_SCREENSAVE这两个消息接收到以后要想拦截屏保或者关闭监视器 应该怎样设置msg.result或者return什么?
...全文
373 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
srxljl 2011-12-06
  • 打赏
  • 举报
回复
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case (0x0011):
m.Result = IntPtr.Zero;
break;
//SC_SCREENSAVE
case (0xF140):
m.Result = IntPtr.Zero;
break;
//SC_MONITORPOWER
case (0xF170):
m.Result = IntPtr.Zero;
break;
default:
base.WndProc(ref m);
break;
}
}

case (0x0011):系统发出关系程序的信息
富莱工作室 2008-06-11
  • 打赏
  • 举报
回复
返回0, 表示程序已经处理这个消息
对于SC_SCREENSAVE, 系统会禁止屏幕保护
SC_SCREENSAVE只会发送给处于Active状态的窗口
minioreo 2008-06-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 longlijun 的回复:]
WM_SYSCOMMAND

An application should return zero if it processes this message.
[/Quote]
能说的详细点么?我看过有MFC做这个的 可是按同样的方法不知道为什么就不行了
ziseliuxingzh 2008-06-11
  • 打赏
  • 举报
回复
UP,,,我也想知道
富莱工作室 2008-06-11
  • 打赏
  • 举报
回复
WM_SYSCOMMAND

An application should return zero if it processes this message.
SuperTyro 2008-06-11
  • 打赏
  • 举报
回复
我记得好象有个DOS 的命令可以做到 刚刚找了下 原来写的程序
那个还找不到了 ....

帮你顶下 LZ可以自己找下看看

我是小菜鸟! 说的不好清见谅, 希望能够帮到你!
minioreo 2008-06-11
  • 打赏
  • 举报
回复
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
//WM_QUERYENDSESSION
case (0x0011):
m.Result = IntPtr.Zero;
break;
//WM_SYSCOMAND SC_SCREENSAVE SC_MONITORPOWER
case (0x0112):
if (m.LParam == (IntPtr)0xF140||m.LParam==(IntPtr)0XF170)
m.Result = IntPtr.Zero;
else
base.WndProc(ref m);
break;
default:
base.WndProc(ref m);
break;
}
}
minioreo 2008-06-11
  • 打赏
  • 举报
回复
是的 我这是一个Winform 是处于激活状态 改了一下 在接到Wm_SysCommand的时候判断lparam是否SC_ScreenSave 如果是就返回0
但是不能工作 屏保还是照常启动了 第一个防止关机的可以正常工作

protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
//WM_QUERYENDSESSION
case (0x0011):
m.Result = IntPtr.Zero;
break;
//WM_SYSCOMAND SC_SCREENSAVE
case (0x0112):
if (m.LParam == (IntPtr)0xF140)
m.Result = IntPtr.Zero;
else
base.WndProc(ref m);
break;
//SC_MONITORPOWER
case (0xF170):
m.Result = IntPtr.Zero;
break;
default:
base.WndProc(ref m);
break;
}
}
minioreo 2008-06-09
  • 打赏
  • 举报
回复
这段代码不可以组织屏幕保护启动 为什么?


protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case (0x0011):
m.Result = IntPtr.Zero;
break;
//SC_SCREENSAVE
case (0xF140):
m.Result = IntPtr.Zero;
break;
//SC_MONITORPOWER
case (0xF170):
m.Result = IntPtr.Zero;
break;
default:
base.WndProc(ref m);
break;
}
}
源码直接下载地址: https://pan.quark.cn/s/1c143f32ee83 华为作为全球领先的通信设备供应商,其产品系列广泛涉及各类网络设备,其中包括我们接下来要探讨的上网卡产品。华为上网卡驱动程序是一种专门为华为品牌旗下多种型号上网卡开发的软件模块,其主要功能在于保障这些设备与计算机操作系统的无缝对接。涉及的型号涵盖EC8189、EC226、EC169C、EC360、EC1260、EC1261、EC189、EC122、EC150以及EC168,这些均是由华为公司推出的移动宽带调制解调器,旨在通过移动网络实现便捷的互联网接入服务。驱动程序在计算机系统中的地位举足轻重,它充当了硬件设备与操作系统之间的媒介,负责对硬件设备发出的指令进行解读和执行,并将操作系统的指令传递给硬件设备。华为上网卡驱动程序的及时更新和精准安装是保障设备稳定运作和性能达到最优的关键因素。"天翼宽带安装程序V1.3.3.exe"是由中国电信提供的一个整合性软件包,内含华为上网卡的驱动程序及配套的管理工具。用户可借助此安装程序来执行华为上网卡的相关驱动安装及更新,同步享受中国电信的3G或4G网络服务。版本标识V1.3.3代表软件经过迭代优化,通常包含了对错误的修正、性能的改善以及新功能的引入。 "SetupInfo.xml"作为安装程序的配置文档,其中收录了安装流程中的各项设定和元数据信息,例如安装流程、文件定位、依赖条件等。它是安装程序在执行时参照和遵循的纲领,旨在确保安装流程按既定方案进行。文件名"CT_HW_EVDO_Driver"或许指向华为的EVDO(Evolution-Data Optimized)驱动程序,EVDO是一种3G无线通信规范,具备高速数据传输的特性。该驱动可...

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧