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

如何讓B程式關閉A程式

答題得分者是:qoo1234
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-13 03:23:15 IP:61.71.xxx.xxx 未訂閱
請問各位! 我有兩支Delphi程式, 其中A程式啟動後在經過一些判斷, 以 winexec()啟動 B程式, 然後要從B程式中關閉A程式, 由B程式接手執行, 請問如何才能做得到 我查了本站的討論(以"關閉"來找有101筆), 似乎找不到想要的答案, 不知各位 是否有這方面的資料可否提供? 謝謝!
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-13 08:33:05 IP:220.131.xxx.xxx 未訂閱
讓B程式關閉A程式   
function CloseA(Wnd : HWnd; Form : TForm1) : Boolean;export; stdcall;
var
  sCap : array [0..255] of char;
begin
  GetWindowText (Wnd, sCap, sizeof(sCap));
  if pos ('A', sCap) > 0 then //A程式,視窗標題名稱
  begin
    PostMessage (Wnd, WM_CLOSE, 0, 0);
  end;
  CloseA := true;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  EnumWindows(@CloseA, 0);
end;     
網海無涯,唯學是岸! 因為擁有,所以分享! 發表人 - qoo1234 於 2004/12/13 08:38:01
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-13 09:46:15 IP:61.71.xxx.xxx 未訂閱
引言: 讓B程式關閉A程式
function CloseA(Wnd : HWnd; Form : TForm1) : Boolean;export; stdcall;
var
  sCap : array [0..255] of char;
begin
  GetWindowText (Wnd, sCap, sizeof(sCap));
  if pos ('A', sCap) > 0 then //A程式,視窗標題名稱
  begin
    PostMessage (Wnd, WM_CLOSE, 0, 0);
  end;
  CloseA := true;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  EnumWindows(@CloseA, 0);
end;     
網海無涯,唯學是岸! 因為擁有,所以分享! 發表人 - qoo1234 於 2004/12/13 08:38:01
不好意思, 版主, 我沒想到你會從caption上下手, 所以我沒有提到A程式的CAPTION是中文而且是可以被使用者自定的, 所以我無法預測使用者會使用何 種CAPTION STRING, 那該如何是好? PS:A程式不是我寫的, 手上沒有SOURCE CODE可以改, 我是有想過如果將使用者 定義的CAPTION加上特有識別碼如XXXXXX公司***, 不過A程式的CAPTION 會被拿來做其他的功能, 所以不太可能去添增其他文字! 謝謝!
pigbaby
初階會員


發表:2
回覆:84
積分:47
註冊:2002-09-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-13 11:05:49 IP:210.200.xxx.xxx 未訂閱
豬寶寶想到的方法是 去搜尋PROCESS 中看有沒有A那個程式的執行檔名 再去砍那個PROCESS 抱歉 只想到方法 手上沒有MSDN可以查詢那個函數可以做到 >_<
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-14 00:03:47 IP:220.131.xxx.xxx 未訂閱
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=42980    網海無涯,唯學是岸! 因為擁有,所以分享!
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-14 01:39:23 IP:61.71.xxx.xxx 未訂閱
引言: 讓B程式關閉A程式
function CloseA(Wnd : HWnd; Form : TForm1) : Boolean;export; stdcall;
var
  sCap : array [0..255] of char;
begin
  GetWindowText (Wnd, sCap, sizeof(sCap));
  if pos ('A', sCap) > 0 then //A程式,視窗標題名稱
  begin
    PostMessage (Wnd, WM_CLOSE, 0, 0);
  end;
  CloseA := true;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  EnumWindows(@CloseA, 0);
end;     
網海無涯,唯學是岸! 因為擁有,所以分享! 發表人 - qoo1234 於 2004/12/13 08:38:01
感謝各位的提供, 問題已解決, 我是利用上面的程式解決的, 雖然A程式沒有提供SOURCE可以修改CAPTION, 但是有提供DCU可以編譯及一支DPR, 我發現雖然 A程式可以改變CAPTION內容, 但這是在程式完成CREATE及RUN之後才會發生的事件, 所以我在 PROJECT->OPTIONS->APPLICATION->TITLE 輸入TITLE STRING, 然後以上述程式找我設定的CAPTION就可以在程式被改掉CAPTION之前先結束 A程式了, 雖然有點偷吃步, 但還是達成目的, 不過我再看了版主下面提供的資料, 找到相關RAIN兄的寫法, 似乎更能精確的來關閉指定的程式, 經測試也可以達成! 謝謝! http://delphi.ktop.com.tw/topic.php?topic_id=33946
系統時間:2024-05-14 6:41:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!