我想寫一個應用程序來處理某些用戶操作。透明窗口應用程序覆蓋在Windows中
該應用程序將永遠是透明的,應點擊。所以,後面的窗口將被看到,並且透明的應用程序點擊後,我應該可以點擊後面的窗口。只有特定的用戶操作(如雙擊)我想在我的透明應用程序中處理。
有沒有可能做到這一點?任何指導方針,讚賞。
我想寫一個應用程序來處理某些用戶操作。透明窗口應用程序覆蓋在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
}
現在上雙擊,你可以設置你什麼都想要。
你會如何去確保這個假表格在頂部?當用戶將其他表單帶到z順序的頂部時,此表單將不會收到雙擊。 – 2012-02-29 15:08:02
@ DavidHeffernan - 是的,這確實是一個問題。 – Jimmy 2012-02-29 17:39:37
@大衛Heffernan,普通人:'this.TopMost = true;' – 2012-02-29 17:43:01