社区
Windows SDK/API
帖子详情
怎么用程序自动结束屏保!
cjfzy
2004-10-14 02:40:37
我编了一个程序,收到别的机器传来的消息会相应,并在界面上显示信息;
现在遇到一个问题,机器长期待机,会进入屏保,我的程序弹出的信息不能被看到,
我想在程序收到信息时结束屏保,请问在程序中怎么能结束屏保?
...全文
456
16
打赏
收藏
怎么用程序自动结束屏保!
我编了一个程序,收到别的机器传来的消息会相应,并在界面上显示信息; 现在遇到一个问题,机器长期待机,会进入屏保,我的程序弹出的信息不能被看到, 我想在程序收到信息时结束屏保,请问在程序中怎么能结束屏保?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
masterjames
2004-10-19
打赏
举报
回复
支持以下
bat800
2004-10-18
打赏
举报
回复
是吗,那就动一动吧!!
智商无下限
2004-10-18
打赏
举报
回复
靠!还没揭帖呢?
动一动就行了
我都实验过了!
SetCursorPos(0,0);
sowine
2004-10-18
打赏
举报
回复
那就动一动吧。。。。。
纯冰糖
2004-10-18
打赏
举报
回复
估计得写个消息吧
netrobo
2004-10-18
打赏
举报
回复
luke5678(奇异)解释得很详细。
但我觉得应该还有别的办法吧。
子秦1117
2004-10-18
打赏
举报
回复
动一下鼠标,同意
baointoo1980
2004-10-18
打赏
举报
回复
学习!
ztenv
2004-10-18
打赏
举报
回复
学习ing
beyondtkl
2004-10-15
打赏
举报
回复
呵呵 动一动应该就可以吧
masterjames
2004-10-14
打赏
举报
回复
SetCursorPos(0,0);
智商无下限
2004-10-14
打赏
举报
回复
随便模拟一个鼠标移动的状态就行了,比如
SetCursorPos(0,0);
hottey
2004-10-14
打赏
举报
回复
是啊,随便一个响应事件我想都能够关闭屏保吧:)
pandarus
2004-10-14
打赏
举报
回复
学习
luke5678
2004-10-14
打赏
举报
回复
转贴:
摘要
应用程序在某些时候需要终止一个已启动的屏幕保护程序。在Windows 3.1 或 Windows 95中,传递一个 “WM_CLOSE”的消息给正在运行的屏幕保护窗口就能轻而易举的结束屏保,
如下所示:
PostMessage (GetActiveWindow(), WM_CLOSE, 0, 0L);
然而,Windows NT引入了分离桌面的概念,应用程序和屏幕保护程序能分别在两个桌面上运行。 这使得在Windows NT 或 Windows 2000下关闭屏保要稍难一些 。
更多内容
在Windows NT 或 Windows 2000下,要得到正在运行的屏保窗口的句柄不象在Windows 3.1 和 Windows 95下那样简单。在应用程序中调用GetForegroundWindow() 将返回空值,
因为屏保和应用程序运行在不同的桌面上。同样,调用FindWindow ("WindowsScreenSaverClass", NULL) 来判断屏保是否正在运行也不起作用。
只有先取得屏保程序所在桌面的句柄,列举该桌面上的窗口,之后再传递“WM_CLOSE”的消息给屏保窗口,这样才能关闭屏保。
下面的代码演示了如何做到这一点。需要指出的是如果设置了屏保口令,下面的代码执行时将调出要求输入口令的对话框,提示用户输入口令,这样一来实际上就终止了屏保。
BOOL CALLBACK KillScreenSaverFunc(HWND hwnd, LPARAM lParam)
{
if(IsWindowVisible(hwnd))
PostMessage(hwnd, WM_CLOSE, 0, 0);
return TRUE;
}
HDESK hdesk;
hdesk = OpenDesktop(TEXT("Screen-saver"),
0,
FALSE,
DESKTOP_READOBJECTS | DESKTOP_WRITEOBJECTS);
if (hdesk)
{
EnumDesktopWindows(hdesk, KillScreenSaverFunc, 0);
CloseDesktop(hdesk);
}
注意,象上面所说的终止一个正在运行的屏保和完全禁止屏保的执行是不同的,在那种情况下,即使过了指定的等待时间屏保也不会再度运行了。
用下面的方法是很容易做到这一点的:
SystemParametersInfo( SPI_SETSCREENSAVEACTIVE,
FALSE,
0,
SPIF_SENDWININICHANGE
);
这一方法也能成功的关闭正在运行的屏保。不过,你将遇到一个问题,那就是系统将不再启动屏幕保护程序除非用户移动鼠标或按下键盘。
如果你需要再度启动屏保,就必须重新初始化屏保的等待时间。要做到这一点你可以:
调用 SystemParametersInfo( SPI_SETSCREENSAVEACTIVE, TRUE, 0, SPIF_SENDWININICHANGE).
或者
用SetCursorPos()来模拟用户输入。
这两种方法都将促使系统重新启动屏保等待时间计数器。
gujianhua
2004-10-14
打赏
举报
回复
我记得好象是向windows发送一个WM_Active消息就能关闭屏保了
OpenCV实现
屏保
程序
智能控制
本文介绍了一种利用OpenCV进行人脸识别,进而
自动
控制屏幕保护
程序
的方法。通过摄像头捕获图像,若检测到人脸,则
自动
关闭
屏保
。该方案适用于无需手动干预的应用场景。
Windows 7心形
屏保
安装与应用指南
本文聚焦Windows 7系统,介绍了个性化
屏保
尤其是心形
屏保
的安装方法,包括视觉效果分析、安装流程、触发时间和密码保护设置。同时强调下载
屏保
的安全提示,如审核来源、防范风险。还给出系统升级和安全更新建议,以保障计算机安全。
啥,手动
屏保
!没听说过啊!?
本博客介绍了一个VBS脚本,用于手动选择并启动Windows系统的多种
屏保
程序
,包括小气泡、梦幻线条等。脚本通过输入框获取用户选择,利用WScript.shell对象运行指定的
屏保
文件。
易语言制作WIN7徽章
屏保
的源码分析与实践
本文聚焦易语言编写的Windows 7风格徽章
屏保
源码。介绍了易语言特点,阐述了徽章
屏保
设计理念、用户群体等。详细讲解了在易语言中开发
屏保
的步骤,包括环境准备、界面设计、功能实现等,还提及易语言API应用及
屏保
启动、停止与设置功能的实现。
GUI10-写个
屏保
安装到女友电脑上
本文介绍了使用之前所学知识点及新学色彩、字体设置等,实现可实用的Windows屏幕保护
程序
。除主体功能外,还将
屏保
程序
与Windows系统
屏保
设置界面结合。项目分三个视频展示,包括核心、小样示例和配置功能,让学习者接触实际编程中的问题。
Windows SDK/API
1,184
社区成员
22,326
社区内容
发帖
与我相关
我的任务
Windows SDK/API
Delphi Windows SDK/API
复制链接
扫一扫
分享
社区描述
Delphi Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章