Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.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# 如何阻止用户在会话活动期间单击屏幕上的任何位置_C#_Click - Fatal编程技术网

C# 如何阻止用户在会话活动期间单击屏幕上的任何位置

C# 如何阻止用户在会话活动期间单击屏幕上的任何位置,c#,click,C#,Click,我正在编写一个自动化应用程序,其中一个程序被打开,而当该程序被打开时,我不希望用户被允许点击屏幕上的任何地方,因为这将导致自动化可能在特定点失败。我还没有找到任何人对此有解决方案,大多数解决方案只为按钮或特定窗口提供答案,但我想完全为用户禁用鼠标单击。有办法做到这一点吗?使用全局鼠标挂钩 使用全局鼠标挂钩来监视和选择性地阻止鼠标事件 全局鼠标/键盘钩子的一个示例实现是nuget包和GitHub源代码 仅阻止用户单击 如果您希望阻止用户单击,但继续发送自动单击,则可以升起一个标志,向鼠标按下事件发

我正在编写一个自动化应用程序,其中一个程序被打开,而当该程序被打开时,我不希望用户被允许点击屏幕上的任何地方,因为这将导致自动化可能在特定点失败。我还没有找到任何人对此有解决方案,大多数解决方案只为按钮或特定窗口提供答案,但我想完全为用户禁用鼠标单击。有办法做到这一点吗?

使用全局鼠标挂钩 使用全局鼠标挂钩来监视和选择性地阻止鼠标事件

全局鼠标/键盘钩子的一个示例实现是nuget包和GitHub源代码

仅阻止用户单击 如果您希望阻止用户单击,但继续发送自动单击,则可以升起一个标志,向鼠标按下事件发出信号,表示不阻止下一次单击

注意:在从标志升起到事件过滤下一个鼠标的一小段时间内,钩子将捕获用户单击,而不是自动单击。

阻止鼠标按下事件示例 在下面的代码中,我给出了一个使用nuget package在
TimeSpan
时间段内全局阻止鼠标单击的示例:

必须使用声明:

使用系统诊断;
使用Gma.System.MouseKeyHook;
代码:

//全局钩子
私人IKeyboardMouseEvents_globalHook;
//秒表用于计算全局鼠标按下事件被阻止的时间量
私人秒表_Stopwatch=新秒表();
//阻止全局鼠标按下事件的时间量
私人时间跨度(u TimeSpan);
//连接全局挂钩
私有无效订阅()
{
_globalHook=Hook.GlobalEvents();
_globalHook.MouseDownExt+=GlobalHookMouseDownExt;
}
//拆下全局挂钩
私有无效取消订阅()
{
_globalHook.MouseDownExt-=GlobalHookMouseDownExt;
_globalHook.Dispose();
}
//全局钩住鼠标事件
私有void GlobalHookMouseDownExt(对象发送方,MouseEventExtArgs e)
{
如果(_秒表正在运行)
{
如果(_stopwatch.appeased<_timeSpan)
{
e、 已处理=正确;
}
其他的
{
_秒表;
}
}
}
//阻止timeSpan时间量的全局鼠标按下事件
私有void BlockMouseDown(TimeSpan TimeSpan)
{
_时间跨度=时间跨度;
_stopwatch.Restart();
}
用法:

//附加全局钩子
订阅();
...
//阻止鼠标按下事件持续10秒
BlockMouseDown(时间跨度从秒(10));

不容易不。。。除了编写一个新的鼠标驱动程序。也许可以禁用鼠标?像是通过设备管理器还是卸载驱动程序?为什么不在不同的环境下运行自动化,如果用户无论如何都不应该与它交互,为什么要以交互方式运行它?@Milney自动化会打开一个第三方应用程序,需要某种形式的交互,这是由自动化通过键盘和鼠标单击实现的,但是,我不希望用户能够通过点击屏幕上或应用程序中的任何位置来移除运行的应用程序的焦点,从而破坏整个过程……如果有一个全局鼠标挂钩阻止活动,那么自动化将如何正确工作?它将如何区分来自用户的内容和来自自动化程序的内容?您可以升起一个标志,向鼠标按下事件发出信号,表示不会阻止下一次单击。在从标志升起到事件过滤下一个鼠标的一小段时间内,用户几乎不可能单击鼠标。“在从旗帜升起到事件过滤下一个鼠标的一小段时间内,用户几乎不可能单击鼠标。“您不知道用户下次单击鼠标的时间。这将在某个时候失败;现实世界有一种比我们想象的更能证明自己的方法例如,有一次我有个学生抱怨他们的登录屏幕没有正确响应鼠标点击。结果他们把桌子上的东西挪动了一下,一本书轻轻地按住空格键。这将是一个键盘挂钩相当大的问题。发生了…@Idle\u Mind:我猜你是在写。它可能仍然适用于大多数情况。无论如何,我添加了一个关于这个问题的警告