Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

關於CreateProcess()的用法

314 views
Skip to first unread message

Vannes

unread,
May 3, 2007, 2:39:00 AM5/3/07
to
小弟使用CreateProcess()去開啟一個InstallShield 安裝程式, 該安裝程式在硬碟中只有一個process; 但在光碟中,
程式本身會將自己copy到硬碟中並開啟一個新的process執行. 小弟的成是需要等待整個安裝完成後在進行下一步, 然而這情況卻無法等下去了??
請問有甚麼解決的方法嗎? 小弟曾經試過將 bInheritHandles設為true, 但似乎還是不行...以下附上程式碼請各位高手解答, 謝謝!

//CreateProcess fuction variables
STARTUPINFO si;
PROCESS_INFORMATION pi;
DWORD dwExit;
TCHAR szdrvInstX64[MAX_PATH];

ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
wsprintf(szdrvInstX64, "%s%s", szCurModPath, ITEM2SETUPPATH);
if( !CreateProcess( NULL, szdrvInstX64, NULL, NULL, FALSE, 0, NULL, NULL,
&si, &pi) )
{
::AfxMessageBox("CreateProcess() failed!");
return;
}
//Set itself to bottom.
::ShowWindow(hWndMain, SW_MINIMIZE);

WaitForSingleObject( pi.hProcess, INFINITE ); // Wait until child process
exits.
GetExitCodeProcess(pi.hProcess, &dwExit);

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

::ShowWindow(hWndMain, SW_RESTORE);

璉璉

unread,
May 6, 2007, 8:49:01 PM5/6/07
to
建議你把 ProcessId 輸出,比較當時在工作管理員內的程序,我在想,不知道會不會是 InstallShield 會呼叫另一個安裝程式?
比如說 setup.exe 呼叫 setup1.exe 後,自己就關閉,而你等的是 setup.exe ,就認為結束了。

==> 本文由 "Vannes <Van...@discussions.microsoft.com>"
> 於 news:72D3C3A1-E0E5-4FC2-B363-F33CFD80D9A4%40microsoft.com 發表

--
風禹科技驗證有限公司 ASP.NET Web News Reader 0.2.6 UTF-8 Beta
網站地圖 http://tlcheng.twbbs.org/wwwmap.htm
流域防洪/區域水資源/徐昇網/玫瑰圖/語音通訊 文章與程式
Basic/Fortran/Windows API/.Net/輔助說明檔 原始碼、文章與討論
微軟程式設計、系統管理使用新技術論壇討論區,網友回覆後即時簡訊、電子郵件通知:
MSDN: http://forums.microsoft.com/msdn-cht/default.aspx?siteid=14
TechNet: http://forums.microsoft.com/technet-cht/default.aspx?siteid=23
--
ASPNET News Reader http://tlcheng.twbbs.org/News/Reader.aspx
RSS 2.0 http://tlcheng.twbbs.org/News/rss2.aspx?Action=List&Newsgroup=microsoft.public.tw.vsnet

Vannes

unread,
May 7, 2007, 1:18:00 AM5/7/07
to
謝謝璉璉.
的確是這個樣子的, 一開始他會自行結束並產生另一個process. 所以我的監控會失敗 :(
在InstallShield官方網站提到, 這個情況可以用"指定"processID 解決, 但我只能指定我所產生的process,
我如何得知下一個ProcessID病去監控它呢?

"璉璉" 來函:

璉璉

unread,
May 7, 2007, 9:32:07 PM5/7/07
to
如果官方網站有提到,應該會有官方解決方案可參考,比如說使用命令列來處理,控制別的軟體產生指定的 PID 我覺得不太可能。
所以應該是透過參數傳遞,一般比較簡單的方式是用命令列。

==> 本文由 "Vannes <Van...@discussions.microsoft.com>"
> 於 news:789A93A7-CB1F-47BB-884E-01A6E9883EA2%40microsoft.com 發表

0 new messages