微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将winapi事件转发到另一个窗口

我现在拥有的东西是:C#中的应用程序是半透明的,不会捕获winapi事件 – 每次点击,拖动等都是通过下层窗口捕获的,这是独立的应用程序(如webbrower)。 我用这个来覆盖浏览器显示的信息。 这是我的代码

int exstyle = getwindowlong(this.Handle,GWL_EXSTYLE); exstyle |= WS_EX_TRANSPARENT; SetwindowLong(this.Handle,GWL_EXSTYLE,exstyle); IntPtr hwndf = this.Handle; IntPtr hwndParent = GetDesktopWindow(); SetParent(hwndf,hwndParent);

但现在,我想发送所有事件到我的应用程序窗口(这是半透明的顶部)和networking浏览器(在我的应用程序下)。 所以例如,如果我点击,点击在两个窗口中工作,就好像他们在顶部。 我想只有这样做的方法是捕捉所有事件,然后将它们转发到较低的窗口,但有什么办法做到这一点? 我使用winforms作为窗口库。

我现在所做的并不是那么重要,因为我通常要消耗事件,然后将它们转发到下层窗口。 所以这和我现在用WS_EX_TRANSPARENT做的完全不同。 这一点是同时在两个窗口中拖动内容。 如果还有更好的办法,我会很高兴听到的。

至less我需要的是将拖动事件转移到两个窗口,并将所有其他事件转移到下层窗口(不在我的控制下)。 所以,也许这会更容易留在我的窗口作为WS_EX_TRANSPARENT(使事件传递到底层窗口),只需安装全局钩子接收拖动事件? 你怎么看?

打开Python IDLE和运行命令

我怎样才能忽略MS Windows文件

Java平台依赖的错误(在eclipse窗口中运行,但在linux中出错)

如何在C ++中捕获ping的返回值

我怎样才能唯一识别一个显示器?

顺便说一句,我没有与Winapi的经验,所以解决scheme可能是显而易见的。

通过使用指向创build对象的指针访问冲突错误

从控制台进程读取

在hbrBackground中的颜色窗口

我怎样才能find什么字体实际上用于我的CreateFont调用

Python调用命令行上指示的脚本是否有path?

你可以通过重载窗体上的WndProc来捕获Windows事件发送自己的窗体,或者通过调用user32!GetMessage

您可以通过user32!PostMessage或user32!SendMessage apis( 阅读msdn上的PostMessage函数 )将消息发送到其他Windows窗体。

在底层表单处理之后,您可以尝试转发事件。 就像是

protected override void OnDragOver(DragEventArgs drgevent) { base.OnDragOver(drgevent); MyControl.ForwardDragEvent(drgevent); }

在MyControl中:

public void ForwardDragEvent(DragEventArgs drgevent) { base.OnDragOver(drgevent); //Or call your own method to handle the event }

我用它来转发滚动事件,但在我的情况下,只有一个控件处理事件..

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐