【问题标题】:How to repeat a mouse click in .NET如何在 .NET 中重复鼠标单击
【发布时间】:2009-07-23 20:29:00
【问题描述】:

我的应用程序在另一个窗口应用程序中作为插件运行。因此,我的窗口经常没有焦点。现在,如果有人将鼠标移到按钮/菜单上并单击一次,它所做的就是将焦点设置到我的窗口。然后(s)他需要再次点击才能获得实际的按钮功能。

这是一个小烦恼,但我想摆脱它。首先,我尝试在鼠标进入我的对话空间时声明焦点,但事实证明这更烦人。所以我想要做的是重复鼠标点击,所以看起来好像一次点击既改变了焦点又按下了按钮。

显然我应该只在单击导致 SetFocus 时才这样做,否则它将运行按钮功能两次。

有什么建议吗?

深深地和永恒地负债, 大卫

【问题讨论】:

    标签: .net focus mouse click repeat


    【解决方案1】:

    鼠标点击模拟在这里看起来有点乱,但你总是可以通过SendInput API通过P/Invoke模拟任何(X,Y)的鼠标点击:

    [DllImport("user32.dll", SetLastError=true)]
    static extern uint SendInput(uint nInputs, INPUT [] pInputs, int cbSize);
    

    您也可以直接摆弄传播/生成 WM_MOUSEXXXX 消息,但我已经玩过很多次了,相信我说这完全是杂牌。

    【讨论】:

    • 谢谢,我会试验一下。
    【解决方案2】:

    我建议您保持原样;这是操作系统的标准行为,更改它可能会破坏标准的可用性准则。

    【讨论】:

    • 重点,我也不喜欢脱离 UI 约定,但是传统的行为烦人的。
    猜你喜欢
    • 2014-01-03
    • 1970-01-01
    • 2013-02-03
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    相关资源
    最近更新 更多