2010-09-24 56 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