Delphi:从服务获取活动用户空闲时间

Delphi:从服务获取活动用户空闲时间,delphi,winapi,Delphi,Winapi,我使用此代码从Windows应用程序获取本地空闲时间 但当我在服务中使用它时,它不会返回活动用户空闲时间 function IdleTime: DWord; var LastInput: TLastInputInfo; begin LastInput.cbSize := SizeOf(TLastInputInfo); GetLastInputInfo(LastInput); Result := (GetTickCount - LastInput.dwTime) DIV 1000;

我使用此代码从Windows应用程序获取本地空闲时间 但当我在服务中使用它时,它不会返回活动用户空闲时间

function IdleTime: DWord;
var
  LastInput: TLastInputInfo;
begin
  LastInput.cbSize := SizeOf(TLastInputInfo);
  GetLastInputInfo(LastInput);
  Result := (GetTickCount - LastInput.dwTime) DIV 1000;
end;
有什么想法吗


提前感谢

会话0中,您的服务在非交互式桌面上运行,因此无法访问有关交互式桌面的信息


您需要在交互式桌面上运行一个进程来获取该信息。我想您可以使用IPC机制将其传递给您的服务。即使您可以在会话0中获取信息,您会如何处理这些信息?我不确定。会话是隔离的。

一个服务没有特定的active desktop用户-可能有多个桌面会话正在进行中。上有一些可能与您的场景相关的注释。那么为什么不跟踪CPU使用情况呢?或者不以低优先级运行进程,这样任何用户的程序都会抢占它?如果以低优先级运行进程,那么系统将为您完成所有操作。我的CPU密集型后台进程就是这样做的。这是非常错误的方法。我是在看电影的时候使用电脑(真的很好,所以我90分钟都不接触输入设备),还是没有?