高分求答案:如何计时

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

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

...全文
214 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
使用钩子

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧