예제 #1
0
        /// <summary>
        /// Creates a new process on the specified desktop.
        /// </summary>
        /// <param name="path">Path to application.</param>
        /// <param name="desktop">Desktop name.</param>
        /// <returns>A Process object for the newly created process, otherwise, null.</returns>
        public static Process CreateProcess(string path, string desktop)
        {
            if (!SEBDesktopController.Exists(desktop))
            {
                return(null);
            }

            // create the process.
            SEBDesktopController d = SEBDesktopController.OpenDesktop(desktop);

            return(d.CreateProcess(path));
        }
 public Process CreateProcess(string path)
 {
     this.CheckDisposed();
     if (!this.IsOpen)
     {
         return((Process)null);
     }
     SEBDesktopController.STARTUPINFO lpStartupInfo = new SEBDesktopController.STARTUPINFO();
     lpStartupInfo.cb        = Marshal.SizeOf((object)lpStartupInfo);
     lpStartupInfo.lpDesktop = this.m_desktopName;
     SEBDesktopController.PROCESS_INFORMATION lpProcessInformation = new SEBDesktopController.PROCESS_INFORMATION();
     if (!SEBDesktopController.CreateProcess((string)null, path, IntPtr.Zero, IntPtr.Zero, true, 32, IntPtr.Zero, (string)null, ref lpStartupInfo, ref lpProcessInformation))
     {
         return((Process)null);
     }
     return(Process.GetProcessById(lpProcessInformation.dwProcessId));
 }