如何得到程序被系统关闭的时间?

ponydph 2006-06-16 11:20:54
我的程序需要统计软件的运行时间,刚开始在窗口的OnDestroy()函数记下退出的时间,但是当windows程序强迫关闭程序的时候,统计不出来,请问该如何处理,能够得到软件被系统关闭的时间
...全文
251 14 打赏 收藏 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ponydph 2006-07-14
  • 打赏
  • 举报
回复
自己做完程序后,最好试试,用任务管理器把线程关掉,就知道了.
fireseed 2006-06-20
  • 打赏
  • 举报
回复
可以就赶快结贴!
fireseed 2006-06-18
  • 打赏
  • 举报
回复

DWORD CALLBACK ThreadProc( LPVOID lpParam )
{
MessageBox( GetDesktopWindow(), _T("asljf"), _T("alskfd"), 0 );
return 0;
};

class A
{
public:
A() {MessageBox( GetDesktopWindow(), _T("asljf"), _T("alskfd"), 0 );}
~A()
{
HANDLE hThread = CreateThread( NULL, 0, ThreadProc, 0, 0, NULL );
if ( NULL == hThread )
{
CString x;
x.Format( _T("%d"), GetLastError() );
TRACE( x );
}
WaitForSingleObject( hThread, INFINITE );
CloseHandle( hThread );
}
} a;


以上代码保证在程序退出前弹出一个对话框,如果不行,我负全责。

楼主,你不会用,不要说代码不行。
esprite2000 2006-06-18
  • 打赏
  • 举报
回复
用双线程保护吧
ponydph 2006-06-18
  • 打赏
  • 举报
回复
谢谢,fireseed(奶油狗【回归Hello World!】) ,你说的采用全局变量的方法不能使用,采用线程的方法可以.
gudulyn 2006-06-18
  • 打赏
  • 举报
回复
mark
fireseed 2006-06-17
  • 打赏
  • 举报
回复
有点问题:


// 把下面的代码放到任何CPP文件中即可完成你所需的功能

class A{public:~A(){ /*在这里记时*/ }}a;
fireseed 2006-06-17
  • 打赏
  • 举报
回复
也可以这样

以下代码放到任何cpp文件中皆可

class A
{
~A( void ){ /* 在这里记录时间 */ }
} a;

吃狼的豆腐 2006-06-17
  • 打赏
  • 举报
回复
因为不管程序是以什么方式结束,全局变量一定会被正确析构,所以应该可以的
吃狼的豆腐 2006-06-17
  • 打赏
  • 举报
回复
在CMyApp的构造函数,和析构函数中加入记录时间的,全局变量永远是在main前被创建,main结束后被析构;

或者C语言有个_onexit,注册的函数会在main结束后被调用,不过调用时间是main以后,全局变量析构函数之前.
atexit也可以

下面是msdn的示例

// crt_onexit.c

#include <stdlib.h>
#include <stdio.h>

/* Prototypes */
int fn1(void), fn2(void), fn3(void), fn4 (void);

int main( void )
{
_onexit( fn1 );
_onexit( fn2 );
_onexit( fn3 );
_onexit( fn4 );
printf( "This is executed first.\n" );
}

int fn1()
{
printf( "next.\n" );
return 0;
}

int fn2()
{
printf( "executed " );
return 0;
}

int fn3()
{
printf( "is " );
return 0;
}

int fn4()
{
printf( "This " );
return 0;
}
ponydph 2006-06-17
  • 打赏
  • 举报
回复
按照cattlenzq(吃狼的豆腐(不要给分了,散起来真麻烦!)) 兄:两种方法都试过了,都不行,
创建全局变量的方法,构造函数可以,但是析够(退出)的时候,不能记录
fireseed 2006-06-17
  • 打赏
  • 举报
回复

// 把下面的代码放到任何CPP文件中的任何方即可完成你所需的功能

class A{public:~A(){ /*在这里记时*/ }}a;


你的CPP文件:


/////////////////////////////////

#include <……>
#include <……>
#include "……"


class A{public:~A(){ /*在这里记时*/ }}a;


你的代码



////////////////////////////////

如果你不会用,或着其它什么问题请留言。
ponydph 2006-06-17
  • 打赏
  • 举报
回复
我在ExitInstance()函数里面设置,根本那不行
fireseed 2006-06-16
  • 打赏
  • 举报
回复
在PretranslateMessage里,对于任何消息都更新你之前记录的时间,这样无论程序以何种方式退出,关闭的时间总是最后的

16,550

社区成员

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

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

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