• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 89  文章 - 118  trackbacks - 0
            <2007年12月>
            2526272829301
            2345678
            9101112131415
            16171819202122
            23242526272829
            303112345

            留言簿(16)

            隨筆分類(56)

            隨筆檔案(89)

            文章分類

            推薦博客

            搜索

            •  

            最新隨筆

            最新評論

            閱讀排行榜


            假設需要執行的程序如下:


            int main(int argc, char* argv[])
            {
                
            return argc;
            }


            執行它,并取得其返回值,我寫了一個函數如下:

            DWORD         WinExecAndWait32(    LPCTSTR lpszAppPath,   // 執行程序的路徑
                                            LPCTSTR lpParameters,  // 參數
                                            LPCTSTR lpszDirectory, // 執行環境目錄
                                            DWORD dwMilliseconds)  // 最大等待時間, 超過這個時間強行終止
            {
                SHELLEXECUTEINFO ShExecInfo 
            = {0};
                ShExecInfo.cbSize    
            = sizeof(SHELLEXECUTEINFO);
                ShExecInfo.fMask    
            = SEE_MASK_NOCLOSEPROCESS;
                ShExecInfo.hwnd        
            = NULL;
                ShExecInfo.lpVerb    
            = NULL;
                ShExecInfo.lpFile    
            = lpszAppPath;        
                ShExecInfo.lpParameters 
            = lpParameters;    
                ShExecInfo.lpDirectory    
            = lpszDirectory;
                ShExecInfo.nShow    
            = SW_HIDE;
                ShExecInfo.hInstApp 
            = NULL;    
                ShellExecuteEx(
            &ShExecInfo);

                
            // 指定時間沒結束
                if (WaitForSingleObject(ShExecInfo.hProcess, dwMilliseconds) == WAIT_TIMEOUT)
                {    
            // 強行殺死進程
                    TerminateProcess(ShExecInfo.hProcess, 0);
                    
            return 0;    //強行終止
                }

                DWORD dwExitCode;
                BOOL bOK 
            = GetExitCodeProcess(ShExecInfo.hProcess, &dwExitCode);
                ASSERT(bOK);

                
            return dwExitCode;
            }

            我上傳了兩個工程,希望對大家有所幫助!

            http://www.shnenglu.com/Files/humanchao/ExecExe.rar

            posted on 2007-12-28 11:20 胡滿超 閱讀(5976) 評論(4)  編輯 收藏 引用

            FeedBack:
            # re: VC中怎么執行一個應用程序,并取得應用程序的返回值 2007-12-28 13:31 FongLuo
            很有參考價值哦。  回復  更多評論
              
            # re: VC中怎么執行一個應用程序,并取得應用程序的返回值 2007-12-28 13:44 胡滿超
            @FongLuo
            謝謝支持!  回復  更多評論
              
            # re: VC中怎么執行一個應用程序,并取得應用程序的返回值 2007-12-29 11:41 teli
            如果被調用程序掛掉了怎么辦  回復  更多評論
              
            # re: VC中怎么執行一個應用程序,并取得應用程序的返回值 2007-12-29 14:13 胡滿超
            我沒有想到怎樣去檢查掛掉的程序,在實際應用中我是采用估算一個最大執行時間,如果超過此時間,即強行終止程序。

            因為要取得子進程執行結束的返回值,所以要用上面的方法。如果不要求取得返回值,把:

            ShellExecuteEx(&ShExecInfo);

            以下的代碼去掉就是了,主進程依然可以繼續下向執行。

            如果不考慮子進程的執行時間,即要求主進程一直等待子進程結束,那就把:

            WaitForSingleObject(ShExecInfo.hProcess, dwMilliseconds);

            改成

            WaitForSingleObject(ShExecInfo.hProcess,INFINITE);

            不過這樣做子進程一旦掛了,主進程也就一直停在那里了。  回復  更多評論
              
            国产A级毛片久久久精品毛片| 国产日韩久久久精品影院首页| 亚洲国产一成久久精品国产成人综合 | 久久久久久久国产免费看| 精品久久久久久国产91| 久久无码人妻精品一区二区三区| 亚洲人成无码www久久久| 色欲综合久久中文字幕网| 久久综合久久综合九色| 亚洲国产视频久久| 国产精品久久久天天影视| 伊人久久大香线蕉综合5g| 国产成人精品免费久久久久| 久久天天躁狠狠躁夜夜不卡| 久久婷婷激情综合色综合俺也去| 色婷婷狠狠久久综合五月| 久久婷婷五月综合色奶水99啪| 欧美激情精品久久久久久久九九九| 亚洲va久久久噜噜噜久久| 久久久久国产视频电影| 欧美精品久久久久久久自慰| 欧洲性大片xxxxx久久久| 国产精品久久久久天天影视| 人妻精品久久无码区| 少妇无套内谢久久久久| 久久综合给合综合久久| 久久综合狠狠色综合伊人| 久久久久免费看成人影片| 一级a性色生活片久久无| 亚洲午夜无码AV毛片久久| 国产一区二区三精品久久久无广告| 久久精品国产亚洲AV麻豆网站 | 久久久久国产成人精品亚洲午夜| 久久精品99久久香蕉国产色戒| 久久久国产精华液| 亚洲精品tv久久久久久久久久| 亚洲国产高清精品线久久 | 久久99精品国产麻豆宅宅| 国产精品99久久不卡| 久久久久18| 午夜精品久久久内射近拍高清|