1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| public static class Launcher
{
public static Logger logger = LogManager.GetLogger("Launcher");
public class ProcessInfo
{
public IntPtr hProcess;
public IntPtr hThread;
public IntPtr ProcessID;
public IntPtr ThreadID;
}
[DllImport("CoreDll.DLL", SetLastError = true)]
private static extern int CreateProcess(String imageName, String cmdLine, IntPtr lpProcessAttributes, IntPtr lpThreadAttributes, Int32 boolInheritHandles, Int32 dwCreationFlags, IntPtr lpEnvironment, IntPtr lpszCurrentDir, byte[] si, ProcessInfo pi);
[DllImport("coredll")]
private static extern bool CloseHandle(IntPtr hObject);
[DllImport("coredll")]
private static extern uint WaitForSingleObject(IntPtr hHandle, uint dwMilliseconds);
[DllImport("coredll.dll", SetLastError = true)]
private static extern int GetExitCodeProcess(IntPtr hProcess, ref int lpExitCode);
public static String GetApplicationPath()
{
string codebase = Assembly.GetExecutingAssembly().GetName().CodeBase;
return Path.GetDirectoryName(codebase);
}
/// <summary>
/// Permet d'accéder à un fichier lié à notre application sur l'appareil cible (TSP).
/// </summary>
/// <param name="filename">Nom du fichier à accéder.</param>
/// <returns>Chemin d'accès sur l'appareil.</returns>
public static String GetPathToApplicationFile(String filename)
{
string appDir = GetApplicationPath();
return Path.Combine(appDir, filename);
}
public static void LaunchApp(string strPath, string strParms)
{
try
{
ProcessInfo pi = new ProcessInfo();
byte[] si = new byte[128];
logger.Info("lancement du process");
//String pathExe = GetPathToApplicationFile(strPath);
CreateProcess(strPath, strParms, IntPtr.Zero, IntPtr.Zero, 0, 0, IntPtr.Zero, IntPtr.Zero, si, pi);
WaitForSingleObject(pi.hProcess, 0xFFFFFFFF);
int exitCode = 0;
GetExitCodeProcess(pi.hProcess, ref exitCode);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
catch (Exception ee)
{
logger.Error(ee);
}
return;
}
} |
Partager