コード例 #1
5
        public DesktopInfo()
        {
            using(var searcher = new ManagementObjectSearcher("SELECT UserName FROM Win32_ComputerSystem"))
            {
                using(var collection = searcher.Get())
                {
                    var s = ((string)collection.Cast<ManagementBaseObject>().First()["UserName"]).Split('\\');
                    if(s.Length > 1)
                        Username = s.LastOrDefault();
                    else
                        Username = s.FirstOrDefault();
                }
            }
            _Users_DesktopPath = @"c:\users\" + Username + @"\desktop\";
            InputMouseEvent = Desktop_Sharing_Shared.Mouse.PInvoke.SendMouseEvent;
            InputKeyEvent = Desktop_Sharing_Shared.Keyboard.PInvoke.KeyEvent;

            m_hCurWinsta = new StationHandle(PInvoke.GetProcessWindowStation());
            if(m_hCurWinsta.IsInvalid)
            {

                var er = new Win32Exception(Marshal.GetLastWin32Error());

                throw er;
            }

            m_hWinsta = new StationHandle(PInvoke.OpenWindowStation("winsta0", false,
                ACCESS_MASK.WINSTA_ENUMDESKTOPS |
                ACCESS_MASK.WINSTA_READATTRIBUTES |
                ACCESS_MASK.WINSTA_ACCESSCLIPBOARD |
                ACCESS_MASK.WINSTA_CREATEDESKTOP |
                ACCESS_MASK.WINSTA_WRITEATTRIBUTES |
                ACCESS_MASK.WINSTA_ACCESSGLOBALATOMS |
                ACCESS_MASK.WINSTA_EXITWINDOWS |
                ACCESS_MASK.WINSTA_ENUMERATE |
                ACCESS_MASK.WINSTA_READSCREEN));
            if(m_hWinsta.IsInvalid)
            {

                var er = new Win32Exception(Marshal.GetLastWin32Error());

                throw er;
            }

            if(!PInvoke.SetProcessWindowStation(m_hWinsta.Handle))
            {

                var er = new Win32Exception(Marshal.GetLastWin32Error());

                throw er;
            }
            m_hDesk = new DesktopHandle(PInvoke.OpenDesktop("default", 0, false,
                    ACCESS_MASK.DESKTOP_CREATEMENU |
                    ACCESS_MASK.DESKTOP_CREATEWINDOW |
                    ACCESS_MASK.DESKTOP_ENUMERATE |
                    ACCESS_MASK.DESKTOP_HOOKCONTROL |
                    ACCESS_MASK.DESKTOP_JOURNALPLAYBACK |
                    ACCESS_MASK.DESKTOP_JOURNALRECORD |
                    ACCESS_MASK.DESKTOP_READOBJECTS |
                    ACCESS_MASK.DESKTOP_SWITCHDESKTOP |
                    ACCESS_MASK.DESKTOP_WRITEOBJECTS));
            if(m_hDesk.IsInvalid)
            {

                var er = new Win32Exception(Marshal.GetLastWin32Error());

                throw er;
            }
            if(!PInvoke.SetThreadDesktop(m_hDesk.Handle))
            {

                var er = new Win32Exception(Marshal.GetLastWin32Error());

                throw er;
            }
            Current_Desktop = GetDesktop(m_hDesk);
        }
コード例 #2
0
        public DesktopInfo()
        {
            using (var searcher = new ManagementObjectSearcher("SELECT UserName FROM Win32_ComputerSystem"))
            {
                using (var collection = searcher.Get())
                {
                    var s = ((string)collection.Cast <ManagementBaseObject>().First()["UserName"]).Split('\\');
                    if (s.Length > 1)
                    {
                        Username = s.LastOrDefault();
                    }
                    else
                    {
                        Username = s.FirstOrDefault();
                    }
                }
            }
            _Users_DesktopPath = @"c:\users\" + Username + @"\desktop\";
            InputMouseEvent    = Desktop_Sharing_Shared.Mouse.PInvoke.SendMouseEvent;
            InputKeyEvent      = Desktop_Sharing_Shared.Keyboard.PInvoke.KeyEvent;


            m_hCurWinsta = new StationHandle(PInvoke.GetProcessWindowStation());
            if (m_hCurWinsta.IsInvalid)
            {
                var er = new Win32Exception(Marshal.GetLastWin32Error());

                throw er;
            }

            m_hWinsta = new StationHandle(PInvoke.OpenWindowStation("winsta0", false,
                                                                    ACCESS_MASK.WINSTA_ENUMDESKTOPS |
                                                                    ACCESS_MASK.WINSTA_READATTRIBUTES |
                                                                    ACCESS_MASK.WINSTA_ACCESSCLIPBOARD |
                                                                    ACCESS_MASK.WINSTA_CREATEDESKTOP |
                                                                    ACCESS_MASK.WINSTA_WRITEATTRIBUTES |
                                                                    ACCESS_MASK.WINSTA_ACCESSGLOBALATOMS |
                                                                    ACCESS_MASK.WINSTA_EXITWINDOWS |
                                                                    ACCESS_MASK.WINSTA_ENUMERATE |
                                                                    ACCESS_MASK.WINSTA_READSCREEN));
            if (m_hWinsta.IsInvalid)
            {
                var er = new Win32Exception(Marshal.GetLastWin32Error());

                throw er;
            }

            if (!PInvoke.SetProcessWindowStation(m_hWinsta.Handle))
            {
                var er = new Win32Exception(Marshal.GetLastWin32Error());

                throw er;
            }
            m_hDesk = new DesktopHandle(PInvoke.OpenDesktop("default", 0, false,
                                                            ACCESS_MASK.DESKTOP_CREATEMENU |
                                                            ACCESS_MASK.DESKTOP_CREATEWINDOW |
                                                            ACCESS_MASK.DESKTOP_ENUMERATE |
                                                            ACCESS_MASK.DESKTOP_HOOKCONTROL |
                                                            ACCESS_MASK.DESKTOP_JOURNALPLAYBACK |
                                                            ACCESS_MASK.DESKTOP_JOURNALRECORD |
                                                            ACCESS_MASK.DESKTOP_READOBJECTS |
                                                            ACCESS_MASK.DESKTOP_SWITCHDESKTOP |
                                                            ACCESS_MASK.DESKTOP_WRITEOBJECTS));
            if (m_hDesk.IsInvalid)
            {
                var er = new Win32Exception(Marshal.GetLastWin32Error());

                throw er;
            }
            if (!PInvoke.SetThreadDesktop(m_hDesk.Handle))
            {
                var er = new Win32Exception(Marshal.GetLastWin32Error());

                throw er;
            }
            Current_Desktop = GetDesktop(m_hDesk);
        }