单击透明窗体访问桌面我有一个屏幕捕获实用程序,我可以用橡皮圈在桌面上的一个区域。我以一种相当简单的方式执行此操作,我有一个与屏幕大小相同的表单,并将绘制的桌面屏幕截图转换为灰度。当用户按住鼠标左键时,他/她可以在表单上选择一个区域。用户绘制的矩形填充了TransparentColor。一旦用户抬起他/她的鼠标,透明矩形就会留在原处并且??实际桌面可见。这是我的问题:在我的开发PC上,我实际上可以单击这个透明矩形并导航等,而在我的另一台PC上,表单响应鼠标在实际透明矩形上的单击。我在C#中使用.NET4.0,关于如何让它在所有情况下实际点击桌面有什么想法吗?谢谢,非常感谢:)在深入研究这个问题之后,我设法找到了解决这个问题的正确方法。事实证明,通过适当的Win32API调用,可以为鼠标点击设置“不可见”表单。这可以通过以下方式实现:[DllImport("user32.dll",SetLastError=true)]staticexternintGetWindowLong(IntPtrhWnd,intnIndex);[DllImport("user32.dll")]staticexternintSetWindowLong(IntPtrhWnd,intnIndex,intdwNewLong);[DllImport("user32.dll")]staticexternboolSetLayeredWindowAttributes(IntPtrhwnd,uintcrKey,bytebAlpha,uintdwFlags);publicvoidSetFormTransparent(IntPtrHandle){oldWindowLong=GetHandle,Long(GWL_EXSTYLE);SetWindowLong(Handle,GWL_EXSTYLE,Convert.ToInt32(oldWindowLong|WS_EX_LAYERED|WS_EX_TRANSPARENT));}publicvoidSetFormNormal(IntPtrHandle){SetWindowLong(Handle,GWL_EXSTYLE,Convert.ToInt32_ED);有一个技巧。您需要注意,论坛上发布的所有点击都将通过表单提交并发送到表单下方的任何内容。为了确保如果我点击我的表单,例如点击一个按钮,我希望按钮被点击,我做了一个简单的技巧。我在后台运行一个计时器,每N毫秒运行一次并分析Cursor的位置。如果它在我想要的区域上方,它会通过SetFormNormal()将Form设置为Normal,否则它将是透明的。希望这段代码能有所帮助,人们会使用它。以上就是C#学习教程:点击透明窗体进入桌面分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
