public bool Create(
     string lpApplicationName,
     string lpCommandLine,
     IntPtr lpProcessAttributes,
     IntPtr lpThreadAttributes,
     bool bInheritHandles,
     uint dwCreationFlags,
     IntPtr lpEnvironment,
     string lpCurrentDirectory,
     [In] ref Startupinfo lpStartupInfo,
     out ProcessInformation lpProcessInformation
     )
 {
     return(CreateProcess(
                lpApplicationName,
                lpCommandLine,
                lpProcessAttributes,
                lpThreadAttributes,
                bInheritHandles,
                dwCreationFlags,
                lpEnvironment,
                lpCurrentDirectory,
                ref lpStartupInfo,
                out lpProcessInformation
                ));
 }
 private static extern bool CreateProcess(
     string lpApplicationName,
     string lpCommandLine,
     IntPtr lpProcessAttributes,
     IntPtr lpThreadAttributes,
     bool bInheritHandles,
     uint dwCreationFlags,
     IntPtr lpEnvironment,
     string lpCurrentDirectory,
     [In] ref Startupinfo lpStartupInfo,
     out ProcessInformation lpProcessInformation
     );
        public IntPtr Create(string commandLine)
        {
            ProcessInformation pi = new ProcessInformation();
            Startupinfo        si = new Startupinfo();

            si.cb = Marshal.SizeOf(si);
            if (this._process.Create(null, commandLine, IntPtr.Zero, IntPtr.Zero, false, 0, IntPtr.Zero, null, ref si, out pi))
            {
                return(pi.hProcess);
            }
            else
            {
                return(INVALID_HANDLE_VALUE);
            }
        }