private Process LaunchSPDragDrop() { IntPtr userToken = IntPtr.Zero; try { iHostClipboard?.Dispose(); iHostClipboard = new AnonIpcHost("SP dragdrop"); ISLogger.Write("Launching SP dragdrop process"); userToken = Token.GetUserToken(); Process proc = ProcessLauncher.LaunchSP(ProcessLauncher.SPMode.Clipboard, WindowsDesktop.Default, Settings.DEBUG_SPCONSOLEENABLED, iHostClipboard, userToken); Token.CloseToken(userToken); spClipboardHandle.host = iHostClipboard; spClipboardHandle.NotifyHandleUpdate(); return(proc); } catch (Exception ex) { ISLogger.Write("Failed to launch inputshareSP dragdrop process: " + ex.Message); return(null); } finally { if (userToken != IntPtr.Zero) { Token.CloseToken(userToken); } } }
private Process LaunchSPMain() { IntPtr sysToken = IntPtr.Zero; try { iHostMain?.Dispose(); iHostMain = new AnonIpcHost("SP main"); ISLogger.Write("Launching SP default process"); if (Settings.DEBUG_SPECIFYSPSESSION != -1) { sysToken = unchecked (Token.GetSystemToken((uint)Settings.DEBUG_SPECIFYSPSESSION)); } else { sysToken = Token.GetSystemToken(Session.ConsoleSessionId); } Process proc = ProcessLauncher.LaunchSP(ProcessLauncher.SPMode.Default, WindowsDesktop.Default, Settings.DEBUG_SPCONSOLEENABLED, iHostMain, sysToken); Token.CloseToken(sysToken); spMainHandle.host = iHostMain; spMainHandle.NotifyHandleUpdate(); return(proc); } catch (Exception ex) { ISLogger.Write("Failed to launch inputshareSP main process: " + ex.Message); return(null); } finally { if (sysToken != IntPtr.Zero) { Token.CloseToken(sysToken); } } }