J'ai créé une nouvelle application de console Win32 . Il a ce point d'entrée principal:Explorateur transmettant le nom de chemin d'accès exécutable complet dans ses arguments de ligne de commande
int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow)
J'analyse des paramètres dans lpCmdLine
:
LPWSTR *szArglist;
int nArgs;
szArglist = CommandLineToArgvW(lpCmdLine, &nArgs);
if (nArgs >= 1 && wcslen(szArglist[0]) > 0)
productName = szArglist[0];
if (nArgs >= 2 && wcslen(szArglist[1]) > 0 && PathFileExists(szArglist[1]))
installPath = szArglist[1];
Je veux analyser le premier paramètre comme productName
et le second paramètre comme installPath
. Toutefois, si je lance ce programme à partir de explorer
, il définit le premier paramètre comme chemin d'accès complet à l'exécutable.
Est-il possible de gérer ce comportement? Dans quelles situations Windows transmet-il des arguments à mon application? Comment puis-je ignorer ces derniers, et que ma demande accepte les arguments de ligne de commande comme suit:
application.exe "Product Name" "C:\Program Files\Product Name"
Le 1er paramètre est juste ce qui a été utilisé lors de la création du processus. Si vous tapez "calc.exe" dans la console, le 1er paramètre du processus calc sera juste cela. – zett42
Obligatoire [lien OldNewThing] (https://blogs.msdn.microsoft.com/oldnewthing/20060515-07/?p=31203/). Et [ceci] (https://blogs.msdn.microsoft.com/oldnewthing/20100916-00/?p=12843). – zett42