我想编写一个应用程序来处理某些用户操作。
应用程序将始终是透明的,应该单击。因此,将看到后面的窗口,并且当透明的应用程序点击时,我应该能够点击后面的窗口。我只想在透明的应用程序中处理某些用户操作(如双击)。
有可能实现这一目标吗?任何指导方针都表示赞赏。
答案 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)
您可以创建一个透明的窗口并单击。然而,这是全有或全无。除了双击之外,您无法点击。
所以,要做你想做的事情我相信你需要使用全局鼠标钩来处理双击。但这需要原生代码。
事实上,想一想,为什么你需要透明的点击窗口?