有關TrayIcon的問題 |
尚未結案
|
FrankLiu
一般會員 發表:5 回覆:5 積分:2 註冊:2003-05-29 發送簡訊給我 |
1.電腦在重新開機時會因為我寫的TrayIcon應用程式而無法關機(去工作管理員內看到Process還在,刪掉就可以關機),請問為神麼?這個應用程式內只有ServerSocket和Timer一直開著,並且只要把TrayIcon從程式內拿掉就沒有此問題。
2.我將這個應用程式放到Windows排定的工作內,並設定從新開機時帶起,不過如果程式內沒有TrayIcon就可以Work(只不過Form無法看到),但是只要加入TrayIcon似乎就不work,並且在login windows時在右下角也看不到Icon,請問這種問題是因為神麼原因? 感謝各位高人指點
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
FrankLiu您好:
試試bruce0211大哥的方式看看
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=18760
[心得分享 : 如何讓程式執行時,馬上隱藏於桌面右下角 ] 順心 <>~我也是在學習的階段,所以請您多多見諒與指教~>
|
FrankLiu
一般會員 發表:5 回覆:5 積分:2 註冊:2003-05-29 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 我的主要問題是windows在關機時,會因為我的程式還沒關而無法關機,但我看TrayIcon也沒有相關的設定,FrankLiu 你好: 先試試看在你的 Form 裡面加入以下的程式碼 < class="code"> //-------------------------------------------------------------------- // Unit2.h class TForm2 : public TForm { __published: // IDE-managed Components // 略 protected: MESSAGE void __fastcall MyQueryEndSession(TMessage &Msg); BEGIN_MESSAGE_MAP VCL_MESSAGE_HANDLER(WM_QUERYENDSESSION, TMessage, MyQueryEndSession); END_MESSAGE_MAP(TForm); private: // User declarations // 略 public: // User declarations // 略 }; //-------------------------------------------------------------------- // Unit2.cpp MESSAGE void __fastcall TForm2::MyQueryEndSession(TMessage &Msg) { Msg.Result=1; ShowMessage("MyQueryEndSession"); // 這行用來確定是否有執行到此? Application->Terminate(); } -- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2003/05/30 11:51:14
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
FrankLiu
一般會員 發表:5 回覆:5 積分:2 註冊:2003-05-29 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: RaynorPao兄: 加入你的程式碼選擇重新開機,windows還是關不掉我的Process,必須到工作管理員手動關閉才行,可以若是直接將程式關閉則可以,是因為我的程式有什麼東西卡住了嗎?(裡面只有ServerSocket,ClientSocket) >>< face="Verdana, Arial, Helvetica"> FrankLiu 你好: 那再試試看加入我上一篇文章中紅色的程式碼看看可不可以呢?? --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
FrankLiu
一般會員 發表:5 回覆:5 積分:2 註冊:2003-05-29 發送簡訊給我 |
感謝RaynorPao兄:
經過測試才發現小弟耍烏龍,會無法關機並不是TrayIcon的問題,而是TPowerSck元件搞的鬼,直接拖拉TPowersock到project內,沒做任何事,就會導致無法從新開機,所以小弟做裡以下測試,直接在程式內new一個powersock,程式如下:
a.h
private: // User declarations
TPowersock* pTPowersock; a.cpp __fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
pTPowersock = new TPowersock (this);
} void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
delete pTPowersock;
} 結果仍然無法關機,下pTPowersock->Disconnect(),Free()等都無用 若僅寫成這樣
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
pTPowersock = new TPowersock (this);
delete pTPowersock;
}
就可以關機了,怪哉,請問各位大大瞭解PowerSock嗎?
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 感謝RaynorPao兄: 經過測試才發現小弟耍烏龍,會無法關機並不是TrayIcon的問題,而是TPowerSck元件搞的鬼,直接拖拉TPowersock到project內,沒做任何事,就會導致無法從新開機,所以小弟做裡以下測試,直接在程式內new一個powersock,程式如下: a.h private: // User declarations TPowersock* pTPowersock; a.cpp __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { pTPowersock = new TPowersock (this); } void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { delete pTPowersock; } 結果仍然無法關機,下pTPowersock->Disconnect(),Free()等都無用 若僅寫成這樣 __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { pTPowersock = new TPowersock (this); delete pTPowersock; } 就可以關機了,怪哉,請問各位大大瞭解PowerSock嗎? FrankLiu 你好: (1)我想~~這應該是 Bug 吧?? 試試看在你原來的 FormClose event procedure 中加入這一行程式碼 ShowMessage("FormClose"); 結果你會發現,在關機的 時候,根本不會執行到 FormClose,也因此無法執行 delete pTPowersock; 而造成無法關機 (2)試試看改成以下這樣,我已經分別在 Windows 98/2000 下測試過,是可以關 機的 //-------------------------------------------------------------------- // > --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |