Comment puis-je commencer explorer.exe via C ++?
-
21-08-2019 - |
Question
Je suis en train de commencer par programme explorer.exe mais je ne suis pas avoir de chance.
Ceci est mon code:
cout << pName << "died, lets restart it." << endl;
STARTUPINFO startupInfo = {0};
startupInfo.cb = sizeof(startupInfo);
PROCESS_INFORMATION processInformation;
if(CreateProcess(pName, NULL, NULL, NULL, false, NORMAL_PRIORITY_CLASS, NULL, NULL, &startupInfo, &processInformation) == 0){
cout << "Error starting " << pName << ": " << GetLastError() << endl;
}
et pName est explorer.exe
Quelqu'un peut-il me dire ce que je fais mal? Je reçois le code d'erreur '2' qui est ERROR_FILE_NOT_FOUND
La solution
Le premier paramètre est le nom de l'application; la seconde est la ligne de commande. Essayez de spécifier "explorer.exe" comme second paramètre.
Voir cette MSDN article :
lpApplicationName [en, facultatif]
Le nom du module à exécuter. Ce module peut être basé sur Windows application. Il peut être un autre type du module (par exemple, MS-DOS ou OS / 2) si le sous-système approprié est disponible sur l'ordinateur local.
La chaîne peut spécifier le chemin complet et le nom de fichier du module pour exécuter ou il peut spécifier un nom partiel. Dans le cas d'un nom partiel, la fonction utilise le lecteur et répertoire courant pour terminer la spécification. La fonction ne sera pas utilisez le chemin de recherche . ce paramètre doit inclure l'extension de nom de fichier; pas d'extension par défaut est utilisé.
Autres conseils
Vous devriez probablement donner « ShellExecuteEx " un essai. Cette fonction vous permet de spécifier un fichier ou dossier et verbe qui décrit ce qu'il faut faire avec. Si vous utilisez "explore
" comme verbe , il ouvre l'Explorateur Windows avec le donné dossier .
Il est étonnamment difficile de trouver des informations pertinentes sur la façon de fiable fenêtres de redémarrage explorateur. Sur Windows 64 bits 7/8, la méthode ShellExecute ne fonctionne pas correctement et conduit à des choses telles que la copie de fichiers et les recouvrements d'icône étant complètement brisée.
La façon la plus fiable semble utiliser stdlib.h appel système:
system("start explorer");
Si vous essayez d'arrêter et explorateur de redémarrage, vous pouvez désactiver par programme clé de Registre AutoRestartShell, qui vous empêche de contrôler lorsque explorateur est redémarrée.