获取另一个进程'QueryPerformanceCounter()

时间:2011-12-03 13:45:53

标签: c#

我正在尝试从特定进程运行QueryPerformanceCounter()函数并将其返回值传递给我的C#应用​​程序。由于这两个过程(我的应用程序和我试图影响的应用程序)不同,我应该遵循什么样的策略?

1 个答案:

答案 0 :(得分:1)

QueryPerformanceCounter在计算机上的所有进程中同步。你可以在本地调用它。这与其他流程所获得的价值相同。

更新:好的,你是在对抗骗子。如果他们正在挂钩你的进程,那么他们也会挂钩你的子进程,所以产生一个帮助程序也无济于事。

您可以做的一件事是关联多个计时器。例如,

QueryPerformanceCounter(&liStart);
dwStart = GetTickCount();
GetSystemTimeAsFileTime(&ftStart);
Sleep(1000);
QueryPerformanceCounter(&liStop);
dwStop = GetTickCount();
GetSystemTimeAsFileTime(&ftStop);

所有四个计时器(QPC,GetTickCountGetSystemTimeAsFileTimeSleep)都应在测量误差范围内同意。

您可以做的另一件事是与外部来源相关联。例如,您可以编写一个函数,通过创建文件然后询问文件创建时间从文件系统获取时间。将此与其他四个计时器相关联。其他外部资源是声音和视频硬件。例如,您可以播放1秒的声音片段并查看它需要多长时间。或者等待垂直空白并查看它是否与显示器刷新率匹配。