社区
Windows SDK/API
帖子详情
怎么用程序自动结束屏保!
cjfzy
2004-10-14 02:40:37
我编了一个程序,收到别的机器传来的消息会相应,并在界面上显示信息;
现在遇到一个问题,机器长期待机,会进入屏保,我的程序弹出的信息不能被看到,
我想在程序收到信息时结束屏保,请问在程序中怎么能结束屏保?
...全文
367
16
打赏
收藏
怎么用程序自动结束屏保!
我编了一个程序,收到别的机器传来的消息会相应,并在界面上显示信息; 现在遇到一个问题,机器长期待机,会进入屏保,我的程序弹出的信息不能被看到, 我想在程序收到信息时结束屏保,请问在程序中怎么能结束屏保?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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消息就能关闭屏保了
无聊的游戏
屏保
!测IQ
恶搞
屏保
。。。
delphi写的
屏保
程序
delphi写的
屏保
程序
,解决了移动鼠标关闭
屏保
的问题。
电脑
屏保
程序
屏保
程序
,包括肥皂泡泡、热带鱼水族箱
屏保
、桌面千变万化
屏保
等7个
屏保
python
程序
屏保
计时器
python
程序
屏保
计时器
用VC制作
屏保
程序
.pdf
我们自己做个性
屏保
。在当前发达繁盛的互联网时代, 我们可以轻而易举的获取制作精良的屏幕保护
程序
, 但 制作一个属于自己的
屏保
可能会更使人感兴趣。其实, 制作
屏保
并不是一件很困难的事情, 下面我就来向大家 介绍一种用VC制作屏幕保护
程序
的方法。
Windows SDK/API
1,183
社区成员
22,328
社区内容
发帖
与我相关
我的任务
Windows SDK/API
Delphi Windows SDK/API
复制链接
扫一扫
分享
社区描述
Delphi Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章