如何让C#成为一个像透明窗口一样可以点击的透明窗口

时间:2013-05-22 20:00:02

标签: c# aero

我想要做的是让外部应用程序(进程)像TopMost Aero一样可以点击。问题是我可以让Aero工作或者通过TopMost单击窗口,但不能同时使用两者。 代码的注释部分(/ * DwmApi ... * /)是Aero代码,它也删除了进程窗口的标题栏,下面是点击窗口的代码(如果我不需要alpha设置有Aero,这里用于测试目的。)

以下链接显示了Aero代码的作用: http://ru11en.wordpress.com/category/mikumikudance/

这是点击“直通”代码的链接: Topmost form, clicking "through" possible?

请注意,如果我更改GWL_STYLE = -17,程序将不再删除标题栏。

 //GWL_STYLE=-16; GWL.ExStyle=-20;
 private void transparency_Click(object sender, EventArgs e)
        {
            ProcessItem selectedItem = (ProcessItem)this.comboBox1.SelectedItem;
            if (selectedItem != null)
            {
                IntPtr handle = selectedItem.Handle;
                if (handle != IntPtr.Zero)
                {

/*DwmApi.DwmExtendIntoClientAll(handle); int num = GetWindowLong(handle, GWL_STYLE) & ~WS_OVERLAPPEDWINDOW; SetWindowLong(handle, GWL_STYLE, num); SetWindowPos(handle, IntPtr.Zero, 0, 0, 0, 0, SWP__REFRESH); */ int wl = GetWindowLong(handle, GWL.ExStyle); original = wl; wl = wl | 0x80000 | 0x20; SetWindowPos(handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); SetWindowLong(handle, GWL.ExStyle, wl); SetLayeredWindowAttributes(handle, 0, 200, LWA.Alpha); } } }

0 个答案:

没有答案