目标:能够在Windows桌面应用程序上找到被点击的元素的点(X,Y)而不执行点击本身。
不工作的解决方案我已将mousekeyhook Nuget 包添加到我的 .net 核心 WPF 应用程序中,它工作正常(当单击和事件引发正确位置时),但每次该程序命中断点(对于下面的特定示例 - 在 M_Events_MouseDown 方法)鼠标开始滞后约 20 秒。
我还发现在 WinForms 应用程序中它运行顺畅
MouseKeyHook 实现:
public partial class MainWindow : Window
{
private IKeyboardMouseEvents m_Events;
public MainWindow()
{
InitializeComponent();
SubscribeGlobal();
}
private void SubscribeGlobal()
{
Unsubscribe();
Subscribe(Hook.GlobalEvents());
}
private void Subscribe(IKeyboardMouseEvents events)
{
m_Events = events;
m_Events.MouseDown += M_Events_MouseDown;
}
private void M_Events_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
Console.WriteLine($"Mouse down :{e}");
}
private void Unsubscribe()
{
if (m_Events == null)
return;
m_Events.MouseDown -= M_Events_MouseDown;
}
}