透明窗口应用程序在Windows中叠加

时间:2012-02-29 14:05:42

标签: c# wpf windows

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

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

有可能实现这一目标吗?任何指导方针都表示赞赏。

2 个答案:

答案 0 :(得分:3)

您可以在应用中点击虚假窗口:

[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
}

现在双击即可设置您想要的内容。

答案 1 :(得分:1)

您可以创建一个透明的窗口并单击。然而,这是全有或全无。除了双击之外,您无法点击。

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

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

相关问题