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

有關TrayIcon的問題

尚未結案
FrankLiu
一般會員


發表:5
回覆:5
積分:2
註冊:2003-05-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-29 18:59:57 IP:210.202.xxx.xxx 未訂閱
1.電腦在重新開機時會因為我寫的TrayIcon應用程式而無法關機(去工作管理員內看到Process還在,刪掉就可以關機),請問為神麼?這個應用程式內只有ServerSocket和Timer一直開著,並且只要把TrayIcon從程式內拿掉就沒有此問題。 2.我將這個應用程式放到Windows排定的工作內,並設定從新開機時帶起,不過如果程式內沒有TrayIcon就可以Work(只不過Form無法看到),但是只要加入TrayIcon似乎就不work,並且在login windows時在右下角也看不到Icon,請問這種問題是因為神麼原因? 感謝各位高人指點
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-29 19:07:43 IP:140.135.xxx.xxx 未訂閱
FrankLiu您好:   試試bruce0211大哥的方式看看   http://delphi.ktop.com.tw/topic.php?TOPIC_ID=18760 [心得分享 : 如何讓程式執行時,馬上隱藏於桌面右下角 ] 順心 <>~我也是在學習的階段,所以請您多多見諒與指教~
FrankLiu
一般會員


發表:5
回覆:5
積分:2
註冊:2003-05-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-30 09:15:52 IP:210.202.xxx.xxx 未訂閱
taishyang老兄:      那篇文章裡面有許多好東西,但好像還是沒有解答,我的主要問題是windows在關機時,會因為我的程式還沒關而無法關機,但我看TrayIcon也沒有相關的設定,    不過還是謝謝你啦
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-30 09:45:30 IP:203.73.xxx.xxx 未訂閱
引言: 我的主要問題是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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-30 11:40:04 IP:210.202.xxx.xxx 未訂閱
RaynorPao兄:      加入你的程式碼選擇重新開機,windows還是關不掉我的Process,必須到工作管理員手動關閉才行,可以若是直接將程式關閉則可以,是因為我的程式有什麼東西卡住了嗎?(裡面只有ServerSocket,ClientSocket)      
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-30 11:48:21 IP:203.73.xxx.xxx 未訂閱
引言: RaynorPao兄: 加入你的程式碼選擇重新開機,windows還是關不掉我的Process,必須到工作管理員手動關閉才行,可以若是直接將程式關閉則可以,是因為我的程式有什麼東西卡住了嗎?(裡面只有ServerSocket,ClientSocket) < face="Verdana, Arial, Helvetica"> FrankLiu 你好: 那再試試看加入我上一篇文章中紅色的程式碼看看可不可以呢?? --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
FrankLiu
一般會員


發表:5
回覆:5
積分:2
註冊:2003-05-29

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-30 15:18:15 IP:210.202.xxx.xxx 未訂閱
感謝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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-05-30 15:59:46 IP:203.73.xxx.xxx 未訂閱
引言: 感謝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 下測試過,是可以關
   機的
//--------------------------------------------------------------------
// >    -- 
        
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
系統時間:2024-05-19 9:36:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!