2011-06-16 3 views
0

Quelqu'un peut-il donner s'il vous plaît un exemple comment utiliser l'événement OnExited en C++, voir le lien msdn auquel je fais référence. http://msdn.microsoft.com/en-us/library/system.diagnostics.process.onexited.aspx. Je suis vraiment confus avec ce C++/CLI. J'essaie de supprimer un fichier après la fin du processus. Je l'ai fait travailler en C# mais je préfère le C++ donc ça peut être plus facile d'être enveloppé pour JNI.Comment utiliser .net System.Diagnostics :: Process OnExited C++?

+0

Vous allez charger le JVM et le CLR dans le même processus? Effrayant ... – ildjarn

Répondre

0

Je ne suis pas vraiment sûr de ce que vous voulez, alors voici une traduction littérale du code sur la page que vous avez lié à de C# à C++/CLI:

using namespace System; 
using namespace System::Diagnostics; 

ref class MyProcess : public Process 
{ 
public: 
    void Stop() 
    { 
     this->CloseMainWindow(); 
     this->Close(); 
     OnExited(); 
    } 
}; 

void myProcess_HasExited(Object^ sender, EventArgs^ e) 
{ 
    Console::WriteLine(L"Process has exited."); 
} 

int main(array<String^>^ args) 
{ 
    MyProcess^ p = gcnew MyProcess(); 
    p->StartInfo->FileName = L"notepad.exe"; 
    p->EnableRaisingEvents = true; 
    p->Exited += gcnew EventHandler(myProcess_HasExited); 
    p->Start(); 
    p->WaitForInputIdle(); 
    p->Stop(); 
} 
+0

C'est exactement ce que je veux, mais je ne peux pas le faire complier. Erreurs de devinettes. 1> test2.cpp 1> test2.cpp (20): erreur C2628: 'MyProcess' suivi de 'void' est illégal (avez-vous oublié un ';'?) 1> test2.cpp (30): erreur C3352 : 'myProcess_HasExited': la fonction spécifiée ne correspond pas au type de délégué 'void (System :: Object ^, System :: EventArgs ^)' ========== Build: 0 réussi, 1 échoué, 0 à jour, 0 sauté ========== – chocoloko

+0

Je l'ai réparé. Fonctionne très bien, merci pour votre aide. – chocoloko

Questions connexes