C# 如何防止第三方应用检测到用户空闲?

C# 如何防止第三方应用检测到用户空闲?,c#,winforms,C#,Winforms,在Discord中,没有禁用空闲检测的选项,因此我想编写一个模拟用户的小应用程序,这样Discord和其他应用程序就不会认为我空闲了。 我试过使用游标。在屏幕上移动鼠标,但不阻止空闲检测 如何在c#windows窗体应用程序中模拟用户输入,从而愚弄discord和其他应用程序中的空闲检测?我最后使用了以下代码行。这只会将alt+tab发送到windows。对我来说是可行的,不过最好采用一种破坏性较小的方法,比如windows点击之类的 SendKeys.SendWait("%({tab

在Discord中,没有禁用空闲检测的选项,因此我想编写一个模拟用户的小应用程序,这样Discord和其他应用程序就不会认为我空闲了。

我试过使用游标。在屏幕上移动鼠标,但不阻止空闲检测


如何在c#windows窗体应用程序中模拟用户输入,从而愚弄discord和其他应用程序中的空闲检测?

我最后使用了以下代码行。这只会将alt+tab发送到windows。对我来说是可行的,不过最好采用一种破坏性较小的方法,比如windows点击之类的

SendKeys.SendWait("%({tab})");

按钮点击事件中的以下代码可以放入定时器。勾选事件,切换滚动锁定按钮

使用系统;
使用System.Runtime.InteropServices;
使用System.Windows.Forms;
命名空间堆栈溢出\u按ScrollLock
{
公共部分类Form1:Form
{
[DllImport(“user32.dll”)]
静态外部无效keybd_事件(
字节bVk,
字节bScan,
uint-dwFlags,
UIntPtr(外部信息);
公共表格1()
{
初始化组件();
}
私有静态void按ScrollLock()键
{
常量字节vkScroll=0x91;
常量字节keyeventfKeyup=0x2;
keybd_事件(vkScroll,0x45,0,(uintpttr)0);
keybd_事件(vkScroll,0x45,keyeventfKeyup,(uintpttr)0);
}
/// 
///这将进入计时器。勾选事件
/// 
/// 
/// 
private void ExecuteButton_Click(对象发送方,事件参数e)
{
按ScrollLock();
按ScrollLock();
}
}
}

我不知道Windows日记记录/播放是否有问题,但可能值得一看into@MickyD我不知道为什么会发生这种情况,我添加了“idle”作为标记,另一面显示为pythonidle。我已经移除了,谢谢你的发现。没问题,先生
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace StackOverflow_PressScrollLock
{
    public partial class Form1 : Form
    {
        [DllImport("user32.dll")]
        static extern void keybd_event(
            byte bVk, 
            byte bScan, 
            uint dwFlags, 
            UIntPtr dwExtraInfo);

        public Form1()
        {
            InitializeComponent();
        }
        private static void PressScrollLock()
        {
            const byte vkScroll = 0x91;
            const byte keyeventfKeyup = 0x2;

            keybd_event(vkScroll, 0x45, 0, (UIntPtr)0);
            keybd_event(vkScroll, 0x45, keyeventfKeyup, (UIntPtr)0);
        }
        /// <summary>
        /// This would go in a Timer.Tick event
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ExecuteButton_Click(object sender, EventArgs e)
        {
            PressScrollLock();
            PressScrollLock();
        }
    }
}