VC下实现定时任务的方法讨论

实现定时任务无非就是想在未来的某一时刻执行一个任务,最先想到的就是WM_TIMER消息。

方法1:WM_TIMER消息无论是否是窗口函数都可以使用它

启动:SetTimer(HWND hWnd,UINT uID,UINT uElapse,TIMERPROC lpTimerFunc);停止:KillTimer(UINT uID);

在MFC中封装了上面的函数将HWND hWnd参数去掉即可。

有窗口将lpTimerFunc函数指针置为空否则写一个回调函数传进去即可,当经过了uElapse时就执行此回调函数。

WM_TIMER权限低可能被系统丢掉不执行,重复判断浪费资源。

方法2:使用内核对象创建等待定时器

HANDLE CreateWaitableTimer( LPSECURITY_ATTRIBUTES lpTimerAttributes, //安全属性一般为默认空 BOOL bManualReset, //是否手动重置 LPCTSTR lpTimerName //定生器的名称默认为空);

设置等待定时器等待时间

BOOL SetWaitableTimer( HANDLE hTimer,
//上面的函数返回的参数
const LARGE_INTEGER* pDueTime,
//等待的时间 LONG lPeriod,
//间隔的时间 PTIMERAPCROUTINE pfnCompletionRoutine,
//APC回调函数 LPVOID lpArgToCompletionRoutine,
//传进APC回调函数的参数 BOOL fResume //是否恢复系统的节电模式);
DWORD dwRst = WaitForMultipleObjects(1,hTimer,FALSE,INFINITE);

创建一个线程然后执行上面的函数等待定时器被激活然后执行相应的任务。上面只是给了一个想法具体的实现必须清楚多线程编程等知识。此方法作为本人程序中的方法推荐使用。方法3:使用系统的定时任务或者其他通过WinExec调用控制台的命令对实现起来感觉有点乱,而且容易被操作员破坏,例如他禁用了定时任务的服务等等。

时间: 2024-12-01 11:04:49

VC下实现定时任务的方法讨论的相关文章

Java知识:Web应用下实现定时任务简便方法

web|定时 在WEB应用下实现定时任务的简便方法 在web方式下,如果我们要实现定期执行某些任务的话,除了用quartz等第三方开源工具外,我们可以使用Timer和TimeTask来完成指定的定时任务: 第一步:创建一个任务管理类,实现ServletContextListener 接口 以下是引用片段: public class TaskManager implements ServletContextListener { /** * 每天的毫秒数 */ public static final

Java在Web应用下实现定时任务简便方法

在WEB应用下实现定时任务的简便方法 在web方式下,如果我们要实现定期执行某些任务的话,除了用quartz等第三方开源工具外,我们可以使用Timer和TimeTask来完成指定的定时任务: 第一步:创建一个任务管理类,实现ServletContextListener 接口 以下是引用片段: public class TaskManager implements ServletContextListener { /** * 每天的毫秒数 */ public static final long P

VC下通过系统快照实现进程管理的方法_C 语言

本文实例讲述了VC下通过系统快照实现进程管理的方法,分享给大家供大家参考.具体实现方法如下: 一.引言 每一个应用程序实例在运行起来后都会在当前系统下产生一个进程,大多数应用程序均拥有可视界面,用户可以通过标题栏上的关闭按钮关闭程序.但是也有为数不少的在后台运行的程序是没有可视界面的,对于这类应用程序用户只能通过CTRL+ALT+DEL热键呼出"关闭程序"对话框显示出当前系统进程列表,从中可以结束指定的任务.显然,该功能在一些系统监控类软件中还是非常必需的,其处理过程大致可以分为两步:

Java:Web应用下实现定时任务的简便方法

web|定时 在WEB应用下实现定时任务的简便方法 在web方式下,如果我们要实现定期执行某些任务的话,除了用quartz等第三方开源工具外,我们可以使用Timer和TimeTask来完成指定的定时任务: 第一步:创建一个任务管理类,实现ServletContextListener 接口 public class TaskManager implements ServletContextListener { /**  * 每天的毫秒数  */ public static final long P

VC下加载多种格式图片的方法总结IPicture, CxImage, CImage(AtlImage), CPictureEx

尽管VC有提供相应的API和类来操作bmp位图.图标和(增强)元文件,但却不支持jpg.gif和png等格式的图片,而这几种格式却是常常要用到的.这里我给大家介绍两种办法来操作这些格式的图片. 1.用API OleLoadPicture来加载JPG.GIF格式的图片(注:不支持PNG格式,另外GIF只能加载第一帧,且不支持透明) OleLoadPicture 函数实际上创建了一个IPicture类型的COM接口对象,然后我们可以通过这个COM接口来操作图片(实际上你也可以用API OleCrea

在VC下显示JPEG、GIF格式图像的一种简便方法

在VC下显示JPEG.GIF格式图像的一种简便方法 一. 引言  JPEG图像压缩标准随然是一种有损图像压缩标准,但由于人眼视觉的不敏感,经压缩后的画质基本没有发生变化,很快便以较高的压缩率得到了广泛的认可.GIF格式虽然仅支持256色但它对于颜色较少的图像有着很高的压缩率,甚至超过JPEG标准,也得到了广泛的认同.但作为众多程序员的一个重要的开发工具--Microsoft Visual C++ 6.0的MFC库却仅对没有经过任何压缩的BMP位图文件有着良好的支持,可以读取.显示.存储甚至在内存

VC 下加载 JPG / JPEG / GIF / PNG 图片最简单的方法

VC MFC 提供的 API LoadBitmap / LoadImage 类 CBitmap 等都只能操作 BMP 位图,图标.对于其他常用的 JPG / JPEG / GIF / PNG 格式,它无能为力.VC 下怎样才能加载各种非 BMP 格式的图片呢? 下面介绍一种最简单的办法.用 CImage 类的 Load 函数加载图片,之后用 Detach 取得HBITMAP 句柄.取得图片的HBITMAP 句柄后就可以像操作 BMP 图片一样处理 JPG / JPEG / GIF / PNG 格

VC下动态库dll,静态库lib的编写和使用方法

  在一些项目中,考虑到系统的安全性和稳定性,经常要封装一些DLL或者LIB库供别人使用,那么怎么制作DLL或者LIB文件呢?今天特酷吧根据自己的实际情况给大家讲解下基本的制作方法.以下是我亲自操作的记录:1,动态库dll的编写方法:新建一个动态链接库: 填好工程名称即可选择工程类型,如果没有特别的要求,选择一个空工程即可.会看到这里和标准的控制台工程一样,没有任何系统默认建立的文件 下面就需要我们添加一些文件.建立动态库dll文件 , 我们不需要写main函数.只需要一个一个的实现我们需要实现

c++ 编程问题-求一个VC下实现的C++代码

问题描述 求一个VC下实现的C++代码 曲线绘制 根据以下微分方程可以产生任意多的实时数据: 其中参数 ,初始条件取 ,且当 时.用4阶龙格库塔方法对上述方程实现离散化. 要求显示实时数据曲线,并能用左右箭头.PgUp.PgDn实现曲线的滚动和翻页.