Lors de l’exécution d’un programme utilisant Process.Start, il ne peut pas trouver ses fichiers de ressources.

J’ai ce code:

private void button1_Click(object sender, EventArgs e) { Process p = new Process(); p.StartInfo.FileName = "C:/Users/Valy/Desktop/3dcwrelease/3dcw.exe"; p.Start(); } 

3dcw.exe est une application pour les graphiques OpenGL.

Le problème est que lorsque je clique sur le bouton, le fichier exécutable s’exécute, mais il ne peut pas accéder à ses fichiers de texture.

Quelqu’un a-t-il une solution? Je pense que quelque chose comme le chargement des fichiers bitmap en arrière-plan, puis l’exécution du fichier exe, mais comment puis-je le faire?

J’ai cherché sur Internet une solution à votre problème et ai trouvé ce site: http://www.widecodes.com/0HzqUVPWUX/i-am-lauching-an-opengl-program-exe-file-from-visual- base-mais-la-texture-manque-ce-qui-est-faux.html

En code C #, cela ressemble à ceci:

 ssortingng exepath = @"C:\Users\Valy\Desktop\3dcwrelease\3dcw.exe"; ProcessStartInfo psi = new ProcessStartInfo(); psi.FileName = exepath; psi.WorkingDirectory = Path.GetDirectoryName(exepath); Process.Start(psi); 

Le problème est probablement que 3dcw.exe recherche des fichiers dans son répertoire de travail actuel. Lorsque vous exécutez une application à l’aide de Process.Start , le répertoire de travail en cours de cette application est Process.Start par défaut sur %SYSTEMROOT%\system32 . Le programme attend probablement un répertoire différent, probablement celui dans lequel se trouve le fichier exécutable.

Vous pouvez définir le répertoire de travail du processus à l’aide du code ci-dessous:

 private void button1_Click(object sender, EventArgs e) { ssortingng path = "C:/Users/Valy/Desktop/3dcwrelease/3dcw.exe"; var processStartInfo = new ProcessStartInfo(); processStartInfo.FileName = path; processStartInfo.WorkingDirectory = Path.GetDirectoryName(path); Process.Start(processStartInfo); }