Question

Le Compact Framework ne prend pas en charge Assembly.GetEntryAssembly pour déterminer le fichier .exe de lancement.Existe-t-il donc un autre moyen d'obtenir le nom du fichier .exe en cours d'exécution ?

MODIFIER:J'ai trouvé la réponse sur le blog de Peter Foot : http://peterfoot.net/default.aspxVoici le code :

byte[] buffer = new byte[MAX_PATH * 2];

int chars = GetModuleFileName(IntPtr.Zero, buffer, MAX_PATH);

if (chars > 0)

{

string assemblyPath = System.Text.Encoding.Unicode.GetString(buffer, 0, chars * 2);

}

[DllImport("coredll.dll", SetLastError = true)]

private static extern int GetModuleFileName(IntPtr hModule, byte[] lpFilename, int nSize);
Était-ce utile?

La solution

Je ne sais pas si cela fonctionne à partir du code managé (ou même du framework compact), mais dans Win32, vous pouvez appeler GetModuleFileName pour rechercher le fichier exe en cours d'exécution.

MSDN :GetModuleFileName

Autres conseils

string exefile = Assembly.GetExecutingAssembly().GetName().CodeBase;

Mais si vous le placez dans un assembly DLL, je pense qu’il vous donnera le nom du fichier assembly.

Le même appel sur le framework « Full » renverrait le fichier .exe avec un préfixe « file:\ ».

En code managé, je pense que vous pouvez utiliser ceci :http://msdn.microsoft.com/en-us/library/system.windows.forms.application.executablepath.aspx

Application.ExecutablePath

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top