簡體   English   中英

如何在Windows中始終顯示程序托盤圖標*默認*?

[英]How to always show program tray icons in Windows by *default*?

如果在Windows 7中首次執行程序,它會自動隱藏該圖標。 是否有任何清單設置或選項強制Windows 7默認始終顯示圖標?

在.NET Rocks播客中,不久前,微軟的凱特格雷戈里說這是不可能的。

她說:“如果用戶想要它(托盤圖標),他/她會把它放在那里”。 原因是為了防止托盤區域混亂。

如果你真的想要顯示你的托盤圖標,你可以用最少的文本彈出一個氣球,然后通過以下代碼示例再次隱藏氣球和它的陰影:

trayIcon.ShowBalloonTip(30000, "", ".", ToolTipIcon.None)

Dim balloonHandle As IntPtr = GetBalloonHwnd(balloonText) ' mainly: FindWindow("tooltips_class32", Nothing)

If (balloonHandle <> IntPtr.Zero) Then
  Dim sysShadowClassHwnd As IntPtr = FindWindow("SysShadow", Nothing)

  ' will hide balloon and leaving a small shadow artifact - just for this balloon
  PostMessage(balloonHandle, WM_SETREDRAW, IntPtr.Zero, IntPtr.Zero)
  SetWindowPos(balloonHandle, IntPtr.Zero, 0, 0, 0, 0, SWP_HIDEWINDOW)

  If (sysShadowClassHwnd <> IntPtr.Zero) Then
    ' this will remove the small shadow artifact
    PostMessage(sysShadowClassHwnd, WM_CLOSE, IntPtr.Zero, IntPtr.Zero)
  End If
End If

如果你重復這個(例如每30秒),你的trayicon將留在那里,因為Explorer.exe認為,有一個氣球打開顯示給用戶。 一些小問題 - 例如沒有直接右鍵單擊圖標 - 仍然存在。

我真的習慣於顯示我們公司軟件的托盤圖標,用戶不打算手動執行此操作以及每次更新。 所以也許這會幫助別人...... :)

否則,我完全同意:這應該只在用戶手中,而不是由應用程序控制。

這當然不是“不可能的”。 有一個未記錄的COM接口ITrayNotify用於檢索托盤圖標並更改其可見性,由Explorer本身使用。 完整的C ++源代碼: http//thread0.me/tag/windows/

當然,使用非官方API 是有風險的 ,Windows 8已經對此API進行了重大修改,這意味着您必須對XP使用2個不同的定義 - Win7和Win8 - Win10。 但是,嘿,即使Chrome使用這個技巧 務必妥善處理故障。

標記為重復的問題具有如何完成的答案。

這是一個鏈接備用鏈接 ),用於解釋C#代碼的方式和位置

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM