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

有什麼方法可以判斷目前執行的程式是<正常在桌面> 或 <已經縮在工作列>?

答題得分者是:RootKit
yes123
一般會員


發表:5
回覆:6
積分:2
註冊:2004-09-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-09-04 15:16:48 IP:220.130.xxx.xxx 訂閱
各位大大,請教有什麼方法可以判斷目前執行的程式是
<正常在桌面> 或 <已經縮在工作列>,謝謝!!
RootKit
資深會員


發表:16
回覆:358
積分:419
註冊:2008-01-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-09-04 16:32:23 IP:61.222.xxx.xxx 訂閱
he IsIconic function determines whether the specified window is minimized (iconic). 

BOOL IsIconic(

HWND hWnd // handle of window
);


Parameters

hWnd

Identifies the window.
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-09-04 17:58:56 IP:220.141.xxx.xxx 訂閱
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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-09-04 18:04:56 IP:220.130.xxx.xxx 訂閱
感謝 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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-09-04 18:09:07 IP:220.130.xxx.xxx 訂閱
系統時間:2024-03-29 16:41:48
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!