有什麼方法可以判斷目前執行的程式是<正常在桌面> 或 <已經縮在工作列>? |
答題得分者是:RootKit
|
yes123
一般會員 發表:5 回覆:6 積分:2 註冊:2004-09-17 發送簡訊給我 |
|
RootKit
資深會員 發表:16 回覆:358 積分:419 註冊:2008-01-02 發送簡訊給我 |
|
pceyes
尊榮會員 發表:70 回覆:657 積分:1140 註冊:2003-03-13 發送簡訊給我 |
Sample Code
[code delphi] procedure TForm1.FormCreate(Sender: TObject) var PrevInstHandle : HANDLE; Mutex : HANDLE; begin Application.Title:=Form1.Caption; Mutex := OpenMutex(SYNCHRONIZE,false,Application.Title.c_str()); if Mutex <> null then begin String AppTitle := Application.Title; SetWindowText(Application.Handle,null); PrevInstHandle := FindWindow("TApplication", AppTitle.c_str()); if PrevInstHandle <> 0 then begin if IsIconic(PrevInstHandle)) then ShowWindow(PrevInstHandle, SW_RESTORE); else BringWindowToTop(PrevInstHandle); SetForegroundWindow(PrevInstHandle); end; Application.ShowMainForm := false; Application.Terminate(); end; else CreateMutex(null, false, Application.Title.c_str()); // 接下來可以插入您其它要寫在 FormCreate 中的程式 end; [/code]
------
努力會更接近成功 |
yes123
一般會員 發表:5 回覆:6 積分:2 註冊:2004-09-17 發送簡訊給我 |
感謝 RootKit 大大,你回答的問題一針見血且又快速,我已經解決問題,
提供我以下的測試過程,供大家參考 procedure TForm1.Button1Click(Sender: TObject); begin if IsIconic(Application.Handle) then begin ShowMessage('目前縮到最小') end else begin ShowMessage('目前正常執行'); end end; 在程式內加一Timer1 interval設為15000(15秒) onTimer 設為 Button1Click 然後執行程式後, 若程式有縮到最小, 15秒後會出現(目前縮到最小) 若程式有正常執行, 15秒後會出現(目前正常執行) |
yes123
一般會員 發表:5 回覆:6 積分:2 註冊:2004-09-17 發送簡訊給我 |
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |