1

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

这是一个显示 Aero 代码功能的链接: http ://ru11en.wordpress.com/category/mikumikudance/

这里是点击“通过”代码的链接:最 上面的表单,点击“通过”可能吗?

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

//GWL_STYLE=-16; GWL.ExStyle=-20;
 私人无效透明度_点击(对象发送者,EventArgs e)
        {
            ProcessItem selectedItem = (ProcessItem)this.comboBox1.SelectedItem;
            if (selectedItem != null)
            {
                IntPtr 句柄 = selectedItem.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); } } }
4

0 回答 0