示例#1
0
            public override IEnumerable <Tuple <IntPtr, object> > AllForms(IntPtr display, Xwt.Backends.IWindowFrameBackend window)
            {
                var found = new List <IntPtr>();

                Win32.EnumWindowsProc func = (hwnd, lparam) =>
                {
                    if ((Win32.GetWindowLongPtr(hwnd, -16) & 0x10000000L) != 0) // WS_STYLE&WS_VISIBLE
                    {
                        found.Add(hwnd);
                    }
                    return(true);
                };
                Win32.EnumWindows(func, IntPtr.Zero);

                if (Xwt.Toolkit.CurrentEngine.Type == ToolkitType.Wpf)
                {
                    return(found.Select(_h =>
                    {
                        var obj = Win32.swi_hwndsource.InvokeStatic("FromHwnd", _h);
                        obj = obj?.GetType().GetPropertyValue(obj, "RootVisual");
                        return new Tuple <IntPtr, object>(_h, obj ?? _h);
                    }));
                }
                else if (Xwt.Toolkit.CurrentEngine.Type == ToolkitType.Gtk)
                {
                    var d = CreateGtkLookup();

                    return(found.Select(_h =>
                    {
                        d.TryGetValue(_h, out object obj);
                        //   var obj = Win32.swi_hwndsource.InvokeStatic("FromHwnd", _h);
                        //    obj = obj?.GetType().GetPropertyValue(obj, "RootVisual");
                        return new Tuple <IntPtr, object>(_h, obj ?? _h);
                    }));
                }
                else
                {
                    return(found.Select(_h => new Tuple <IntPtr, object>(_h, _h)));
                }
            }
示例#2
0
            public override IEnumerable <Tuple <IntPtr, object> > AllForms(IntPtr xdisp, Xwt.Backends.IWindowFrameBackend window)
            {
                var gtkkwin    = window.Window;
                var gdkscr     = gtkkwin.GetType().GetPropertyValue(gtkkwin, "Screen");
                var rw         = gdkscr.GetType().GetPropertyValue(gdkscr, "RootWindow");
                var rwh        = (IntPtr)rw.GetType().GetPropertyValue(rw, "Handle");
                var rootWindow = getxid(rwh);

                try
                {
                    var d = CreateGdkLookup();
                    return(_AllWindows(xdisp, rootWindow, d));
                }
                finally
                {
                }
            }
示例#3
0
 public abstract IEnumerable <Tuple <IntPtr, object> > AllForms(IntPtr display, Xwt.Backends.IWindowFrameBackend window);