線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1674
推到 Plurk!
推到 Facebook!

請問在程式中如何可以關閉另一程式?

答題得分者是:ha0009
mathewzhao
中階會員


發表:121
回覆:164
積分:67
註冊:2003-04-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-08 11:17:49 IP:61.150.xxx.xxx 未訂閱
各位先進好! 程式A的OnClose 如下: procedure TForm1.FormClose(Sender:TObject;var Action: TCloseAction); begin Action := caNone; Visible := False; end; 現在程式B中用Postmessage(A.handle,WM_close,0,0);不再能關閉程式A Q:請問在程式B如何可以關閉程式A?
ha0009
版主


發表:16
回覆:507
積分:639
註冊:2002-03-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-08 11:49:09 IP:61.30.xxx.xxx 未訂閱
你好: WM_CLOSE 訊息在處理時有呼叫 OnClose 事件,這是你無法關閉的原因。 請改用 Postmessage (StrToInt (Edit1.Text),WM_QUIT,0,0); 因為這個訊息 不會呼叫 OnClose 事件。列出程式碼供你研究    
function TApplication.ProcessMessage(var Msg: TMsg): Boolean;
var
  Handled: Boolean;
begin
  Result := False;
  if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then
  begin
    Result := True;
    if Msg.Message <> WM_QUIT then
    begin
      Handled := False;
      if Assigned(FOnMessage) then FOnMessage(Msg, Handled);
      if not IsHintMsg(Msg) and not Handled and not IsMDIMsg(Msg) and
        not IsKeyMsg(Msg) and not IsDlgMsg(Msg) then
      begin
        TranslateMessage(Msg);
        DispatchMessage(Msg);
      end;
    end
    else
      FTerminate := True;
  end;
end;
PS : 所有的訊息都會再傳遞出去,但 WM_QUIT 則直接中斷程式。
mathewzhao
中階會員


發表:121
回覆:164
積分:67
註冊:2003-04-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-08 12:32:04 IP:61.150.xxx.xxx 未訂閱
感謝前輩ha0009 的回應! 在程式A被關閉時,需要release : ... id: Integer; ... UnRegisterHotKey(A.handle,id); GlobalDeleteAtom(id); 如果用WM_Quit 這個Resource 就沒法 release 發表人 - mathewzhao 於 2003/07/08 12:49:35
ha0009
版主


發表:16
回覆:507
積分:639
註冊:2002-03-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-08 12:53:35 IP:61.30.xxx.xxx 未訂閱
你好: 你的 A,handle 是哪來的< > 會不會是傳錯囉< > 你的 release 是在 OnClose 寫的嗎 如果是那把他改寫在 src="http://sourceprovide.deepen.com.tw/K_Top/bp.gif">
mathewzhao
中階會員


發表:121
回覆:164
積分:67
註冊:2003-04-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-07-09 08:59:25 IP:61.134.xxx.xxx 未訂閱
感謝前輩ha0009 的回應! A.handle是A程式的handle,我仔細檢查程式發現是我將Postmessage誤寫為Sendmessage,我把release從OnClose 放到OnDestory,這個問題就解決了! 謝謝前輩ha0009的指點!
系統時間:2024-05-18 20:36:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!