要在Windows中覆盖的透明窗口应用程序

本文关键字:透明窗口 应用程序 覆盖 Windows 要在 | 更新日期: 2023-09-27 18:26:04

我想编写一个应用程序来处理某些用户操作。

应用程序将始终是透明的,并且应该是点击通过的。因此,后面的窗口将被看到,当透明应用程序被点击通过时,我应该能够点击后面的窗口。我只想在透明应用程序中处理某些用户操作(如双击)。

有可能做到这一点吗?欢迎提供任何指导方针。

要在Windows中覆盖的透明窗口应用程序

您可以通过应用程序进行虚假窗口点击:

[DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
   public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);
   private const int MOUSEEVENTF_LEFTDOWN = 0x02;
   private const int MOUSEEVENTF_LEFTUP = 0x04;
   private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
   private const int MOUSEEVENTF_RIGHTUP = 0x10;
private void Form_MouseClick(object sender, MouseEventArgs e)
{
   this.Hide();
   Point p = this.PointToScreen(e.Location);
   mouse_event(MOUSEEVENTF_LEFTDOWN , p.X, p.Y, 0, 0);
   mouse_event(MOUSEEVENTF_LEFTUP, p.X, p.Y, 0, 0);
   this.Show();//since this.opacity = 0; form will never be really visible
}

现在双击你可以设置你想要的。

您可以制作一个透明的窗口并点击通过。然而,要么全有要么全无。除了双击,你不能点击通过。

所以,要想做你想做的事,我相信你需要使用全局鼠标挂钩来处理双击。但这需要本机代码。

事实上,仔细想想,你为什么需要透明的点击窗口?