2010-09-24 141 views
2

我想要在Windows Vista和7中設置桌面圖標大小 - 現在桌面允許使用Ctrl-MouseWheel對圖標進行大小調整,我希望做它使用C#。 是的,我可以發送WM_MOUSEWHEEL消息到桌面列表視圖手柄,但是有兩個缺點:在C中獲取並設置Windows桌面圖標大小#

  • 我沒有電流的大小,所以我必須將消息發送很多次,直到我達到一個已知狀態(最大或最小尺寸),然後再次發送消息調整大小到所需的大小
  • 上述過程很慢(我必須發送許多消息以達到所需的大小,這不能在一個步驟中完成),它有時在達到已知狀態時閃爍。

我想知道是否有什麼辦法讓當前圖標的大小,並將其設置爲另一尺寸編程

回答

0

我知道你可以很容易使用獲得的圖標的大小SystemInformation class。看起來沒有二傳手,所以你可能需要深入挖掘並使用系統的SystemParameterInfo() function。請參閱SPI_GETICONMETRICSSPI_SETICONMETRICS參數。

+1

SystemInformation類使用與註冊表項「HKEY_CURRENT_USER \ Control Panel \ desktop \ WindowMetrics \ Shell Icon Size」相同的信息,並且它不反映真實大小。例如,使用Ctrl-MouseWheel調整桌面圖標的大小,然後讀取SystemInformation.IconSize。您將永遠得到32x32 – 2010-09-24 22:26:13

0

似乎唯一的方法是通過註冊表。看到this page(「在Windows中」時)的中間。

更新:

好吧,我看到你說的話了。您需要使用桌面的IFolderView(CurrentViewMode)或IFolderView2(ViewModeAndIconSize)。

+0

使用「HKEY_CURRENT_USER \ Control Panel \ desktop \ WindowMetrics \ Shell Icon Size」需要重置資源管理器(通過註銷,重新啓動或殺死它),並且Ctrl-MouseWheel功能不會使用它 - 讀取此密鑰沒有得到真正的圖標大小,並設置它不會立即改變 – 2010-09-24 22:17:40

+1

我認爲IFolderView2是正確的方向,但是你有任何從桌面獲取此接口的例子嗎? – 2010-09-25 16:54:39

+0

不幸的是(或者幸運的是)似乎Explorer沒有公開桌面文件夾的* View界面。 – Luke 2010-09-25 21:21:59