Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用带capslock的sendkeys会产生不可预测的结果_C#_Sendkeys - Fatal编程技术网

C# 使用带capslock的sendkeys会产生不可预测的结果

C# 使用带capslock的sendkeys会产生不可预测的结果,c#,sendkeys,C#,Sendkeys,我想模拟用户输入,以防止屏幕锁定 public Form1() { aTimer = new System.Threading.Timer(OnTimedEvent, null, 5000, Timeout.Infinite); } private void OnTimedEvent(Object source) { Stopwatch watch = new Stopwatch(); watch.Start(); if (IdleTimeFinder.GetI

我想模拟用户输入,以防止屏幕锁定

public Form1()
{
   aTimer = new System.Threading.Timer(OnTimedEvent, null, 5000, Timeout.Infinite);
}

private void OnTimedEvent(Object source)
{
    Stopwatch watch = new Stopwatch();
    watch.Start();

    if (IdleTimeFinder.GetIdleTime() > 2000) 
    {
        SendKeys.SendWait({CAPSLOCK}); 
    }
    aTimer.Change(Math.Max(0, 5000 - watch.ElapsedMilliseconds), Timeout.Infinite);
 } 
我的问题是有时capslock会开或关,有时它会闪烁。
这不是很容易预测的

我认为多个线程之间可能存在竞态条件,导致结果不一致

防止计算机睡眠的正确方法是使用SetThreadExecutionState函数

你可以很容易地p/调用这个函数,我以前在C#中使用过它

要从C#调用它,您需要使用以下声明:


我认为您可能有多个线程之间的竞争条件,从而导致不一致的结果

防止计算机睡眠的正确方法是使用SetThreadExecutionState函数

你可以很容易地p/调用这个函数,我以前在C#中使用过它

要从C#调用它,您需要使用以下声明:


我认为您可能有多个线程之间的竞争条件,从而导致不一致的结果

防止计算机睡眠的正确方法是使用SetThreadExecutionState函数

你可以很容易地p/调用这个函数,我以前在C#中使用过它

要从C#调用它,您需要使用以下声明:


我认为您可能有多个线程之间的竞争条件,从而导致不一致的结果

防止计算机睡眠的正确方法是使用SetThreadExecutionState函数

你可以很容易地p/调用这个函数,我以前在C#中使用过它

要从C#调用它,您需要使用以下声明:


研究媒体播放器如何防止屏幕保护程序、屏幕锁定或系统进入睡眠状态可能是值得的。我想一定有一些API可以做到这一点
SendKeys
似乎有些粗糙。我认为我的帖子很清晰简单。我包含了代码,非常直截了当。我不明白为什么a-1是应得的@stakx感谢下面的解决方案似乎就是我正在寻找的。研究媒体播放器如何防止屏幕保护程序、屏幕锁定或系统进入睡眠状态可能是值得的。我想一定有一些API可以做到这一点
SendKeys
似乎有些粗糙。我认为我的帖子很清晰简单。我包含了代码,非常直截了当。我不明白为什么a-1是应得的@stakx感谢下面的解决方案似乎就是我正在寻找的。研究媒体播放器如何防止屏幕保护程序、屏幕锁定或系统进入睡眠状态可能是值得的。我想一定有一些API可以做到这一点
SendKeys
似乎有些粗糙。我认为我的帖子很清晰简单。我包含了代码,非常直截了当。我不明白为什么a-1是应得的@stakx感谢下面的解决方案似乎就是我正在寻找的。研究媒体播放器如何防止屏幕保护程序、屏幕锁定或系统进入睡眠状态可能是值得的。我想一定有一些API可以做到这一点
SendKeys
似乎有些粗糙。我认为我的帖子很清晰简单。我包含了代码,非常直截了当。我不明白为什么a-1是应得的@stakx谢谢下面的解决方案似乎就是我想要的。太简单了。非常感谢。这么简单。非常感谢。这么简单。非常感谢。这么简单。非常感谢。
[DllImport("kernel32.dll", CharSet = CharSet.Auto,SetLastError = true)]
static extern EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE esFlags);

[FlagsAttribute]
public enum EXECUTION_STATE :uint
{
     ES_AWAYMODE_REQUIRED = 0x00000040,
     ES_CONTINUOUS = 0x80000000,
     ES_DISPLAY_REQUIRED = 0x00000002,
     ES_SYSTEM_REQUIRED = 0x00000001
     // Legacy flag, should not be used.
     // ES_USER_PRESENT = 0x00000004
}