示例#1
0
        public static Process CreateProcess(string commandLine, string desktop = null, string workingDirectory = null)
        {
            if (workingDirectory == null)
            {
                workingDirectory = Environment.CurrentDirectory;
            }

            STARTUPINFO si = new STARTUPINFO();

            si.cb = Marshal.SizeOf(si);
            si.lpDesktop = desktop;

            PROCESS_INFORMATION pi = new PROCESS_INFORMATION();

            if (!Kernel32.CreateProcess(null, commandLine, IntPtr.Zero, IntPtr.Zero, true, Constants.NORMAL_PRIORITY_CLASS, IntPtr.Zero,
                                        null, ref si, ref pi)
                )
            {
                throw new Win32Exception();
            }

            return Process.GetProcessById(pi.dwProcessId);
        }
示例#2
0
 public static extern bool CreateProcess(string lpApplicationName,
    string lpCommandLine, IntPtr lpProcessAttributes,
    IntPtr lpThreadAttributes, bool bInheritHandles,
    int dwCreationFlags, IntPtr lpEnvironment, string lpCurrentDirectory,
    ref STARTUPINFO lpStartupInfo,
    ref PROCESS_INFORMATION lpProcessInformation);
示例#3
0
 public static extern bool CreateProcess(string lpApplicationName,
                                         string lpCommandLine, IntPtr lpProcessAttributes,
                                         IntPtr lpThreadAttributes, bool bInheritHandles,
                                         int dwCreationFlags, IntPtr lpEnvironment, string lpCurrentDirectory,
                                         ref STARTUPINFO lpStartupInfo,
                                         ref PROCESS_INFORMATION lpProcessInformation);