【问题标题】:Keyboard strokes with windows services使用 Windows 服务的键盘敲击
【发布时间】:2013-03-13 18:00:58
【问题描述】:

是否可以使用 Windows 服务模拟按键?例如,假设我有一个在后台运行的服务,只要发生触发器,例如触发器可能是下午 2:00,然后我会例如按窗口键 + L 来锁定计算机。这在 C# 中是否可行?

【问题讨论】:

  • 我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
  • 无论您采用何种方法,您都可能需要让系统服务在用户会话中启动子进程。可能有用的 API 调用包括 WTSGetActiveConsoleSessionId、WTSQueryUserToken 和 CreateProcessAsUser。 (理论上另一种选择是使用设备驱动程序,但这更加复杂。)

标签: c# windows windows-services


【解决方案1】:

我意识到你只想锁定你的电脑。

通过使用此代码,您可以像 Windows Logo + L

一样锁定您的计算机
[DllImport("user32")]
public static extern void LockWorkStation();

关于时间。它可能看起来像这样。

DateTime d = DateTime.Now;
if (d.TimeOfDay.Hours >= youSettedTime)
{
  LockWorkStation();
}

参考:http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/7aab9893-430a-4aed-8d51-b8368a61860e/

【讨论】:

  • 这在会话 0 中有效吗?确定它会锁定工作站运行的会话,而不是用户登录的会话吗?
  • 我很抱歉,但我没有测试:),但如果 OP 提到了session,那可能是另一个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-30
  • 2021-11-08
  • 1970-01-01
  • 2013-12-31
  • 2019-02-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多