所以在构造函数中我有这个
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?
}
}
谢谢!
答案 0 :(得分:0)
我以某种方式同意这可能是XY问题。但是,由于我们不知道其背后的实际用例,因此我将说明如何获取最后的x和y。
您可以对鼠标移动事件做出反应,以存储x和y,并在收到按键事件时使用该信息。
她是XAML的一部分:
<StackPanel KeyDown="StackPanel_KeyDown" MouseMove="StackPanel_MouseMove">
以下是处理程序: 私人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);
}
}