全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1381
推到 Plurk!
推到 Facebook!

怎样保证被调用的程序由调用者来关闭?

答題得分者是:Stallion
WoodTiger
初階會員


發表:35
回覆:90
積分:25
註冊:2003-08-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-04-06 17:12:02 IP:60.191.xxx.xxx 訂閱
strCmd:='c:/windows/notepad.exe';
strWorkDir:='.';
怎样用CreateProcess(nil, PChar(strCmd), @sa, @sa, true, 0, nil, PChar(strWorkDir),tsi, tpi);
在系统关机时,怎样来保证只有当前程序可以结束notepad?
------
-=-=-=-=-=-=-=-=-=-=-=
Eveything as your wish.
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-04-06 17:23:51 IP:211.22.xxx.xxx 未訂閱
沒辦法!
用「工作管理員」很容易就把程序結束了。
===================引 用 文 章===================
strCmd:='c:/windows/notepad.exe';
strWorkDir:='.';
怎样用CreateProcess(nil, PChar(strCmd), @sa, @sa, true, 0, nil, PChar(strWorkDir),tsi, tpi);
在系统关机时,怎样来保证只有当前程序可以结束notepad?
WoodTiger
初階會員


發表:35
回覆:90
積分:25
註冊:2003-08-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-04-06 21:14:16 IP:220.192.xxx.xxx 訂閱
我不是怕人为的去关闭它,而是怕系统关机时,先强制关闭了被调用的程序(造成系统提示出错),而调用者按正确的方式去关闭它时却发现它已经被关闭了。因为被调用的程序是第三方写的,所以它没办法得知系统关闭的消息。
真的没有办法吗?
------
-=-=-=-=-=-=-=-=-=-=-=
Eveything as your wish.
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-04-06 21:46:57 IP:211.22.xxx.xxx 未訂閱
嗯~
應該是無解,A.程式CreateProcess出來B程式,對作業系統來說都是系統中的獨立Process,雖然A程式可以知道B程式的PID,但是現在主動權不是在A,而是在作業系統,當作業系統結束時在系統中的的Process佇列是以怎樣的次序被作業系統結束的不得而知,所以你永遠不能確定B一定是在A之後被結束?反之,就可以在A的OnClose事件中處理B程式關閉的作業了。
===================引 用 文 章===================
我不是怕人为的去关闭它,而是怕系统关机时,先强制关闭了被调用的程序(造成系统提示出错),而调用者按正确的方式去关闭它时却发现它已经被关闭了。因为被调用的程序是第三方写的,所以它没办法得知系统关闭的消息。
真的没有办法吗?
WoodTiger
初階會員


發表:35
回覆:90
積分:25
註冊:2003-08-01

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-04-07 15:54:52 IP:60.191.xxx.xxx 訂閱
感谢您的热心解答,我基本理解了,就不再钻这个牛角尖了,另寻它法了,只能重新写程序去实现被调用的程序功能了,本来是想偷个懒的,呵呵
------
-=-=-=-=-=-=-=-=-=-=-=
Eveything as your wish.
系統時間:2024-03-28 18:26:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!