2011-06-16 27 views
0

任何人都可以请举例如何在C++中使用OnExited事件,请参阅msdn中的链接表单msdn。 http://msdn.microsoft.com/en-us/library/system.diagnostics.process.onexited.aspx。我很困惑这个C++/CLI。我试图在退出进程后删除文件。我用C#工作,但更喜欢C++,因此可以更容易地被JNI包装。如何使用.net System.Diagnostics :: Process OnExited C++?

+0

你要加载JVM和CLR进入相同的过程?可怕... – ildjarn 2011-06-16 04:07:12

回答

0

我不是真的确定你想要什么,所以这里是你从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

这正是我想要的,但我不能得到它complile。出错。 1> test2.cpp 1> test2.cpp(20):error C2628:'MyProcess'后跟'void'是非法的(你忘了';'?) 1> test2.cpp(30):error C3352 :'myProcess_HasExited':指定的函数不匹配委托类型'void(System :: Object ^,System :: EventArgs ^)' ========== Build:0成功,1失败,0最新,0跳过========== – chocoloko 2011-06-16 05:24:16

+0

我修好了。非常好,感谢您的帮助。 – chocoloko 2011-06-16 05:31:56