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

Était-ce utile?

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.

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