【问题标题】:WPF capture mouse click outside of my applicationWPF 在我的应用程序之外捕获鼠标点击
【发布时间】:2017-06-27 21:04:39
【问题描述】:

我正在将一个 WinForms 应用程序移植到 WPF。作为现有功能的一部分,用户可以单击任何正在运行的 Windows 应用程序(包括我正在运行的 WPF 应用程序之外),这将捕获窗口句柄和鼠标坐标。这可能吗?

【问题讨论】:

  • 你已经告诉我们你的问题是可能的:P
  • 不幸的是 globalhook 方法似乎与 WPF 不兼容 :(
  • 我不确定 WPF 与它有什么关系。 stackoverflow.com/questions/11180773/… 也许你应该在它自己的线程中运行钩子。
  • 我已经查看了那篇文章,但它是使用 Windows 挂钩在 C++ 中实现的。我希望找到一种本机 C# WPF 方法来实现这一点,因为在 C# 中使用时,大多数返回结构都很麻烦,正如我在尝试从工作的 Winforms 应用程序移植初始挂钩代码时发现的那样
  • 抱歉给您带来的麻烦,马克。也许尝试开始它?我们这些人非常擅长 p/invoke 东西。

标签: c# wpf mouseevent


【解决方案1】:

是的,您可以使用 WinApi 全局 Hoocker 来实现鼠标和键盘

private readonly MouseHookListener m_MouseHookManager;

public Form1()
{
     InitializeComponent();
     m_MouseHookManager = new MouseHookListener(new GlobalHooker());
     m_MouseHookManager.Enabled = true;
     m_MouseHookManager.MouseClick += m_mouseHookListener_Coordinates;

}

private void m_mouseHookListener_Coordinates(object sender, MouseEventArgs e)
{
     MessageBox.Show(this,"Coordinate X:"+e.X +" Coordinate Y:"+e.Y,"Coordinates",MessageBoxButtons.OK,MessageBoxIcon.Information);
}

并且正在工作并经过我的测试

抱歉,这是针对 Windows 窗体应用程序的

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-23
相关资源
最近更新 更多