autohotkey写类似于资源管理器
; 下面是一个比此页面顶部附近那个更精巧的可运行脚本. ; 它创建和显示包含了在所有用户开始菜单的所有文件夹的 TreeView. 当 ; 用户选择文件夹时, 它的内容会显示在右边的 ListView (类似于 Windows 资源管理器). ; 此外, StatusBar 控件会显示当前选择文件夹的信息. ; 下面的文件夹为 TreeView 的根文件夹. 请注意如果指定 ; 整个驱动器例如 C:\, 那么加载可能需要很长时间: TreeRoot = %A_StartMenuCommon% TreeViewWidth := 280 ListViewWidth := A_ScreenWidth - TreeViewWidth - 30 ; 让用户可以最大化或拖动调整窗口大小: Gui +Resize ; 创建图像列表并在其中放入一些标准的系统图标: ImageListID := IL_Create(5) Loop 5 IL_Add(ImageListID, "shell32.dll", A_Index) ; 创建 TreeView 和 ListView, 让它们像在 Windows 资源管理器中那样靠在一起: Gui, Add, TreeView, vMyTreeView r20 w%TreeViewWidth% gMyTreeView ImageList%ImageListID% Gui, Add, ListView, vMyListView r20 w%ListViewWidth% x+10, Name|Modified ; 设置 ListView 的列宽(可选的): Col2Width = 70 ; 缩小到只显示 YYYYMMDD 部分. LV_ModifyCol(1, ListViewWidth - Col2Width - 30) ; 保留垂直滚动条的空间. LV_ModifyCol(2, Col2Width) ; 创建状态栏, 显示文件夹数及其总大小的信息: Gui, Add, StatusBar SB_SetParts(60, 85) ; 创建状态栏的三个部分(第三部分占用所有剩余宽度). ; 添加文件夹及其子文件夹到树中. 如果加载需要很长时间, 则显示提示信息: SplashTextOn, 200, 25, TreeView and StatusBar Example, Loading the tree... AddSubFoldersToTree(TreeRoot) SplashTextOff ; 显示窗口并返回. 每当用户执行符合条件的动作时, 操作系统会通知脚本: Gui, Show,, %TreeRoot% ; 在标题栏中显示源目录(树的根目录). return AddSubFoldersToTree(Folder, ParentItemID = 0) { ; 此函数添加指定文件夹中所有子文件夹到 TreeView. ; 它还可以调用自己来递归获取到任意深度的内嵌文件夹. Loop %Folder%*.*, 2 ; 获取所有文件夹的子文件夹. AddSubFoldersToTree(A_LoopFileFullPath, TV_Add(A_LoopFileName, ParentItemID, "Icon4")) } MyTreeView: ; 此子程序处理用户的操作(例如点击). if A_GuiEvent <> S ; 即"选择树中的新项目"外的其他操作. return ; 什么都不做.; 否则, 把选择的文件夹中的内容放入 ListView.; 首先确定选择的文件夹的完整路径: TV_GetText(SelectedItemText, A_EventInfo) ParentID := A_EventInfo Loop ; 建立到选择的文件夹的完整路径. { ParentID := TV_GetParent(ParentID) if not ParentID ; 没有更多的高层项目了. break TV_GetText(ParentText, ParentID) SelectedItemText = %ParentText%\%SelectedItemText% } SelectedFullPath = %TreeRoot%\%SelectedItemText% ; 把文件放入 ListView: LV_Delete() ; 清除所有行. GuiControl, -Redraw, MyListView ; 加载过程中禁用重绘来提升性能. FileCount = 0 ; 为下面的循环进行初始化. TotalSize = 0 Loop %SelectedFullPath%*.* ; 为了简化, 这里省略了文件夹, 所以只在 ListView 中显示文件. { LV_Add("", A_LoopFileName, A_LoopFileTimeModified) FileCount += 1 TotalSize += A_LoopFileSize } GuiControl, +Redraw, MyListView ; 更新状态栏的三个部分, 让它们显示当前选择的文件夹的信息: SB_SetText(FileCount . " files", 1) SB_SetText(Round(TotalSize / 1024, 1) . " KB", 2) SB_SetText(SelectedFullPath, 3) return GuiSize: ; 当用户改变窗口大小时扩展/收缩 ListView 和 TreeView. if A_EventInfo = 1 ; 窗口被最小化了.无需进行操作. return ; 否则, 窗口的大小被调整过或被最大化了. 调整控件大小以适应. GuiControl, Move, MyTreeView, % "H" . (A_GuiHeight - 30) ; 预留 30 用于状态栏和边距. GuiControl, Move, MyListView, % "H" . (A_GuiHeight - 30) . " W" . (A_GuiWidth - TreeViewWidth - 30) return GuiClose: ; 当用户关闭 TreeView 所在的 GUI 窗口时退出脚本. ExitApp
学习!!
您好,您制作的这个资源管理器非常好,我认为有以下几个亮点:1.无任何学习成本,total commander固然是神器,但不容易入门;2.界面简洁,windows自带的资源管理器,有些复杂,尤其是在我只有利用它整理文件的时候;3.脚本本身占用的系统资源非常小,且文件资料仍然是存储在电脑上,不担心安全问题。4.自带的树状文件目录,整理文件会更直观。
该脚本优点非常多,但我自身在使用的过程中还发现有几个小点,希望您能帮忙修改:1.左边树状目录里可以自由添加或删除目录;2.在点击了左边目录后,如果其下还有子目录,也能在右边区域显示出来,并且在右边点击该文件夹后,可以直接进入下一级目录;3.右边区域内可以自由添加或删除文件;4.添加文件的右键菜单同电脑本身的右键菜单一样;5.右边区域内的文件可以以文件本身自定的打开方式打开;6.右边区域文件的排列方式可以按电脑本身的排列方式来多种排列;7.排列项可自由添加或删减。8.是否可以内置everthing 或listary,按下指定的快捷键,便可以在限定的目录内快速搜索。
PS:提的要求有些多,本来是和作者商量,希望能给作者一些辛苦费,但作者念我刚工作不久,没啥积蓄,就免费帮我制作。谢谢河许人。希望您的网站越办越好。
不好意思,这一段时间一直被各种事情耽搁,所以一直拖到现在,我尝试帮你完善一下。我大致看了一下1-6要求就是要达到系统自带的水平,后边两项是拔高需求。一时半会很难完善起来。
群主,MarkDown编辑器关闭了吗?最近想更新一下一篇文章,结果发现找不到入口了。
不过我也会抽时间完善一下,放在商店里,就不开源了!