C++定时器,想让下面的程序每五分钟运行一次

/////////////////////////////////////////////////////////////////ProcessList.cpp文件#in... ///////////////////////////////////////////////////////////////
// ProcessList.cpp文件

#include "stdafx.h"
#include <windows.h>
#include <tlhelp32.h> // 声明快照函数的头文件
#include <stdio.h>
#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
freopen("Process.txt","w",stdout);//结果输出到Process.txt中
PROCESSENTRY32 pe32;
// 在使用这个结构之前,先设置它的大小
pe32.dwSize = sizeof(pe32);

// 给系统内的所有进程拍一个快照
HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hProcessSnap == INVALID_HANDLE_VALUE)
{
printf(" CreateToolhelp32Snapshot调用失败! \n");
return -1;
}

// 遍历进程快照,轮流显示每个进程的信息
BOOL bMore = ::Process32First(hProcessSnap, &pe32);
while(bMore)
{
LPCTSTR processname=L"System";
if(!lstrcmp(pe32.szExeFile,processname))
{
printf(" %ls ", pe32.szExeFile);
printf(" %u ", pe32.th32ProcessID);
printf(" %u ,", pe32.cntThreads);
}
bMore = ::Process32Next(hProcessSnap, &pe32);
}

// 不要忘记清除掉snapshot对象
::CloseHandle(hProcessSnap);
return 0;
}
展开
 我来答
百度网友73be8e525
2013-05-22 · 超过26用户采纳过TA的回答
知道答主
回答量:61
采纳率:0%
帮助的人:53.1万
展开全部

我有个例子 你看看吧 其实就是windows的api 会了就会了

#include <Windows.h>
void dosth(int a , int b)
{
printf("a= %d,b= %d,a+b = %d",a,b,a+b);
}
typedef struct dosthpara {
int a;
int b;
}PARA,*PPARA;
//回调函数
VOID CALLBACK whatodo(PTP_CALLBACK_INSTANCE,PVOID pv,PTP_TIMER)
{
PPARA parameter = (PPARA)pv;
//这里是要定时调用的函数 dosth 和参数
dosth(parameter->a,parameter->b);
}
int main()
{
PARA a;
a.a=2,a.b=3;
PPARA parame = &a;
PTP_CALLBACK_INSTANCE pt = NULL;
PTP_TIMER ptimer = NULL;
PTP_TIMER lpTimer = CreateThreadpoolTimer(whatodo,(PVOID)parame,NULL);
ULARGE_INTEGER ul;
//run after 1sec
ul.QuadPart = (LONGLONG) -(10000000);
FILETIME ft;
ft.dwHighDateTime = ul.HighPart;
ft.dwLowDateTime = ul.LowPart;
//every 5sec
SetThreadpoolTimer(lpTimer,&ft,5000,0);
//run 12times
Sleep(1000*60);
WaitForThreadpoolTimerCallbacks(lpTimer,TRUE);
CloseThreadpoolTimer(lpTimer);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
空雪梦见
2013-05-22 · TA获得超过5597个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1196万
展开全部
首先,你要不要试一下windows的那个“计划任务”功能?

然后,你每次freopen用的模式都是w,是不是每次都会把原来的数据覆盖掉啊……
追问
我想编程实现,我忘了把w改成a了
追答
因为不是计划任务控制,那么你程序在运行的时候才能控制这代码要不要执行。
如果程序退掉那就不能控制了。

再然后windows里有一个函数叫做Sleep可以挂起当前线程。
你就弄一个大循环,执行一次这个代码就调用一下sleep函数挂起300秒就可以了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式