2009-07-23 27 views
0

我的应用程序作为另一个窗口应用程序中的插件运行。因此,我的窗户往往没有重点。现在,如果有人将鼠标移动到按钮/菜单上并单击一次,它所做的所有操作都将焦点设置到我的窗口中。然后他需要再次点击以获得实际的按钮功能。如何在.NET中重复单击鼠标

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

很明显,我应该只在点击结果成为SetFocus时执行此操作,否则它将运行按钮功能两次。

有什么建议吗?

深刻,永远感激, 大卫

回答

1

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

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

您也可以摆弄传播/直接生成WM_MOUSEXXXXX消息,但我已经玩了很多,并相信我,当我说它是一个完整的kludge。

+0

谢谢,我会试验这些。 – 2009-07-23 21:15:04

1

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

+0

需要采取的一点,我不喜欢偏离UI惯例,但传统的行为*很烦人。 – 2009-07-23 21:14:23

相关问题