2013-10-28 82 views
1

我想通過mfc調用一個進程,但我需要新的exe必須假裝像一個子對話框。因此,如果新的exe不會關閉,用戶不應該到達主進程(對話框)是否有可能?如何創建一個子exe文件,用mfc進行處理?

+0

如果我明白你的意思,你可以簡單地產生新的進程,並關閉當前(父)進程 – Leon

+0

沒有用戶之後完成了她的工作,在新的EXE,她可以打開第一個mfc exe文件。 – siyah

+0

所以你想讓新的進程對話框模式,並採取所有的屏幕? – Leon

回答

2

是的。當你打開新的進程時,你必須等待用戶關閉子進程,然後你必須使用WaitForSingleObject(pi.hProcess,INFINITE);

下面的代碼...

if(!CreateProcess(NULL, // No module name (use command line). 
    exePath,  // Command line. 
    NULL,// Process handle not inheritable. 
    NULL,     // Thread handle not inheritable. 
    FALSE,    // Set handle inheritance to FALSE. 
    NORMAL_PRIORITY_CLASS,// 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. 
    ) 
{ 
    cout << "Unable to create\n";} 
    // Close process and thread handles. 
    CloseHandle(pi.hProcess); 
    CloseHandle(pi.hThread); 

    return false; 

} 

    WaitForSingleObject(pi.hProcess, INFINITE);// wait user till close exe(after close child process then go parent process) 
return true; 

// Close process and thread handles. 
CloseHandle(pi.hProcess); 
CloseHandle(pi.hThread); 
+1

非常感謝你。 – siyah

0

可以使用OLE-Automation/COM輕鬆完成。用一個進程外服務器,你有一個procdeual接口和第二個進程...

+0

是否可以在vs2003的mfc應用程序中使用? – siyah

+0

是的。這是可能的每個VS版本... – xMRi

相關問題