社区
Windows SDK/API
帖子详情
怎么用程序自动结束屏保!
cjfzy
2004-10-14 02:40:37
我编了一个程序,收到别的机器传来的消息会相应,并在界面上显示信息;
现在遇到一个问题,机器长期待机,会进入屏保,我的程序弹出的信息不能被看到,
我想在程序收到信息时结束屏保,请问在程序中怎么能结束屏保?
...全文
380
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消息就能关闭屏保了
无聊的游戏
屏保
!测IQ
在Windows系统中,任务管理器是用于管理和
结束
进程的重要工具,因此
屏保
能屏蔽它,意味着用户需要找到其他方法来
结束
或退出
程序
。 2. **恶搞.exe**:这可能是另一个与
屏保
相关的可执行文件,可能是一个附加的恶搞...
delphi写的
屏保
程序
通常情况下,
屏保
程序
是为了在无人操作电脑时节省能源和保护显示器,但标准的
屏保
程序
会在检测到任何用户输入时立即
结束
。这个定制的Delphi
屏保
程序
可能通过自定义的事件处理机制或者定时器来实现这一功能,使得用户...
python
程序
屏保
计时器
为了在长时间工作时有效管理屏幕保护
程序
的启动,我们可以开发一个使用Python编写的
屏保
计时器
程序
。这种
程序
能够根据用户的使用习惯和工作需求,智能地控制
屏保
的启动时间点。 Python作为一门广泛使用的高级编程...
电脑
屏保
程序
- 用户交互:虽然
屏保
在运行时是为了防止用户操作,但有时也需要响应用户的输入,比如通过鼠标点击或键盘按键
结束
屏保
。 - 资源管理:为了减少对系统资源的占用,
屏保
程序
通常会优化内存使用和CPU负载,确保不影响...
用VC制作
屏保
程序
.pdf
- 一旦检测到任何输入动作,就立即
结束
屏保
程序
。 6. **定时更新显示内容**:为了使显示的文字能够随机变化颜色,可以使用定时器来触发更新。 - 创建一个定时器,每隔一定时间就改变一次文字的颜色。 - 定时器...
Windows SDK/API
1,184
社区成员
22,328
社区内容
发帖
与我相关
我的任务
Windows SDK/API
Delphi Windows SDK/API
复制链接
扫一扫
分享
社区描述
Delphi Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章