<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 312, 文章 - 14, 評論 - 1393, 引用 - 0
    數據加載中……

    判斷ShellExecute函數是否執行完一個程序的方法

    本文為原創,如需轉載,請注明作者和出處,謝謝!

        ShellExecute是windows的API函數,功能是執行可執行文件(exe)或任何關聯文件(doc、txt、xls等)。但ShellExecute是異步執行的,也就是說,不管執行的程序是否成功運行,運行的時間是長是短,ShellExecute函數都會立即返回。這樣雖然可以很好地完成執行程序的工作,但卻會給后續的工作帶來麻煩。
        例如,當調用bcp命令向sql server導入數據后,在DBGrid中顯示這些導入的數據。如果使用ShellExecute來直接執行bcp命令,很可能會在數據未完全導入時顯示DBGrid。這樣就會造成數據顯示不完整或根本顯示不出來數據。
        要解決這個問題的方法就是使ShellExecute變成同步直接的,解決方法很多,例如,可以判斷彈出的控制臺窗口是否已關閉來確定bcp是否執行完。但這樣做還會有一些問題,例如,如果執行根本沒有彈出窗口的程序,那這種方法就不起作用了。而本書給出了另一種比較通用的方法。基本原理是利用了批處理文件的特性。雖然ShellExecute是異步執行的,但批處理是同步執行的,也就是在.bat、.cmd、.sh(linux/unix)中的命令是一個接一個順序執行的。因此,我們可以采用在批處理文件中調用bcp命令的方法來實現同步調用。也就是說,可以在調用bcp之前,先中當前目錄中建立一個文件或空目錄,然后調用bcp,最后再刪除這個文件或目錄。這樣可以通過判斷文件或目錄是否存在來確定bcp是否執行完成。為了確保在調用ShellExecute之前文件一定存在,可以在調用ShellExecute之前在程序中建立一個文件,在批處理中刪除這個文件。下面是一個批處理文件的例子。

    批處理文件名:bcp.cmd
    set path = <bcp.exe的本地路徑>/bcp.exe
    bcp 
    %1 in %2 %3 %4 其他命令行參數
    del temp.txt

    假設我們使用delphi來通過ShellExecute函數來運行bcp命令,代碼如下:

    FileCreate("temp.txt");
    ShellExecute(,
    "bcp.cmd",,);
    while true do
    begin
       
    if temp.txt不存在 then
       begin 
          
    //  bcp已成功執行
           break;
       end;
    end;
    //  后續的處理代碼





    Android開發完全講義(第2版)(本書版權已輸出到臺灣)

    http://product.dangdang.com/product.aspx?product_id=22741502



    Android高薪之路:Android程序員面試寶典 http://book.360buy.com/10970314.html


    新浪微博:http://t.sina.com.cn/androidguy   昵稱:李寧_Lining

    posted on 2010-03-27 15:14 銀河使者 閱讀(2800) 評論(2)  編輯  收藏 所屬分類: delphi 原創

    評論

    # re: 判斷ShellExecute函數是否執行完一個程序的方法  回復  更多評論   

    謝謝,學習一下先
    2010-03-27 22:11 | 不銹鋼水箱

    # re: 判斷ShellExecute函數是否執行完一個程序的方法[未登錄]  回復  更多評論   

    perfect

    我轉載了,并說明出處。
    2010-07-13 13:26 | bird
    主站蜘蛛池模板: 精品国产免费观看一区| 国产在线观看片a免费观看| 日批日出水久久亚洲精品tv| 亚洲乱码日产精品一二三| 免费可以看黄的视频s色| 亚洲av午夜精品无码专区| 在线观看AV片永久免费| 亚洲1234区乱码| 日韩不卡免费视频| 亚洲成a人无码亚洲成www牛牛| 精品国产免费观看久久久 | AV片在线观看免费| 亚洲欧美日韩综合久久久| 免费精品一区二区三区在线观看| 亚洲一卡一卡二新区无人区| 亚洲va无码va在线va天堂| 免费91最新地址永久入口| 亚洲精品在线播放| 日本最新免费不卡二区在线| 亚洲a∨无码精品色午夜| 亚洲综合色在线观看亚洲| 一个人免费视频观看在线www| 亚洲综合色一区二区三区小说| 国产高清免费视频| 午夜亚洲乱码伦小说区69堂| 亚洲人精品午夜射精日韩| h视频在线观看免费网站| 婷婷亚洲综合一区二区| 国产成人无码综合亚洲日韩| 免费影院未满十八勿进网站| 美女被羞羞网站免费下载| 国产亚洲成av人片在线观看| 国产成人无码免费看视频软件 | 亚洲精品成人无限看| 亚洲电影免费观看| 免费福利在线观看| 蜜芽亚洲av无码精品色午夜| 日本一道在线日本一道高清不卡免费 | 羞羞视频在线观看免费| 亚洲AV美女一区二区三区| 日韩激情无码免费毛片|