• 全部
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

高分求答案:如何计时

jp1984 2006-04-12 11:14:45
有个固定的软件A,我想实现软件A启动的时候对它的运行时间进行记录. 比如A运行了三个小时,我就将三个小时写进特殊的文件.

刚开始看windows 程序设计,所以请提供纯粹Win32 api的说明 . MFC的不欢迎.

...全文
187 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
platinum15 2006-04-12
.A启动后GetTickCount,停止后GetTickCount,
回复
jp1984 2006-04-12
首先谢谢楼上几位,非常感谢.

答案好象还是不能满足我的需要.首先A不是我自己写的,我要写的是这样一个库,它存在旧似乎为了检查A的运行时间. 同时A有没有主窗体也不一定,或许它就是个控制台的程序.
可能我前面表达不清楚,我的意思是,A运行的时候调用库中函数B检查自身的运行时间 . A被关闭的时候必然函数B肯定也运行不了. 因为我无法改变软件A,所以自然不能在软件A被关闭的时候调用GetTickCount. 所有的计时运算只能在函数B中完成.

问题还是归结成怎么判断A的运行与关闭.

再次谢谢了!
回复
huguyue6670 2006-04-12
计时用GetProcessTimes

我还有个很大的疑问就是如何用一个函数B,来判断软件A是否启动.


可以获得当前运行的进程,在其中检查是不是有软件A在运行。
回复
xiaoshi0 2006-04-12
计时的话用GetProcessTimes可以

在A软件中用GetTickCount也是可行的,不过要麻烦一点
回复
xiaoshi0 2006-04-12
如果A软件有主窗体,可以用FindWindow来判断是否已经打开了

如果A软件是你自己写的,那么可以在启动时候构造一个互斥对象CreateMutex
然后通过在B函数中调用OpenMutex函数并检查GetLastError是否返回已经打开,就知道A软件是否已经运行了

可以调用Process32First等函数查找A软件的全路径,看是否已经运行


回复
jp1984 2006-04-12
或者说如果我要将函数B封装成DLL库, 我怎么利用B的参数来判定A是否启动
回复
jp1984 2006-04-12
我还有个很大的疑问就是如何用一个函数B,来判断软件A是否启动.
回复
stevecrisewu 2006-04-12
1.GetProcessTimes
2.A启动后GetTickCount,停止后GetTickCount,相减
等等
回复
jp1984 2006-04-12
顶下, 谁 还有其他方案
回复
xhzxlqt 2006-04-12
A运行时第一次调用B时传递A的ProcessID给B,然后B调用OpenProcess,得到A的ProcessHandle(或者A直接将ProcessHandle 传递给B),记下A开始运行的时刻,在B中使用线程WaitForSingleObject(ProcessHandle,INFINITE);在Wait。。。之后 写入A运行的时间总时间。
回复
ouyh12345 2006-04-12
使用钩子
回复
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2006-04-12 11:14
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……