webentwicklung-frage-antwort-db.com.de

Wie öffne ich eine .exe von einer anderen C++ .exe?

Ich möchte eine .exe von einer anderen .exe öffnen. Ich weiß wirklich nicht, wie ich das machen soll, also durchsuchte ich das Internet. Ich habe einige vorgeschlagene Methoden aus dem Internet ausprobiert, aber es hat nicht funktioniert.

Hier ist mein Code:

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

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

Wenn ich es in DEV C++ starte, wird es nicht kompiliert und ich erhalte eine Fehlermeldung. Kann mir bitte jemand helfen?

28
S.Y

Sie sollten system() immer deshalb vermeiden, weil

  • Es ist ressourcenlastig 
  • Es besiegt die Sicherheit - Sie wissen nicht, dass Sie ein gültiger Befehl sind oder auf jedem System dasselbe tun, Sie könnten sogar Programme starten, die Sie nicht vorhaben wollten .Die Gefahr besteht darin, wann Wenn Sie ein Programm direkt ausführen, erhält es die gleichen Berechtigungen wie Ihr Programm, dh wenn Sie beispielsweise als Systemadministrator ausgeführt werden, wird das Schadprogramm, das Sie gerade versehentlich ausgeführt haben, auch als Systemadministrator ausgeführt du dummes, überprüfe deinen Puls.
  • Antivirenprogramme hassen es, Ihr Programm könnte als Virus gekennzeichnet werden.

Sie sollten CreateProcess () verwenden.

Sie können Createprocess () verwenden, um eine .exe-Datei zu starten und einen neuen Prozess für sie zu erstellen .. Die Anwendung wird unabhängig von der aufrufenden Anwendung ausgeführt.

Hier ist ein Beispiel, das ich in einem meiner Projekte verwendet habe:

#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 );
}

BEARBEITEN: Der Fehler, den Sie erhalten, ist, dass Sie den Pfad der EXE-Datei angeben müssen, nicht nur den Namen. Openfile.exe existiert wahrscheinlich nicht.

63
Jona

Ich habe großen Erfolg damit gehabt:

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

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

Wenn Sie interessiert sind, finden Sie die vollständige Dokumentation hier: 

http://msdn.Microsoft.com/de-de/library/bb762153(VS.85).aspx .

14
Morpheus13

Versuche dies:

#include <windows.h>

int main ()

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

    return 0 ;
}
3
ILys Hdm

Sie erhalten diese Fehlermeldung, weil Sie nicht den vollständigen Pfad angeben. (C:\Users ...\file.exe) Wenn Sie diesen Fehler beheben möchten, geben Sie entweder den vollständigen Pfad an oder kopieren Sie die Anwendung (die Sie öffnen möchten) in den Ordner, in dem sich Ihr Projekt (.exe) befindet /Gerettet.

#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
udit043

wenn der ausführbare Pfad Leerzeichen im Systemaufruf enthält!

#include<iostream>
using namespace std;
main()
{
    system("Explorer C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe ");
    system("pause");
}
0
CHE98

Geben Sie den vollständigen Pfad der Datei 'openfile.exe' An und denken Sie daran, den Schrägstrich '/' im Pfad nicht anzugeben, z Verwenden Sie c:\Users\Benutzername\etc (für Windows)

Vielleicht hilft dir das

0
Sanjeev prasad