如何讓B程式關閉A程式 |
答題得分者是:qoo1234
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
qoo1234
版主 發表:256 回覆:1167 積分:659 註冊:2003-02-24 發送簡訊給我 |
讓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 發送簡訊給我 |
引言: 讓B程式關閉A程式不好意思, 版主, 我沒想到你會從caption上下手, 所以我沒有提到A程式的CAPTION是中文而且是可以被使用者自定的, 所以我無法預測使用者會使用何 種CAPTION STRING, 那該如何是好? PS:A程式不是我寫的, 手上沒有SOURCE CODE可以改, 我是有想過如果將使用者 定義的CAPTION加上特有識別碼如XXXXXX公司***, 不過A程式的CAPTION 會被拿來做其他的功能, 所以不太可能去添增其他文字! 謝謝!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 |
pigbaby
初階會員 發表:2 回覆:84 積分:47 註冊:2002-09-02 發送簡訊給我 |
|
qoo1234
版主 發表:256 回覆:1167 積分:659 註冊:2003-02-24 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 讓B程式關閉A程式感謝各位的提供, 問題已解決, 我是利用上面的程式解決的, 雖然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=33946function 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 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |