我想在计算机停止操作2分钟启动我的程序,该怎么实现呢

[复制链接]
查看11 | 回复3 | 2007-8-15 21:43:55 | 显示全部楼层 |阅读模式
截获键盘鼠标消息。在消息响应函数里先killtimer(),再settimer()。在ontimer()里执行屏保程序
回复

使用道具 举报

千问 | 2007-8-15 21:43:55 | 显示全部楼层
Sleep(2*60*1000);
回复

使用道具 举报

千问 | 2007-8-15 21:43:55 | 显示全部楼层
读取鼠标键盘动作跟按键 保存最后一次的动作 同时读取下时间 时间超过设定值 就跳到函数执行
回复

使用道具 举报

千问 | 2007-8-15 21:43:55 | 显示全部楼层
不要再说什么鼠标键盘消息.打开电脑,不打开任何程序,2分钟不动,你到哪里去捕捉鼠标键盘消息?或者我最小化程序窗口,鼠标和键盘的焦点不在程序窗口上,怎么捕捉键盘鼠消息?所以实现自启动有两种方式:1.系统全局键盘鼠标钩子.在消息到达应用程序之前拦截操作系统的鼠键消息.2.屏幕保护消息.但前提是必须把消息拦截dll注册到系统自启动服务里去比如services.exe,否则打开电脑,什么程序都不运行,哪什么程序来判断鼠键是否动过呢?屏幕保护程序是Win32 API 支持一种特殊的应用程序并由系统自动激活。其机制是当条件满足时,系统向当前活动窗口发出字参数 wParam 值为SC_SCREENSAVE 的WM_SYSCOMMAND消息,然后由当前活动窗口执行SYSTEM.INI文件中[boot]区指定的屏幕保护程序。屏幕保护程序激活的条件是 1. 在规定时间内没有鼠标或键盘输入. 2. 当前的活动窗口是标准的WINDOWS应用程序。因为非WINDOWS应用,不会理睬WM_SYSCOMMAND消息。 3. 显然,如果当前活动的程序接管了字参数 wParam 值为SC_SCREENSAVE 的WM_SYSCOMMAND 消息并且不传递到 DefWindowProc函数就可以禁止屏幕保护程序。这对某些运行中不愿意被打断的程序如视频播放,光盘刻录程序特别有用 1.最小的屏幕保护程序MiniSaver。这是一个仅包含最基本模块的屏幕保护程序,运行时在屏幕上显示一行活动的文字。步骤如下: 第一步,在VC5.0/6.0中建立32位应用工程(不选MFC WIZARD EXE).建立如下的MiniSaver.CPP文件: #include #include// SCRNSAVE.LIB的头文件#include "resource.h"//声明三个基本的函数LRESULT WINAPI ScreenSaveProc(HWND,UINT,WPARAM,LPARAM);BOOL WINAPI ScreenSaveConfigureDialog(HWND,UINT,WPARAM,LPARAM);BOOL WINAPI RegisterDialogClasses(HINSTANCE);//定义三个基本的函数LRESULT WINAPI ScreenSaverProc(HWND hWnd, UINT message, WPARAM wParam,LPARAM lParam){ HDC hDC;RECT rc;static int xpos;//文本的横坐标static char SlideText[]="欢迎使用屏幕保护程序!";static UINT timerID;//定时器switch (message){case WM_CREATE:xpos=0;timerID=SetTimer(hWnd,1,250,NULL);//设置定时器break;case WM_ERASEBKGND://空操作,交由DefScreenSaverProc处理break;case WM_TIMER:hDC=GetDC(hWnd);//清屏SetRect(&rc,0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN))FillRect(hDC,&rc,GetStockObject(BLACK_BRUSH));//输出文本SetTextColor(hDC,RGB(255*rand(),255*rand(),255*rand()));SetBkColor(hDC,RGB(0,0,0));TextOut(hDC,xpos,GetSystemMetrics(SM_CYSCREEN)/2,SlideText,strlen(SlideText));//移动文本的横坐标xpos=(xpos+10)%GetSystemMetrics(SM_CXSCREEN);ReleaseDC(hWnd,hDC);break;case WM_DESTROY:KillTimer(hWnd,timerID);//删除定时器PostQuitMessage (0);return 0;}return DefScreenSaverProc(hWnd,message,wParam,lParam);}BOOL WINAPI ScreenSaverConfigureDialog(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam){//暂时不需要配置对话框,仅返回FALSEreturn FALSE;}BOOL WINAPI RegisterDialogClasses(HINSTANCE hInstance){//一般不需要,仅返回TRUE return TRUE;}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行