delphi撰寫的程式打開word檔案,如“c:\aaa.doc”(獨立啟動word界面,不是嵌入到我的程式里),當手動關閉word檔案時,因為我要對aaa.doc檔案進行后續處理,那么我的程式怎么能檢測到或者是截獲windows訊息來判斷這個檔案已經完全關閉(不用timer)。
小弟只有160分,給滿分了,請高手不吝賜教啊!!!
uj5u.com熱心網友回復:
你的后續操作是指什么?你如果需要獨占操作的話, 加個例外陳述句應該可以達到目的
try
//你的處理
except
//不能執行處理
end;
uj5u.com熱心網友回復:
后續是保存word檔案,這樣不行,你說我把例外陳述句加程式哪個地方uj5u.com熱心網友回復:
后續是保存word檔案到我的資料庫里uj5u.com熱心網友回復:
其實我的目的就是想給二樓朋友說的例外處理陳述句找個地方寫uj5u.com熱心網友回復:
呼叫IsFileInUse,回傳False表示檔案沒有被打開。
function IsFileInUse(fName : string) : Boolean;
var
HFileRes: HFILE;
begin
//http://blog.sina.com.cn/s/blog_4960dbcb0100gofb.html
Result := false; //回傳值為假(即檔案不被使用)
if not FileExists(fName) then exit; //如果檔案不存在則退出
HFileRes := CreateFile(Pchar(fName), GENERIC_READ or GENERIC_WRITE,
0 {this is the trick!}, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
Result := (HFileRes = INVALID_HANDLE_VALUE); //如果CreateFile回傳失敗那么Result為真(即檔案正在被使用)
if not Result then //如果CreateFile函式回傳是成功
CloseHandle(HFileRes); //那么關閉句柄
end;
uj5u.com熱心網友回復:
不知道有什么訊息能夠監控到我能想到的也只能是Timer或者執行緒了
uj5u.com熱心網友回復:
幫頂下,想不出來如何判斷word關閉uj5u.com熱心網友回復:
5樓朋友的想法很好,值得參考,但是在程式哪里呼叫IsFileInUse函式呢,如果不用timeruj5u.com熱心網友回復:
你可以用WaitForSingleObject和WaitForMultipleObjects這鏈兩個函式實作。
參考下下面這篇文章中的“2 、等待已經存在的行程”
http://share-sy.blogbus.com/logs/96942232.html
uj5u.com熱心網友回復:
太復雜了,小弟剛剛入門呢水平有限,哪位大哥能不能幫我把程式寫出來
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/140964.html
標籤:VCL組件開發及應用
上一篇:關于cpu卡讀寫的操作
下一篇:資料保留小數
