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?
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.
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.
essaye ceci:
#include <windows.h>
int main ()
{
system ("start notepad.exe") // As an example. Change [notepad] to any executable file //
return 0 ;
}
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;
}
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
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");
}