屏幕保护程序正运行,后台的程序该如何去停止?找了好多文章,都是禁用屏保的,停止正在运行的屏保就找不到了~~~~~~~~~~~~~~~~~~~大虾快来Help~~~~~~~~~~~~~~~~~~~~
解决方案 »
- 不会响应DrawItem ,我已经勾选了Owner Draw Fixed
- 怎样创建一个模态对话框,类似于登录框
- 刚刚开学VC,问个简单问题,要在对话框程序里为对话框添加一个新成员,而这新成员是属于一个新类,这个新类应该在哪里定义呢?
- html标签中的size属性和width属性怎样进行转换?有比率吗?
- 将一块内存中的值读入一个字符串中,如何实现,高分在线等!
- 如何对ListCtrl的指定行的文字列改变颜色?
- 谁有programming windows 5th 的下载地址?
- 各位高手帮忙啊,关于注册表问题!
- vc中tcp用recv一次收数据不能超过40k的问题
- 用CString出现的怪问题
- 多线程程序操作查询SQLServer的效率问题?
- 怎样结束屏幕保护??
SendMessage(WM_CLOSE)
W2k中如何终止屏幕保护(hangwire发表于2001-11-17 9:30:59) [问题]:
我编写了一个报警程序,功能是当我的报警程序接到报警消息时,必须终止屏幕保护程序或者节能模式并显示报警消息,或者在屏幕保护程序之上显示报警消息也可以。我用SetWindowPos(&wndTopMost…)试过不灵,在W2k的屏保中也没有成功。我的程序想在W2k里运行,如何在特定的事件发生时终止屏幕保护?[解答]:
在Windows 9x中,终止屏幕保护的方法很简单,获取活动窗口指针,然后发送WM_CLOSE消息即可:
PostMessage(GetActiveWindow(),WM_CLOSE,0,0);
但是,在W2k中这个方法就不灵了,W2k的桌面概念与以往不同,其屏幕保护是运行在专门的桌面当中,这个桌面叫做"Screen-saver"。你用GetActiveWindow 或者 GetForegroundWindow函数是找不到屏幕保护窗口的,因为它运行在另外的桌面里。要获得屏保窗口,你必须打开这个专门的桌面,列举其中的所有窗口,判断窗口是不是屏幕保护窗口,如果保护窗口可见,则发送WM_CLOSE消息。详细代码如下(或者参见MSDN KB 文章Q140723):
BOOL CALLBACK KillScreenSaverFunc(HWND hwnd, LPARAM lParam)
{
if(IsWindowVisible(hwnd))
PostMessage(hwnd, WM_CLOSE, 0, 0);
return TRUE;
}
// 打开屏保专用桌面"Screen-saver"
//
HDESK hdesk = OpenDesktop(TEXT("Screen-saver"),
0, // flags
FALSE, // new processes inherit handle?
DESKTOP_READOBJECTS | DESKTOP_WRITEOBJECTS); // access/////////////////
// 用专门的"close"函数列举窗口并关闭桌面。
//
if (hdesk) {
EnumDesktopWindows(hdesk, KillScreenSaverFunc, 0);
CloseDesktop(hdesk);
}
::SystemParametersInfo(SPI_SETSCREENSAVEACTIVE,FALSE,NULL,0);
其中各参数的意义如下表:
参数: 意义
uAction Long,指定要设置的参数。参考uAction常数表
uParam Long,参考uAction常数表
lpvParam Any,按引用调用的Integer、Long和数据结构。
fuWinIni 这个参数规定了在设置系统参数的时候,是否应更新用户设置参数
很多设置都可以用这个函数来搞定的.它有很多参数,你可以找以前的一个回复里很详细
你的问题可以模拟解决
模拟键盘 用Keybd_event
模拟鼠标按键用mouse_event函数模拟按了‘A’键
keybd_event(65,0,0,0);
keybd_event(65,0,KEYEVENTF_KEYUP,0);
模拟鼠标
POINT lpPoint;
GetCursorPos(&lpPoint);
SetCursorPos(lpPoint.x, lpPoint.y);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
Using SetCursorPos() to simulate user input.