找回密码
 加入网盟
分割线
官方精品推荐

Win7系统桌面不同于XP及老版本的桌面系统,增加了很多人性化的功能,比如桌面图标可以根据自己的需要调整为大、中、小三种类型的大小,也可以根据自己的需要按住CTRL+鼠标滚轮控制图标大小。这一点非常的人性化,这里给大家介绍,如何模拟人工手动操作方式让程序去帮助我们调整图标的大小。

实际操作桌面图标大小,我们只需要模拟键盘CTRL+鼠标滚轮消息发送给Windows的桌面进程句柄就可以了,通过Spy++我们截取到了按住CTRL+鼠标滚轮的消息是WM_MOUSEWHEEL,在第一个参数中我们可以设定是否按住CTRL键,参考:http://msdn.microsoft.com/en-us/library/ms645617(VS.85).aspx,根据该功能我们实现了如下具体代码:

  1. #include <ButtonConstants.au3>
  2. #include <GUIConstantsEx.au3>
  3. #include <WindowsConstants.au3>
  4. #Include <SendMessage.au3>
  5. #Region ### START Koda GUI section ### Form=

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

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

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

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

  20. While 1
  21.         $nMsg = GUIGetMsg()
  22.         Switch $nMsg
  23.                 Case $GUI_EVENT_CLOSE
  24.                         Exit
  25.                 Case $Button1
  26.                         _SendMessage($hSysListView32, $WM_MOUSEWHEEL, BitOR(BitShift(120, -16), $MK_CONTROL), 0)
  27.                 Case $Button2
  28.                         _SendMessage($hSysListView32, $WM_MOUSEWHEEL, BitOR(BitShift(-120, -16), $MK_CONTROL), 0)

  29.         EndSwitch
  30. WEnd
复制代码















转自邓佳博客
分享至 : QQ空间
收藏

1 个回复

倒序浏览
您需要登录后才可以回帖 登录 | 加入网盟
关闭

华夏网盟推荐 上一条 /1 下一条