【发布时间】:2021-01-11 23:55:31
【问题描述】:
我想创建一个可以减慢 Windows 时间的程序。我将为此使用SetLocalTime()。但是,当我打开程序时,我的电脑开始出现微卡顿,游戏性能下降,即使该进程几乎没有使用任何 CPU。
#include <iostream>
#include "Windows.h"
#include <thread>
#include <chrono>
using namespace std;
SYSTEMTIME st;
WORD hour;
WORD minute;
WORD second = 0;
int main()
{
GetLocalTime(&st);
hour = st.wHour;
minute = st.wMinute;
second = st.wSecond;
for (;;)
{
for (int i = 0; i < 4; i++)
{
this_thread::sleep_for(chrono::milliseconds(500));
st.wHour = hour;
st.wMinute = minute;
st.wSecond = second;
SetLocalTime(&st);
}
second++;
if (second == 60)
{
second = 0;
minute++;
}
if (minute == 60)
{
minute = 0;
hour++;
}
}
}
【问题讨论】:
-
如果您通过更改 Windows 时间来减慢时间,那么每个使用系统时钟进行计时的程序不会也开始变慢吗?你想达到什么目的?
-
我正在尝试实现一个让 windows 时间变慢的程序,因为这将帮助我对使用 windows 时间的应用程序进行时间调整
-
这可能无法修复,但我的建议是调整值,看看它是否会增加或减少口吃。
-
@DorukGez "这将帮助我对使用 Windows 时间的应用程序进行时间调整" - 那么为什么不直接挂钩该特定应用程序,而不是操纵操作系统本身呢?挂钩
GetLocalTime()、GetSystemTime()和其他相关 API,让它们返回任何你想要的。 -
它不适用于这个应用程序也许这意味着它不会起作用。可能问题是目标应用程序有代码来处理 WM_TIMECHANGE 消息,而此代码会导致卡顿,因为您在短时间内更改了很多次。
标签: c++ performance time