无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 4779|回复: 22

[分享] vbs模拟按键全局修改资源管理器文件夹按中等图标查看

[复制链接]
发表于 2020-7-8 16:28:04 | 显示全部楼层 |阅读模式
基于批处理之家的大师原贴
加上vbs模拟按键机械的实现效果
  1. Dim Shell
  2. Set Shell = CreateObject("Shell.Application")
  3. For Each window In Shell.Windows()
  4.    If LCase(Right(window.FullName,13)) = "\explorer.exe" Then
  5.       window.Document.CurrentViewMode = 1
  6.       window.Document.IconSize = 48
  7.       window.Document.SortColumns = "prop:-System.DateModified;"
  8.       Exit For
  9.    End If
  10. Next
  11. Dim WshShell
  12. set WshShell = CreateObject("wscript.Shell")
  13. set shell = createobject("wscript.shell")
  14. WScript.Sleep 200
  15. WshShell.SendKeys "%{v}"
  16. WScript.Sleep 200
  17. WshShell.SendKeys "{m}"
  18. WScript.Sleep 200
  19. WshShell.SendKeys "%{t}"
  20. WScript.Sleep 200
  21. WshShell.SendKeys "{o}"
  22. call shell.appactivate("文件夹选项")
  23. WScript.Sleep 200
  24. WshShell.SendKeys "^{PGDN}"
  25. WScript.Sleep 200
  26. WshShell.SendKeys "%{l}"
  27. WScript.Sleep 200
  28. WshShell.SendKeys "{y}"
  29. WScript.Sleep 200
  30. WshShell.SendKeys "{ESC}"
  31. WScript.Sleep 200
  32. WshShell.SendKeys "%{f4}"
复制代码
期待高手帮忙改进,不用模拟按键方式。

点评

试试这个新的:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=421321  发表于 2020-7-11 23:18
 楼主| 发表于 2020-7-8 16:29:59 | 显示全部楼层
放在任意文件夹下,资源管理器的工具栏正常工作状态下运行即可。
回复

使用道具 举报

发表于 2020-7-8 23:55:56 | 显示全部楼层
试用挺有意思,
不过默认中等图标显示
用不着
回复

使用道具 举报

 楼主| 发表于 2020-7-9 06:34:57 来自手机 | 显示全部楼层
可以自己按照批处理之家原帖的介绍,修改一下。
回复

使用道具 举报

 楼主| 发表于 2020-7-10 00:25:41 来自手机 | 显示全部楼层
control folders可以打开文件夹选项,还可以用rundll32打开文件夹选项,可是怎么样才能和从菜单里点开一样,具有路径性质?

点评

昨晚上和今上午试了下,好象不好弄,拼逗了一份,虽然并不能实现功能,看你比较着急所以先发上来给你提供个思路,我下来也在继续调试。  详情 回复 发表于 2020-7-10 10:55
回复

使用道具 举报

发表于 2020-7-10 10:55:52 | 显示全部楼层
本帖最后由 9zhmke 于 2020-7-10 12:43 编辑
窄口牛 发表于 2020-7-10 00:25
control folders可以打开文件夹选项,还可以用rundll32打开文件夹选项,可是怎么样才能和从菜单里点开一样 ...

昨晚上和今上午试了下,好象不好弄,拼逗了一份,虽然并不能实现功能,看你比较着急所以先发上来给你提供个思路,我下来也在继续调试。
回复

使用道具 举报

 楼主| 发表于 2020-7-10 11:46:41 来自手机 | 显示全部楼层
不急,只是看到你的作品,以为有解决方案,于是又捡起这个来琢磨。早先就有这个要求,实现不了就搁置了。

点评

搞定了,原来退出窗口必须放到跳出循环之前  详情 回复 发表于 2020-7-11 10:26
弄错了,可以实现,但必须是手动关闭窗口,目前没有找到关闭窗口的方法。  详情 回复 发表于 2020-7-10 12:32
回复

使用道具 举报

发表于 2020-7-10 12:32:37 | 显示全部楼层
本帖最后由 9zhmke 于 2020-7-10 18:02 编辑
窄口牛 发表于 2020-7-10 11:46
不急,只是看到你的作品,以为有解决方案,于是又捡起这个来琢磨。早先就有这个要求,实现不了就搁置了。

弄错了,可以实现,但必须是手动关闭窗口,目前没有找到关闭窗口的方法。 测试.7z (1.17 KB, 下载次数: 9)
回复

使用道具 举报

发表于 2020-7-11 10:26:39 | 显示全部楼层
本帖最后由 9zhmke 于 2020-7-11 10:27 编辑
窄口牛 发表于 2020-7-10 11:46
不急,只是看到你的作品,以为有解决方案,于是又捡起这个来琢磨。早先就有这个要求,实现不了就搁置了。

搞定了,原来退出窗口必须放到跳出循环之前,代码中的c:后面还有个路径斜杠的,被安全检查吃掉了

  1. Set WshShell=WScript.CreateObject("WScript.Shell")
  2. Set Shell = CreateObject("Shell.Application")



  3. dirmode "c:"



  4. Function dirmode(dir)
  5.         dim explorer,proc,pid,wins,Current,i'定义变量以免与外面程序中重名
  6.         'WshShell.Run "taskkill /f /im explorer.exe" & dir,0,1'打开用户指定的文件夹,由于打开较慢,不会进入字典
  7.         'WshShell.Run "explorer.exe ",1,1'打开用户指定的文件夹,由于打开较慢,不会进入字典
  8.         WshShell.Run "explorer.exe " & dir,1,1'打开用户指定的文件夹,由于打开较慢,不会进入字典
  9.         Set Wins = Shell.Windows
  10.         dir=UCase("file:///" & replace(dir,"","/"))
  11.         For i=Wins.Count-1 To 0 step -1'先关闭之前打开的相同文件夹
  12.                 Current=LCase(Right(Wins(i).FullName,13))
  13.                 If Current = "\explorer.exe" and UCase(Wins(i).LocationURL) = dir Then Wins(i).Quit
  14.         Next
  15.         wscript.sleep 800'等新窗口打开
  16.         For i=Wins.Count-1 To 0 step -1
  17.                 If LCase(Right(Wins(i).FullName,13)) = "\explorer.exe" and UCase(Wins(i).LocationURL) = dir Then
  18.                         Wins(i).Document.CurrentViewMode = 3 '设置查看方式为缩略图
  19.                         '1、2、5、7 缩略图(此状态可Document.IconSize 设置任意大小),16/48/96/256是小/中/大/超大图标
  20.                         '3列表,4详细信息,6平铺,8内容
  21.                         Wins(i).Document.IconSize = 48
  22.                         '设置图标尺寸为 48
  23.                         Wins(i).Document.SortColumns = "prop:System.ItemNameDisplay;"'设置排序方式为按修改日期逆序排列
  24.                         '为逆序,如 prop:System.ItemNameDisplay; 和 prop:-System.ItemNameDisplay; 减号是相反的顺序
  25.                         '名称prop:System.ItemNameDisplay;                                          修改日期prop:System.DateModified;
  26.                         '类型prop:System.ItemTypeText;System.ItemNameDisplay;  大小prop:System.Size;
  27.                         Wins(i).Document.GroupBy = "System.Null"'设置分组依据为修改日期
  28.                         '名称System.ItemNameDisplay        修改日期System.DateModified
  29.                         '无分组 System.Null                        类型System.ItemTypeText                        大小System.Size  
  30.                         Wins(i).Quit
  31.                         Exit For
  32.                 end if
  33.         Next
  34. End Function
复制代码
回复

使用道具 举报

发表于 2020-7-11 10:41:25 | 显示全部楼层
该怎么样来约定函数后面的参数呢? 按字母好像有点麻烦吧?
用中文如何?比如允许函数后面用以下参数:
缩略图,列表,详细信息,平铺,内容,排序名称,排序日期,排序类型,排序日期,排序大小,排序顺,排序逆,分组无,分组名称,分组日期,分组类型,分组大小,分组顺,分组逆图标尺寸(数值)参考值16/48/96/256是小/中/大/超大图标
回复

使用道具 举报

 楼主| 发表于 2020-7-11 11:19:02 来自手机 | 显示全部楼层
看来确实不容易实现。

点评

不是搞定了么?在你那里搞不定?  详情 回复 发表于 2020-7-11 11:42
回复

使用道具 举报

发表于 2020-7-11 11:42:26 | 显示全部楼层
窄口牛 发表于 2020-7-11 11:19
看来确实不容易实现。

不是搞定了么?在你那里搞不定?
回复

使用道具 举报

 楼主| 发表于 2020-7-11 12:42:03 来自手机 | 显示全部楼层
嗯,不行。

点评

是哪一步的时候不行的?没有设为列表模式吗? 能说清楚是哪里不行不?  详情 回复 发表于 2020-7-11 13:08
回复

使用道具 举报

发表于 2020-7-11 13:08:00 | 显示全部楼层
本帖最后由 9zhmke 于 2020-7-11 13:12 编辑

是哪一步的时候不行的?没有设为列表模式吗? 能说清楚是哪里不行不?你先把c:\或者你想指定的位置弄成其他的,然后再运行这个就可以看出来了。把文件夹改成你自己想设置的试试: 搞定的.txt (2.63 KB, 下载次数: 7)
回复

使用道具 举报

 楼主| 发表于 2020-7-11 13:12:16 来自手机 | 显示全部楼层
我想达到的是全局,不是某路径下,原帖就能实现某个路径了。

点评

如果是最外面那不是更简单吗?  详情 回复 发表于 2020-7-11 13:30
回复

使用道具 举报

发表于 2020-7-11 13:30:19 | 显示全部楼层
本帖最后由 9zhmke 于 2020-7-11 13:31 编辑
窄口牛 发表于 2020-7-11 13:12
我想达到的是全局,不是某路径下,原帖就能实现某个路径了。

如果是最外面那不是更简单吗? 最外面.txt (1.62 KB, 下载次数: 11)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-3-28 21:59

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表