我正在尝试进行一些测试,它需要Windows系统启动并运行15个实时分钟才能执行某个操作。但是,等待15个实时分钟是非常耗时的。
有没有办法更改GetTickCount()返回的值,以使系统看起来已经运行了15个实时分钟?
编辑:有一个应用程序做了一些接近我想要的东西,但它似乎不起作用,我必须处理十六进制值而不是直接十进制值:http://ysgyfarnog.co.uk/utilities/AdjustTickCount/
答案 0 :(得分:4)
不直接。
为什么不直接模拟调用,或者用策略对象替换执行时间检查的代码块?
struct Waiter
{
virtual void Wait() = 0;
virtual ~Waiter() {};
};
struct 15MinWaiter : public Waiter
{
virtual void Wait()
{
//Do something that waits for 15 mins
}
};
struct NothingWaiter : public Waiter
{
virtual void Wait()
{
//Nill
}
};
你可以做类似于模拟对GetTickCount的调用,但是在更高级别的抽象中执行此操作可能会更好。
答案 1 :(得分:2)
出于调试目的,您可以使用_GetTickCount()替换所有对GetTickCount()的调用,这可以实现以GetTickCount()或GetTickCount()+ 15min返回,具体取决于您是否正在调试。
为什么不做一分钟,确认它有效,然后再改回十五?
答案 2 :(得分:0)
你可以做一些非常丑陋的事情,比如#define GetTickCount()MyReallyEvilReplacement()。
答案 3 :(得分:0)
我需要调试相同的问题,虽然我记得Windows中有一个“兼容性”层可以伪造刻度线,但我再也找不到有关此信息。上面链接的应用程序无法正常工作,而且由于必须测试第三方应用程序,因此无法修改源代码。
我要做的是在休眠/混合关闭/睡眠中关闭Windows系统,然后启动到BIOS,然后将日期时间更改为我需要的日期,例如,如果要测试未签名的滴答计数,则增加30天
然后,当Windows重新启动时,它无法检测到自上次计算机真正启动以来的适当时间,并认为它已经运行了30天。
使用睡眠/休眠/混合关机(后者是Windows 8的默认设置)而不是关机非常重要,因为否则会重置正常运行时间。