Comment puis-je ouvrir un.exe d'un autre C++.exe?

ce que je veux faire c'est ouvrir un .un ex d'un autre .EXE. Je ne sais vraiment pas comment faire, donc j'ai cherché sur internet. J'ai essayé des méthodes suggérées sur internet, mais ça n'a pas marché.

Voici mon code:

#include <iostream>
#include <windows.h>
using namespace std;

int main()
{
    system ("OpenFile.exe");
    system ("pause");
    return 0;
}

quand je l'exécute dans DEV C++, il ne se compile pas et je reçois une erreur. Quelqu'un peut-il m'aider?

25
demandé sur Laurel 2013-03-15 19:19:23

6 réponses

Vous devriez toujours éviter d'utiliser system() parce que

  • C'est la ressource lourd
  • il va à l'encontre de la sécurité -- vous ne savez pas que c'est une commande valide ou fait la même chose sur tous les systèmes, vous pourriez même lancer des programmes que vous n'aviez pas l'intention de lancer. Le danger est que lorsque vous directement exécuter un programme, il obtient les mêmes privilèges que votre programme, ce qui signifie que si, par exemple, vous exécutez en tant qu'administrateur système, puis le programme malveillant, vous juste par inadvertance exécutée est également en cours d'exécution en tant qu'administrateur système. Si ça ne te fait pas peur, vérifie ton pouls.
  • les programmes anti-virus détestent, votre programme pourrait être identifié comme un virus.

Vous devez utiliser CreateProcess ().

Voici un exemple J'ai utilisé dans un de mes projets:

#include <windows.h>

VOID startup(LPCTSTR lpApplicationName)
{
   // additional information
   STARTUPINFO si;     
   PROCESS_INFORMATION pi;

   // set the size of the structures
   ZeroMemory( &si, sizeof(si) );
   si.cb = sizeof(si);
   ZeroMemory( &pi, sizeof(pi) );

  // start the program up
  CreateProcess( lpApplicationName,   // the path
    argv[1],        // Command line
    NULL,           // Process handle not inheritable
    NULL,           // Thread handle not inheritable
    FALSE,          // Set handle inheritance to FALSE
    0,              // No creation flags
    NULL,           // Use parent's environment block
    NULL,           // Use parent's starting directory 
    &si,            // Pointer to STARTUPINFO structure
    &pi             // Pointer to PROCESS_INFORMATION structure (removed extra parentheses)
    );
    // Close process and thread handles. 
    CloseHandle( pi.hProcess );
    CloseHandle( pi.hThread );
}

EDIT: l'erreur que vous obtenez est parce que vous avez besoin de spécifier le chemin du .exe file pas seulement le nom. Openfile.exe n'existe pas.

55
répondu Jona 2018-01-28 13:26:02

j'ai eu beaucoup de succès avec ceci:

#include <iostream>
#include <windows.h>

int main() {
    ShellExecute(NULL, "open", "path\to\file.exe", NULL, NULL, SW_SHOWDEFAULT);
}

Si vous êtes intéressé, la documentation complète est ici:

http://msdn.microsoft.com/en-us/library/bb762153(SV.85).aspx.

13
répondu Morpheus13 2015-02-11 03:37:12

essaye ceci:

#include <windows.h>

int main ()

{
    system ("start notepad.exe") // As an example. Change [notepad] to any executable file //

    return 0 ;
}
3
répondu ILys Hdm 2015-07-16 02:58:08

Vous obtenez cette erreur parce que vous ne donnez pas le chemin complet. (C:\Users...\fichier.EXE) Si vous voulez supprimer cette erreur, alors donnez le chemin complet ou copiez cette application (vous voulez ouvrir) dans le dossier où votre projet(.exe) est présent/enregistré.

#include <windows.h>
using namespace std;
int main()
{
  system ("start C:\Users\Folder\chrome.exe https://www.stackoverflow.com"); //for opening stackoverflow through google chrome , if chorme.exe is in that folder..
  return 0;
}
0
répondu udit043 2015-02-16 16:52:10

indiquer le chemin complet du fichier " openfile.exe' et rappelez-vous de ne pas mettre de barre oblique '/' dans le chemin comme c:/users/username/etc.... au lieu de cette utilisation c:\Users\username\etc (pour windows)

Peut-être cela va vous aider

0
répondu Sanjeev prasad 2016-03-14 18:08:12

quand le chemin de l'exécutable a des espaces dans l'appel système !

#include<iostream>
using namespace std;
main()
{
    system("explorer C:\Program Files\Google\Chrome\Application\chrome.exe ");
    system("pause");
}
-1
répondu CHE98 2015-11-10 20:50:53