Προς το περιεχόμενο

C++: Πώς τρέχω exe;


Blue_Guardian

Προτεινόμενες αναρτήσεις

Δημοσ.

Αυτό που θέλω να κάνω είναι να τρέχω εκτελέσιμο πρόγραμμα μέσα από τον κώδικα. Π.χ. Αν (κάτι==true) τότε τρέξε "c:\program.exe"

Έχω δοκιμάσει την συνάρτηση execl από το process.h και την system από το stdlib.h αλλά άκρη δεν βγάζω. Έχει κανείς καμια λύση; (Υπ' όψη ότι το εκτελέσιμο είναι σε γραφικό περιβάλλον)

Δημοσ.

Thanks Praetorian!

Από μια σύντομη ματιά στη βοήθεια μαλλόν που θα έχω δουλειά όλο το πρωί άυριο. Δέ βαριέσαι. Οι δύο προηγούμενες πάντως δεν με καλύπτουν. (Η μια μάλιστα υποτίθεται ότι είναι μόνο για console applications).

Δημοσ.

Η system δεν τρέχει όμως προγράμματα σε γραφικό περιβάλλον. Για την ακρίβεια ανοίγει και τερματίζει ένα command prompt χωρίς όμως να τρέχει την εφαρμογή που θέλω. Όσο για την CreateProcess έχει τόσες παραμέτρους που δεν έχω ιδέα πως να ορίσω και κυριώς να αρχικοποιήσω που γίνεται Ο χαμός. Αν έχει κανείς ένα παράδειγμα κλήσης της ή μπορεί να μου πει πέντε πράγματα πιο σαφή από τη βοήθειά της...

  • Moderators
Δημοσ.

Gia na doume an kati tetoio 8a doulepsei ...

 

>
string sPathToExecFolder = "C:\\path_to_exec\\";
            // ta pros8eta quotes gyrw apo to path nomizw oti einai aparaithta
            // ka8ws yparxoun paths me kena...px "Program Files"
string ConvertCommand = "\"" + sPathToExecFolder + "HTMLRemover.exe " + "\"" + TmpFileNameArg01+ " " +  TmpFileNameArg02;

STARTUPINFO         siStartupInfo;
PROCESS_INFORMATION piProcessInfo;

// arxikopoihseis
memset(&siStartupInfo, 0, sizeof(siStartupInfo));
memset(&piProcessInfo, 0, sizeof(piProcessInfo));

siStartupInfo.cb = sizeof(siStartupInfo);
            // ektelesh entolhs
if(CreateProcess(NULL,
					LPSTR(ConvertCommand.c_str()),
                    0,
					0,
					FALSE,
					CREATE_DEFAULT_ERROR_MODE,
					0,
					0,
					&siStartupInfo,
					&piProcessInfo) == FALSE)
{
        // kapoio error mynhma
		;
}
else
{
	// Anamonh mexri na kanei exit h nea process
	WaitForSingleObject( piProcessInfo.hProcess, INFINITE );
	// Kleisimo twn handles... 
	CloseHandle( piProcessInfo.hProcess );
	CloseHandle( piProcessInfo.hThread );

	// ....
	// ....

}

 

edit: Εβγαλα μια γραμμή που δεν έκανε τίποτα. Ο κώδικας είναι παρμένος (και ελαφρά τροποποιημένος) απο ένα παλιό project που είχα κάνει σε Visual C++ με ένα συνάδελφο.

Δημοσ.

Wow! Ευχαριστώ Preatorian. Είναι κάπως περίπλοκο. Πρέπει να την δω με ηρεμία (όχι απόψε). Εν τω μεταξύ βρήκα τρόπο να κάνω τη δουλειά μου με την execl μόνο που όταν ανοίγει η εφαρμογή κλείνει αρχική (αυτή που την κάλεσε). Είδομεν...

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...