2010-08-12 88 views
2

可以有一個人告訴我怎麼隱藏其他應用程序/流程/顯示托盤圖標用我的申請,我想隱藏的'連接到internet''icon(即變成藍色的兩臺計算機時,數據被髮送/收到/兩者)從我的應用程序
編輯:我可以用這個片段從http://scalabium.com/faq/dct0147.htm如何隱藏其他應用程序/進程的托盤圖標(從我的應用程序)?

ShowWindow(FindWindowEx(FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'TrayNotifyWnd', nil), 0, 'TrayClockWClass', nil), SW_HIDE); 

採取我想我可以使用此代碼隱藏'internect連接圖標「」(順便說一下隱藏系統時鐘是什麼這個圖標是否被稱爲?)以及通過替換TrayClockWlass而不是哪個類? 我已經嘗試使用這個工具叫windowse,但沒有運氣
EDIT2找到類的名稱:我可以通過leftclicking「托盤窗口」,然後選擇屬性,並在屬性窗口點擊隱藏在Windows的圖標,「自定義」按鈕,然後改變圖標從屬性「隱藏不活動時」到「總是隱藏」我可以做到這一點在Delphi,甚至更好我可以隱藏/顯示(完全)每當我想(用delphi)

+7

你爲什麼要這麼做?爲什麼不計算控制系統隱藏/顯示托盤使用(可能在註冊表中),而不是搞亂人們的計算機。干擾這些事情會導致人們的麻煩。網絡圖標由控制面板控制,因此找到將其關閉的註冊表選項。任務完成。 – mj2008 2010-08-12 09:29:17

+0

我不會與其他人混淆我正在寫一個個人程序,請參閱edit2通過註冊表執行它我將不得不每次重新啓動我的電腦?我想隱藏/顯示速度爲 – 2010-08-12 10:24:39

+0

通過按鈕點擊我的程序通過雙擊托盤圖標,選擇屬性,並取消選中「連接時通知區域中的顯示圖標」框,可以隱藏Internet連接圖標。 – 2010-08-12 12:09:24

回答

4

的API不公開訪問該圖標其他應用程序的圖標。唯一的選擇是對系統托盤進行子類化,以截獲Shell_NotifyIcon()發送給它的窗口消息,以便您可以跟蹤哪些HWND正在註冊哪些圖標標識。

+0

謝謝,看我的編輯 – 2010-08-12 09:05:59

+0

沒有辦法可編程訪問操作系統的內置「隱藏時無效」和「始終隱藏」功能。同樣,訪問和操作別人圖標的** ONLY **方法是直接掛入系統托盤的窗口並攔截Shell_NotifyIcon()的WM_COPYDATA消息(請參見http://www.codeproject.com/KB/applications /ShellTrayInfo.aspx的消息內容),因此您可以訪問每個圖標的HWND和ID,以便您自己調用Shell_NotifyIcon(),否則只需阻止消息,以便圖標不會到達系統托盤。 – 2010-08-13 02:12:56

+0

感謝那是我尋找的答案,類似WM_COPYDATA部分窗口api的消息嗎?也是例子是在c + +(我不知道:-()你有一個鏈接到一個delphi的例子 – 2010-08-13 07:56:50

0

如果你負責你在運行的計算機的時候,那麼你恰到好處單擊該圖標,手動禁用它。據推測,這會在註冊表中寫入一些設置(使用procmon查找),所以您可以通過Active Directory自動執行它。

如果你不負責,這意味着它不是你的,只是一些隨機電腦,你的應用程序自願決定繼續並隱藏它不喜歡的圖標,然後不,沒有API可以做到這一點,並且甚至試圖讓你感到沮喪。用戶決定何時想隱藏圖標,而不是您的超酷程序。

+3

如果有人想編寫管理托盤圖標的應用程序,例如讓用戶選擇要顯示何時/何地,..擰他也? – 2010-08-12 14:13:09

+0

該應用程序已被寫入,它被稱爲資源管理器。它有用於顯示/隱藏圖標以及何時/何時的界面重新向他們展示。任何不屬於資源管理器的增強功能的定義都是不穩定的,因爲它必須依賴未公開的功能和技巧,例如Windows搜索才能使資源管理器執行不應該執行的操作。無論如何,這是一個壞主意。儘管如此,用戶權限是可能的,因爲應用程序可以將自己提升爲管理員,然後執行所有這些骯髒的技巧。幸運的是,對於惡意應用程序,這不起作用。 – himself 2010-08-12 14:46:53

+2

首先,雖然後面的操作系統對此非常靈活,但前者並非如此。其次,外殼定製並非聞所未聞。我看到很多用戶使用第三方軟件來改變這個或那個的外觀/行爲。第三,explorer是默認的shell,但也有其他的,它們實現了系統托盤的功能......我確信我無法想到每一個有效的用途。重點在於,雖然對於不想幫助創建惡意代碼的人來說很不錯,但要做出判斷並不容易。因此,我反對你的回答。 – 2010-08-12 16:04:18

3

時鐘比如你引用的作品,因爲,雖然時鐘圖標是在同一地區的通知托盤,它實際上不是同一個窗口,但本身就是一個單獨的窗口。您無法使用相同的方法隱藏單個圖標,因爲它們都被視爲一個整體。

您可以隱藏整個通知托盤,雖然:

ShowWindow(FindWindowEx(FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'TrayNotifyWnd', nil), 0, 'SysPager', nil), SW_HIDE); 
+0

我想知道你爲什麼要在接受的問題上發佈老問題的答案?當然,你可以自由地這麼做......只是這裏有點沒用(至少對我來說)。 – jachguate 2010-11-09 21:50:24

+3

對於未來會發現此問題的人(例如我自己),希望解釋爲什麼您可以隱藏時鐘,但不是單個托盤圖標。沒有人解釋說。 – FSD 2010-11-09 21:52:55

+0

hi fsd,我在ages.thanks之後登錄了我的堆棧溢出帳戶。 – 2011-01-13 11:50:21

相關問題