发表回复 
资源管理器的“查看方式”是受什么参数控制的?想用ahk快捷调
2012-11-25, 14 : 54
资源管理器的“查看方式”是受什么参数控制的?想用ahk快捷调
[i=s] 本帖最后由 afan 于 2012-11-26 19:05 编辑 [/i]

在资源管理器中浏览文件时要经常切换“查看”方式,我主要需要在“大图标”、“详细信息”两种方式间切换,有没有什么办法控制什么参数快捷实现呢切换呢?

[Image: iSbGVX9fuR3eg.png]
谢谢!
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2012-11-25, 16 : 05
 
资源管理器按F7
代码: (全选)
F7::SetFolderViewMode()

SetFolderViewMode(hwnd=0)
{
    static shell := ComObjCreate("Shell.Application")
        , SID_STopLevelBrowser := "{4C96BE40-915C-11CF-99D3-00AA004AE837}"
        , IID_IShellBrowser := "{000214E2-0000-0000-C000-000000000046}"
        , IID_IFolderView := "{cde725b0-ccc9-4519-917e-325d72fab4ce}"
    if !hwnd
        hwnd := WinExist("A")
    for k in shell.windows
    {
        if (k.hwnd = hwnd)
        {
            pSB := ComObjQuery(k,SID_STopLevelBrowser,IID_IShellBrowser) ; return point to IShellBrowser
            , DllCall(vtable(pSB,15),"ptr",pSB,"ptr*",pshv) ; IShellBrowser::QueryActiveShellView to retrieve point to IShellView
            , pfv := ComObjQuery(pshv,IID_IFolderView) ; return point to IFolderView
            , DllCall(vtable(pfv,3),"ptr",pfv,"uint*",vm)
            , DllCall(vtable(pfv,4),"ptr",pfv,"uint",vm=4?1:4) ; IFolderView::SetCurrentViewMode to set viewmode
            return
        }
    }
}

vtable(ptr, n) {
    return NumGet(NumGet(ptr+0), n*A_PtrSize)
}
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 2用户表示感谢nepter
2012-11-26, 19 : 04 (这个帖子最后修改于: 2015-04-24 15 : 12 by robertL.)
 
引用:资源管理器按F7F7::SetFolderViewMode()

SetFolderViewMode(hwnd=0)
{
static shell := ComObjCreate("Shell.Application")
, SID_STopLevelBrowser := "{4C96BE40-915C-11CF-99D3-00AA004AE837}" ...
nepter 发表于 2012-11-25 16:05 [Image: back.gif]
哇噢,有难度哦.多谢!!
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2012-11-26, 23 : 46
 
如果用比較容易理解的方式做
Win+e 會開啟資源管理器(繁中: 檔案總管)
AppKey 會打開同按右鍵的選單(前提... 還沒選任何項目
接著按V 開子選單
再按 R{enter} 或 D 選擇....
=====================================
Win+e 會開啟資源管理器(繁中: 檔案總管)
另一個方式是 Alt-V (有選了項目 也無妨)
接著按 R 大圖示 or L 詳細清單
=====================================
在Autohokey裡 可以用 Run, explore "c:\我的文件夾\" 取代#e
指定 資源管理器 開啟c:\我的文件夾\
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2015-04-23, 05 : 14
RE: 资源管理器的“查看方式”是受什么参数控制的?想用ahk快捷调
修改注册表吧
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢cixiplc
2015-05-14, 09 : 05
RE: 资源管理器的“查看方式”是受什么参数控制的?想用ahk快捷调
(2012-11-25 16 : 05)nepter 提到:  资源管理器按F7
代码: (全选)
F7::SetFolderViewMode()

SetFolderViewMode(hwnd=0)
{
    static shell := ComObjCreate("Shell.Application")
        , SID_STopLevelBrowser := "{4C96BE40-915C-11CF-99D3-00AA004AE837}"
        , IID_IShellBrowser := "{000214E2-0000-0000-C000-000000000046}"
        , IID_IFolderView := "{cde725b0-ccc9-4519-917e-325d72fab4ce}"
    if !hwnd
        hwnd := WinExist("A")
    for k in shell.windows
    {
        if (k.hwnd = hwnd)
        {
            pSB := ComObjQuery(k,SID_STopLevelBrowser,IID_IShellBrowser) ; return point to IShellBrowser
            , DllCall(vtable(pSB,15),"ptr",pSB,"ptr*",pshv) ; IShellBrowser::QueryActiveShellView to retrieve point to IShellView
            , pfv := ComObjQuery(pshv,IID_IFolderView) ; return point to IFolderView
            , DllCall(vtable(pfv,3),"ptr",pfv,"uint*",vm)
            , DllCall(vtable(pfv,4),"ptr",pfv,"uint",vm=4?1:4) ; IFolderView::SetCurrentViewMode to set viewmode
            return
        }
    }
}

vtable(ptr, n) {
    return NumGet(NumGet(ptr+0), n*A_PtrSize)
}

谢谢,用之。
想用到“文件对话框”,该怎么做?

尊重原创,分享快乐
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
发表回复 


论坛跳转:


联系我们 | Autohotkey 中文站 | 回到顶部 | 回到正文区 | 精简(归档)模式 | RSS 聚合