如何查詢任務欄的屬性

漫漫開發路 發佈 2022-10-22T05:52:37.887425+00:00

有時候,有些人需要查詢任務欄的屬性。對此,我有些不太明白為什麼。你應該繼續你的生活,讓任務欄也繼續它的生活。畢竟,正如我們上次討論的那樣,作業系統中甚至可能沒有任務欄。

有時候,有些人需要查詢任務欄的屬性。
對此,我有些不太明白為什麼。你應該繼續你的生活,讓任務欄也繼續它的生活。
畢竟,正如我們上次討論的那樣,作業系統中甚至可能沒有任務欄。

如果你真的想這麼做的話(可能你只是想收集一些可用性相關的統計信息),下面的代碼可以幫你的忙:

在上面的代碼中,我們使用了 SHAppBarMesage 函數中的 APM_GETSTATE 消息,來獲取任務欄的 「總是在最上面」 和 「自動隱藏」 的屬性。

因為我們使用的是 SHAppBarMessage 這個函數,因此,如果 Windows 的未來版本修改了它維護任務欄狀態的方式(或者甚至可能將任務欄的名稱更改為其他名稱),則上面的代碼仍將正常工作,因為 SHAppBarMessage 將與任務欄發生的任何修改保持同步。

你還可以使用 ABM_SETSTATE 消息來修改這些狀態。請注意,我們不鼓勵從程序中執行此操作,因為這些狀態位屬於用戶的首選項,用戶應該提供系統的控制面板來進行修改,程序不應該擾亂用戶的偏好。(好吧,當然,除非程序的全部意義在於改變用戶的偏好。但是我看到這個問題的頻率讓我懷疑是否真的有那麼多設置調整程序。我懷疑人們正在利用這種力量來作惡,而不是為善。)

為了避免後續問題:這些是任務欄中唯一可修改的兩個屬性。為像任務欄這樣高度可見的東西公開可編程接口是一個非常敏感的問題,因為一旦你授予對某些東西的編程訪問權,程序就會有一個非常強烈的誘惑開始濫用它。

總結

世界並不美好,你得時時刻刻在心中繃緊如下幾根弦:
> 是否暴露了不應該暴露的調用接口?
> 輸入數據是否可能不是程序預期的,甚至是那些會觸發棧溢出的」精心構造」的數據?
> 通信信道是否被監聽了?真的只是將數據進行明文傳輸嗎?
> Web服務是否太過高調,以至於引來了那些DDOS和CC攻擊者?
諸位,人心不可測,還是小心為上。

最後

Raymond Chen的《The Old New Thing》是我非常喜歡的博客之一,裡面有很多關於Windows的小知識,對於廣大Windows平台開發者來說,確實十分有幫助。
本文來自:《How to query properties of the taskbar》

關鍵字: