admin 发表于 2014-11-17 19:41:16

Au3控制Win7桌面图标大小

Win7系统桌面不同于XP及老版本的桌面系统,增加了很多人性化的功能,比如桌面图标可以根据自己的需要调整为大、中、小三种类型的大小,也可以根据自己的需要按住CTRL+鼠标滚轮控制图标大小。这一点非常的人性化,这里给大家介绍,如何模拟人工手动操作方式让程序去帮助我们调整图标的大小。实际操作桌面图标大小,我们只需要模拟键盘CTRL+鼠标滚轮消息发送给Windows的桌面进程句柄就可以了,通过Spy++我们截取到了按住CTRL+鼠标滚轮的消息是WM_MOUSEWHEEL,在第一个参数中我们可以设定是否按住CTRL键,参考:http://msdn.microsoft.com/en-us/library/ms645617(VS.85).aspx,根据该功能我们实现了如下具体代码:#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <SendMessage.au3>
#Region ### START Koda GUI section ### Form=

#cs
        代码出自:邓佳的博客 http://www.nmgwddj.com/
        参考资料:http://msdn.microsoft.com/en-us/library/ms645617(VS.85).aspx
#ce

;//$WM_MOUSEWHEEL已在WindowsConstants.au3中定义
;//Global Const $WM_MOUSEWHEEL = 0x020A
Global Const $MK_CONTROL = 0x0008

;//得到桌面SysListView321控件句柄
$hSysListView32 = ControlGetHandle("Program Manager", "", "SysListView321")

$Form1 = GUICreate("控制Win7桌面图标大小", 163, 123)
$Button1 = GUICtrlCreateButton("放大图标", 8, 8, 147, 49)
$Button2 = GUICtrlCreateButton("缩小图标", 8, 64, 147, 49)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                        _SendMessage($hSysListView32, $WM_MOUSEWHEEL, BitOR(BitShift(120, -16), $MK_CONTROL), 0)
                Case $Button2
                        _SendMessage($hSysListView32, $WM_MOUSEWHEEL, BitOR(BitShift(-120, -16), $MK_CONTROL), 0)

        EndSwitch
WEnd














转自邓佳博客

yaochangfu 发表于 2014-11-18 22:57:48

:):):):):):)
页: [1]
查看完整版本: Au3控制Win7桌面图标大小