如何将鼠标事件传递给我在C#/ Vista中的应用程序?
我在C#中编写了一个非常专业的应用程序,它作为整个桌面上的一个大多数透明窗口浮动。 我希望能够创建鼠标事件并将其传递给我后面的应用程序,并使它们看起来“正常”运行,以响应这些事件。 如果窗口管理器可以响应,也是更可取的。
我不是Windows大师,也不确定如何最好地实现这一目标。
从此页面: http : //bytes.com/forum/thread270002.html
似乎mouse_event会很好,除了因为我的应用程序漂浮在其他所有内容上,我猜我生成的事件永远不会进入下面的其他应用程序。
似乎替代方案是SendMessage,但这需要大量手动操作窗口,并且生成的鼠标事件不是“真实的”。
有关最佳方法的任何想法吗?
听起来你想做一些过滤用户输入的事情。
也许你只需要一个键盘/鼠标钩。
您可能想看看Windows API调用SetWindowsHookEx。
应该有足够的样本如何在C#中做到这一点,我发现的第一件事是这个链接 (也许不是最好的文章,但应该给你的想法)。
在查看System钩子和其他低级解决方案后,我发现了一种更简单的方法。
首先,将窗体的TransparencyKey和BackColor设置为相同。 这对我没有任何视觉差异,因为我的表格已经在视觉上透明,但这将有助于让鼠标事件通过。
其次,以下代码将让鼠标事件“落入”您的表单。
protected override CreateParams CreateParams { get { CreateParams createParams = base.CreateParams; createParams.ExStyle |= 0x00000020; // WS_EX_TRANSPARENT return createParams; } }
最后,将TopMost设置为true。
您的表单现在可以在视觉上浮动,但会放弃所有其他应用程序的焦点。
如果禁用该控件并返回,则可以将MouseDown事件传递给父级。
上述就是C#学习教程:如何将鼠标事件传递给我在C#/ Vista中的应用程序?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1024799.html