QT与windows系统修改杂记

(1)QT不让windows休眠的方法

对于一些Windows应用程序,必须要保证os不能休眠才能有效工作,如迅雷下载软件,如果os进入休眠,则会导致网络不正常,从而导致不能下载东西。那木有没有1种机制,当打开软件的时候,就自动将os设为不休眠状态呢?这里我介绍一种QT应用程序不让windows进入休眠的方法:

[html]  view plain copy
  1. ::SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED);  

只需要在QT应用程序入口函数中加入该语句就可以了,这样os就不会进入休眠了,该语句声明在winbase.h中,是windows的api。

具体参考http://msdn.microsoft.com/en-us/library/aa373208(VS.85).aspx


(2)修改 WINVER 和 _WIN32_WINNT

Visual C++ 不再适用于 Windows 95、Windows 98、Windows ME 或 Windows NT。如果您的WINVER_WIN32_WINNT 宏分配给了其中一个 Windows 版本,则必须修改相应宏。当升级使用 Visual C++ 早期版本创建的项目时,如果 WINVER_WIN32_WINNT 宏分配给了不再受支持的 Windows 版本,则会显示与这些宏相关的编译错误。

若要修改相应宏,请在头文件中添加以下行。

#ifndef WINVER 
#define WINVER  0x0600
#endif
 
#ifndef _WIN32_WINDOWS
#define _WIN32_WINDOWS 0x0600
#endif
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600
#endif

这是用于 Windows 2000 操作系统的值。 其他有效值包括 0x0501(用于 Windows XP)、0x0502(用于 Windows Server 2003)、0x0600(用于 Windows Vista)和 0x0601(用于 Windows 7)。

说明说明

如果您的应用程序中包括内部 MFC 头,则不能保证这些值能够正常工作。例如,afximpl.h 中不支持 Windows 2000。

还可以使用 /D 编译器选项定义此宏。有关更多信息,请参见/D(预处理器定义)

有关这些宏的含义的更多信息,请参见使用 Windows 头文件

该条同样适用于QT。

(3)QT中SetThreadExecutionState的使用

由于SetThreadExecutionState与windows的系统版本有关,

#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410)
WINBASEAPI EXECUTION_STATE WINAPI SetThreadExecutionState(EXECUTION_STATE);
#endif
因此根据(2)需要在 windows.h添加如下定义

#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600
#endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值