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); }
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); }