VC获取系统空闲时间

    LASTINPUTINFO lpi;  
    lpi.cbSize = sizeof(lpi);  
    GetLastInputInfo(&lpi);  
    int iTime = (GetTickCount() - lpi.dwTime)/1000;//得到秒数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#include "StdAfx.h" #include "cpuassembly.h" // bit flags set by cpuid when called with register eax set to 1 #define MMX_SUPPORTED 0x00800000 #define SSE_SUPPORTED 0x02000000 #define SSE2_SUPPORTED 0x04000000 #define AMD_3DNOW_SUPPORTED 0x80000000 // AMD specific #define AMD_3DNOW_EX_SUPPORTED 0x40000000 #define AMD_MMX_EX_SUPPORTED 0x00400000 #define SUPPORT_MMX 0x0001 #define SUPPORT_3DNOW 0x0002 #define SUPPORT_SSE 0x0004 #define SUPPORT_SSE2 0x0008 CPUAssembly::CPUAssembly(void) { memset(&sCPUInfo, 0, sizeof(sCPUInfo)); } CPUAssembly::~CPUAssembly(void) { } bool CPUAssembly::IsCPUID() const { __try { _asm { xor eax, eax cpuid } } __except (EXCEPTION_EXECUTE_HANDLER) { return false; } return true; } bool CPUAssembly::QueryCPUInfo() { if (!IsCPUID()) return false; memset(&sCPUInfo, 0, sizeof(sCPUInfo)); DWORD dwStandard = 0; DWORD dwFeature = 0; DWORD dwMax = 0; DWORD dwExt = 0; int feature = 0; int os_support = 0; union { char cBuffer[12+1]; struct { DWORD dw0; DWORD dw1; DWORD dw2; } stc; } Vendor; memset(&Vendor, 0, sizeof(Vendor)); _asm { push ebx push ecx push edx // get the vendor string xor eax, eax cpuid mov dwMax, eax mov Vendor.stc.dw0, ebx mov Vendor.stc.dw1, edx mov Vendor.stc.dw2, ecx // get the Standard bits mov eax, 1 cpuid mov dwStandard, eax mov dwFeature, edx // get AMD-specials mov eax, 80000000h cpuid cmp eax, 80000000h jc notamd mov eax, 80000001h cpuid mov dwExt, edx notamd: pop ecx pop ebx pop edx } if (dwFeature & MMX_SUPPORTED) sCPUInfo.dwFeatures |= SUPPORT_MMX; if (dwExt & AMD_3DNOW_SUPPORTED) sCPUInfo.dwFeatures |= SUPPORT_3DNOW; if (dwFeature & SSE_SUPPORTED) sCPUInfo.dwFeatures |= SUPPORT_SSE; if (dwFeature & SSE2_SUPPORTED) sCPUInfo.dwFeatures |= SUPPORT_SSE2; sCPUInfo.iFamily = (short int)((dwStandard >> 8) & 0xF); // retrieve family if (sCPUInfo.iFamily == 15) // retrieve extended family sCPUInfo.iFamilyEx = (dwStandard >> 16) & 0xFF0; sCPUInfo.iModel = (short int)((dwStandard >> 4) & 0xF); // retrieve model if (sCPUInfo.iModel == 15) // retrieve extended model sCPUInfo.iModelEx = (dwStandard >> 12) & 0xF; sCPUInfo.iStepping = (short int)((dwStandard) & 0xF); // retrieve stepping strcpy(sCPUInfo.sVendorName, Vendor.cBuffer); sCPUInfo.iSpeed = ICPUInfo::GetSpeed(); strcpy(sCPUInfo.sProcessorName, ICPUInfo::GetCPUName(sCPUInfo.sVendorName, sCPUInfo.iFamily, sCPUInfo.iModel, sCPUInfo.iFamilyEx, sCPUInfo.iModelEx).c_str()); return true; } unsigned int CPUAssembly::GetSpeedMHz() const { return (unsigned int)(sCPUInfo.iSpeed/(1024*1024)); } std::string CPUAssembly::GetCPUName() const { return sCPUInfo.sProcessorName; } std::string CPUAssembly::GetVendorName() const { return sCPUInfo.sVendorName; } short int CPUAssembly::GetCPUFamily() const { return sCPUInfo.iFamily; } short int CPUAssembly::GetCPUModel() const { return sCPUInfo.iModel; } short int CPUAssembly::GetCPUStepping() const { return sCPUInfo.iStepping; } bool CPUAssembly::IsMMXSupported() const { return ((sCPUInfo.dwFeatures & SUPPORT_MMX) == SUPPORT_MMX); } bool CPUAssembly::IsSSESupported() const { return ((sCPUInfo.dwFeatures & SUPPORT_SSE) == SUPPORT_SSE); } bool CPUAssembly::IsSSE2Supported() const { return ((sCPUInfo.dwFeatures & SUPPORT_SSE2) == SUPPORT_SSE2); } bool CPUAssembly::Is3DNowSupported() const { return ((sCPUInfo.dwFeatures & SUPPORT_3DNOW) == SUPPORT_3DNOW); }
VC6中,可以使用以下方法来获取当前时间: 1. 使用time_t变量和time(time_t*)方法。这种方法可以获取当前时间的秒数。可以通过将time_t变量传递给time函数来获取当前时间的秒数。 2. 使用CTime类。可以使用CTime::GetCurrentTime()方法来获取当前时间。这个方法返回一个CTime对象,其中包含了当前的日期和时间信息。 3. 使用COleDateTime类。可以使用COleDateTime::GetCurrentTime()方法来获取当前时间。这个方法返回一个COleDateTime对象,其中包含了当前的日期和时间信息。 请注意,以上方法适用于VC6,可能在其他版本的VC中有所不同。 #### 引用[.reference_title] - *1* *2* [笔记1:VC获取系统时间的方法](https://blog.csdn.net/wu_zhiyuan/article/details/109617013)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [VC中获得当前日期和时间](https://blog.csdn.net/phenixyf/article/details/41555743)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值