CreateProcess開啟WORD檔的問題.. |
尚未結案
|
syc0121
一般會員 發表:6 回覆:12 積分:3 註冊:2003-01-15 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 請教各位前輩大德們: 小弟使用CreateProcess呼叫一份Word文件檔(例:winword.exe /e c:\123.doc) Word文件檔被載入之前,會先執行Winword.exe Winword.exe啟動時會出現版權宣告畫面後才載入文件... 請問要如何得知WinWord.exe已啟動成功... 用 WaitforSingleObject 嗎? 或是有其它 API 可以使用? 謝謝 >>< face="Verdana, Arial, Helvetica"> syc0121 你好: CreateProcess 本身不是有一個傳回值嗎?true 為成功,false 為失敗 建議你自己查詢 M$DN 中的相關說明 src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=10003806&CC=223734"> -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
syc0121
一般會員 發表:6 回覆:12 積分:3 註冊:2003-01-15 發送簡訊給我 |
引言: syc0121 你好: CreateProcess 本身不是有一個傳回值嗎?true 為成功,false 為失敗 建議你自己查詢 M$DN 中的相關說明 src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=10003806&CC=223734"> -- Enjoy Researching & Developing --版主大人您好: 小弟描述得不清楚...造成您的誤解... CreateProcess的確是會傳回一個Boolen 不過當WinWord啟動時,會出現M$的版權宣告畫面.. 是不是有什麼API或方法可以得知WinWord的版權宣告畫面結束呢? 謝謝~ |
Sei
一般會員 發表:22 回覆:38 積分:17 註冊:2002-05-22 發送簡訊給我 |
不知道這麼回答有沒有離題
在http://delphi.ktop.com.tw/topic.php?TOPIC_ID=26986
hagar大大有幫我解答一篇「啟動Word後要如何得知某個檔案目前是開啟而拒絕開啟?」
我的想法是:既然Word文件存在,WinWord.exe也就啟動
不知道這麼判斷法符不符合??
|
syc0121
一般會員 發表:6 回覆:12 積分:3 註冊:2003-01-15 發送簡訊給我 |
引言: 不知道這麼回答有沒有離題 在http://delphi.ktop.com.tw/topic.php?TOPIC_ID=26986 hagar大大有幫我解答一篇「啟動Word後要如何得知某個檔案目前是開啟而拒絕開啟?」 我的想法是:既然Word文件存在,WinWord.exe也就啟動 不知道這麼判斷法符不符合??謝謝指教! 26986這篇小弟已拜讀過了... 是利用偵測檔案是否被鎖定的方式來判斷word是否啟動~ 可以解決我目前遇到的問題~ 小弟的需求是 當開啟"每份文件檔(TXT,DOC..etc)"後, DETECT 該文件檔是否被修改、是否被關閉 先前的做法是 使用 CreateProcess 開啟一份Word文件 利用 WaitForSingleObject 來判斷Word是否結束 遇到的問題如下述二點~~ 1)當Word第一次啟動時會出現宣告畫面,畫面結束後才載入Word文件 而WaitForSingleObject(hProcess,INFINITE)會等到所有的WORD文件都關閉 也就是WinWord.exe被結束 2)不過當Word主程式已被啟動,再用CreateProcess開啟Word文件檔 就不會再出現版權畫面,直接載入Word文件檔 而WaitForSingleObject(hProcess,INFINITE)時都不會再等待 針對上述二點,所以小弟再搭配hager兄提供的 IsFileInUse 這個 Function 來Detect檔案是否還在使用中來判斷檔案被關閉,進而達到小弟的需求 若是沒有出現 M$ 版權宣告畫面 CreateProcess傳回True之後, 小弟先用 IsFileInUse 來判斷 Word 文件檔是否被開啟 若已被開啟,就用while do IsFileInUse來等待WORD文件被關閉 若未被開啟,就用WaitForSingleObject(hProcess,INFINITE)來等待 但是若出現M$版權畫面出現時 CreateProcess已經傳回True 但IsFileInUse卻也是傳回False, 直到版權宣告畫面結束才會傳回True //開啟DOC if CreateProcess(...) then begin //第二次以後執行WINWORD.EXE: 檔案使用中,就偵測檔案何時被FREE if IsFileInUse(...) then begin while IsFileInUse(...) do begin //檔案使用中 end end //第一次執行WINWORD.EXE: WinWord執行中,就偵測WinWord何時被結束 else begin RLT:=WAIT_TIMEOUT; while RLT=WAIT_TIMEOUT do begin RLT:=WaitforSingleObject(hProcess,0); //WinWord執行中 end; end; end; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |