怎样用程序关闭屏幕保护(50分)

  • 主题发起人 主题发起人 shuoshuo
  • 开始时间 开始时间
S

shuoshuo

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样用程序关闭屏幕保护
 
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE,0,nil,0);
 
哈哈,现在才想起不对劲,根本不对 :-)
 
既然屏保已经运行,那里还有你自己程序运行的份?
如果你运行程序,屏保还能继续么?
 
是好像有点矛盾,如果是通过控制台来控制程序的话,
一方面你的程序在屏保运行时不能从控制设备得到消息,
另一方面,你在控制台的动作都会引起屏保退出,还要关它干嘛?
 
屏保运行过程中程序是可以运行的, 至少在NT下是这样的.
条件是该运行程序的优先级比较低. 但在NT下设置SPI_SETSCREENSAVEACTIVE
是不被支持的.

如果模拟一个硬件中断,屏保自然就可以去除了.
似乎有模拟击键的API, 但是否等效于硬件中断就不得而知了.
有些驱动程序可以模拟硬件中断.
 
使用API: mouse_event ()
DWFLAGS=MOUSEEVENTF_LEFTDOWN

VB声明
Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
说明
模拟一次鼠标事件
参数表
参数 类型及说明
dwFlags Long,下述标志的一个组合
MOUSEEVENTF_ABSOLUTE dx和dy指定鼠标坐标系统中的一个绝对位置。在鼠标坐标系统中,屏幕在水平和垂直方向上均匀分割成65535×65535个单元
MOUSEEVENTF_MOVE 移动鼠标
MOUSEEVENTF_LEFTDOWN 模拟鼠标左键按下
MOUSEEVENTF_LEFTUP 模拟鼠标左键抬起
MOUSEEVENTF_RIGHTDOWN 模拟鼠标右键按下
MOUSEEVENTF_RIGHTUP 模拟鼠标右键按下
MOUSEEVENTF_MIDDLEDOWN 模拟鼠标中键按下
MOUSEEVENTF_MIDDLEUP 模拟鼠标中键按下
dx Long,根据是否指定了MOUSEEVENTF_ABSOLUTE标志,指定水平方向的绝对位置或相对运动
dy Long,根据是否指定了MOUSEEVENTF_ABSOLUTE标志,指定垂直方向的绝对位置或相对运动
cButtons Long,未使用
dwExtraInfo Long,通常未用的一个值。用GetMessageExtraInfo函数可取得这个值。可用的值取决于特定的驱动程序
注解
进行相对运动的时候,由SystemParametersInfo函数规定的系统鼠标轨迹速度会应用于鼠标运行的速度

 
众里寻他千百度,
蓦然回首,那人却在灯火阑珊出。
 
据我估计,他的意思就是jiachun兄的意思,
是不是应该说成“怎样用程序把屏幕保护Disable掉”?
 
如果是:怎样用程序把屏幕保护Disable掉?
使用一个Timer控件:DoEvents函数
 
呵呵,不是用setcursorpos吗
 
发送一个键盘或鼠标的press/up/down的消息不就行了吗
—— 好象太简单了

shuoshuo 的意思是: 发现有屏保要启动就关掉它吗
 
findwindows先查找窗口,是屏幕保护的话,就关掉它,,,,
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部