Bonjour,

J'aimerais bien pouvoir lancer d'après mon code C, un autre programme dont le chemin serait contenu dans un char.
J'ai cherché de nombreuse heures après des solutions, mais je n'en ai pas trouvé qui fonctionnait vraiment :/

Je me suis focalisé sur une aide de la FAQ -> Lien

Mais je ne comprends pas grand-chose (ça ne fait pas longtemps que je code en C) et j'aimerais bien quelques petites explications :

J'ai au début trouvé une variante de ShellExecute() proposé dans la FAQ qui me disait comme exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
ShellExecute(NULL, NULL, L"C:\\WINDOWS\\system32\\notepad.exe", L"NOTEPAD", NULL, SW_SHOWNORMAL);
Ok, mais pourquoi L"" ? Le code fonctionne mais bon, le L m'empêche de lui coller une variable ! L&fullPath ne fonctionnerai pas...

Je suis ensuite tombé sur l'astuce du #define _T(x) L ## x

Je suppose que le double # dans le préprocesseur fait coller le L à la variable x, en effet quand je remplace les L"" par _T("...") ça fonctionne, mais même soucis, si je fais _T(&fullPath), marche pas !

Je suis passé à ShellExecuteEx, la j'ai un autre soucis. D'après le code que j'ai recopié :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
	SHELLEXECUTEINFO EI;
	memset(&EI,0,sizeof(EI));
 
	EI.cbSize = sizeof(EI);
	EI.fMask = 0;
	EI.hwnd = 0;
	EI.lpVerb = "open";
	EI.lpFile = "C:\\windows\\notepad.exe";
	EI.lpParameters = "C:\\test.txt";
	EI.lpDirectory = 0;
	EI.nShow = SW_SHOW;
	EI.hInstApp = 0;
 
	ShellExecuteEx(&EI);
Je reçois un charmant message :


Après, découragé j'ai simplement copié/collé le code du CreateProcess() qui retourne tout simplement :
0xC0000005: Violation d'accès lors de l'écriture à l'emplacement 0x00145764

Est-ce qu'il y a donc moyen de lancer simplement un fichier ? (exécutable ou non) Pas besoin de pause du côté de mon programme ou autre, simplement le lancer.

Merci.