c# - 如何使用 KeyUp 键在特定光标位置执行鼠标单击?
问题描述
所以在构造函数中我有这个
KeyUp += WindowKeyUp;
在我有这个的方法中,x和y是我从另一种方法中得到的一个点。
private void DoMouseClick(int x, int y)
{
SetCursorPos(x, y);
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, x, y, 0, 0);
}
那么当我释放空格键时,我应该在这里写什么来在那个特定的光标位置执行鼠标单击?
private void WindowKeyUp(object sender, System.Windows.Input.KeyEventArgs e)
{
if (e.Key == Key.Space)
{
//what to write here?
}
}
提前致谢!
解决方案
我以某种方式同意这可能是一个 XY 问题。但由于我们不知道它背后的真实用例,我将展示如何获得最后的 x 和 y。
您可以对鼠标移动事件做出反应以存储 x 和 y,并在收到按键事件时使用该信息。
她是 XAML 部分:
<StackPanel KeyDown="StackPanel_KeyDown" MouseMove="StackPanel_MouseMove">
以下是处理程序: private void DoMouseClick(double x, double y) { //... }
private double m_x = 0.0;
private double m_y = 0.0;
private void StackPanel_MouseMove(object sender, System.Windows.Input.MouseEventArgs e)
{
var p = e.GetPosition(this);
m_x = p.X;
m_y = p.Y;
}
private void StackPanel_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
if (e.Key == System.Windows.Input.Key.Space) {
DoMouseClick(m_x, m_y);
}
}
推荐阅读
- python - 如何使用python中的方程填充多维数组
- python - pyInquirer 库列表中没有显示问题?
- php - 如何与 .htaccess 建立短连接?
- ruby-on-rails-6 - 如何在模块内定义控制器?
- javascript - Chrome 扩展程序:如何设置功能以在日期更改时执行
- javascript - OpenLayers - ol.Feature(s) 在初始页面加载时正确显示,但在页面加载完成后添加新 ol.Feature(s) 时显示不正确
- flask - 烧瓶应用程序端口拒绝ec2上的连接
- python-3.x - 我正在尝试在 Python 中制作“河内之塔”,但我将项目从列表“移动”到列表的方法似乎不起作用
- node.js - 这是一个什么样的对话框?如何使用 Puppeteer 与之交互?
- c - 如果传入的函数有参数,我如何屏蔽来自 makecontext 的警告?