cecreateprocess (rapi)
Last changed: -152.5.254.18

.
Summary
This function is used to run a new program. It creates a new process and its primary thread. The new process executes the specified executable file.

C# Signature:

[DllImport("rapi.dll", CharSet = CharSet.Unicode, SetLastError = true)]
public extern static bool CeCreateProcess(
    string pszImageName,
    string pszCmdLine,
    IntPtr psaProcess,
    IntPtr psaThread,
    bool fInheritHandles,
    int fdwCreate,
    IntPtr pvEnvironment,
    IntPtr pszCurDir,
    IntPtr psiStartInfo,
    ref PROCESS_INFORMATION pi);

User-Defined Types:

PROCESS_INFORMATION structure info at http://msdn.microsoft.com/en-us/library/ms684873(VS.85).aspx

C# Definition:

[StructLayout(LayoutKind.Sequential)]
public struct PROCESS_INFORMATION
{
   public IntPtr hProcess;
   public IntPtr hThread;    
   public int dwProcessID;    
   public int dwThreadID;    
}

Notes:

function info on msdn at http://msdn.microsoft.com/en-us/library/aa922104.aspx

Tips & Tricks:

Please add some!

Sample Code:

PROCESS_INFORMATION pi = new PROCESS_INFORMATION();
CeCreateProcess("myapp.exe", String.Empty, IntPtr.Zero, IntPtr.Zero, 0, 0, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, ref pi)

Alternative Managed API:

OpenNETCF.Diagnostics at http://www.opennetcf.org

  C# Example of the code you would use with openNETCF :
   ProcessStartInfo psi = new ProcessStartInfo(@"\PathTo\programToRun.exe");
   Process p = Process.Start(psi");
   p.WaitForExit(); // if this is set, your code will continue after the program has excited.

Documentation