Exemplo n.º 1
0
        //枚举窗口句柄
        public void GetMainWindowHandle(int processId)
        {
            Aero aero = new Aero();

            Win32Api.EnumWindows(new Win32Api.EnumWindowsProc((hWnd, lParam) =>
            {
                IntPtr PID;
                Win32Api.GetWindowThreadProcessId(hWnd, out PID);

                if (PID == lParam &&
                    Win32Api.IsWindowVisible(hWnd) &&
                    Win32Api.GetWindow(hWnd, Win32Api.GW_OWNER) == IntPtr.Zero)
                {
                    StringBuilder name      = new StringBuilder(256);
                    StringBuilder ClassName = new StringBuilder(256);
                    Win32Api.GetWindowText(hWnd, name, 256);
                    Win32Api.GetClassName(hWnd, ClassName, 256);
                    if (ClassName.ToString() != "WorkerW")//防止Aero桌面
                    {
                        //所有窗口附加Aero
                        if (State[0])
                        {
                            aero.LoadAero2(hWnd);
                        }
                        else
                        {
                            aero.LoadAero1(hWnd);
                        }
                    }
                }
                return(true);
            }), new IntPtr(processId));
        }