From 1f460f7ebc10c2f8bb66ae684498f49187eab9bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Ankarstr=C3=B6m?= Date: Fri, 23 Oct 2020 01:44:02 +0200 Subject: first commit --- tt.programs.explorer.ahk | 197 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 197 insertions(+) create mode 100644 tt.programs.explorer.ahk (limited to 'tt.programs.explorer.ahk') diff --git a/tt.programs.explorer.ahk b/tt.programs.explorer.ahk new file mode 100644 index 0000000..8e2e659 --- /dev/null +++ b/tt.programs.explorer.ahk @@ -0,0 +1,197 @@ +;; -> init + +ShellApp := ComObjCreate("Shell.Application") +GroupAdd, Explorer, ahk_class CabinetWClass +GroupAdd, Explorer, ahk_class ExploreWClass +GroupAdd, Desktop, ahk_class Progman +GroupAdd, Desktop, ahk_class WorkerW +GroupAdd, ExplorerDesktop, ahk_class CabinetWClass +GroupAdd, ExplorerDesktop, ahk_class ExploreWClass +GroupAdd, ExplorerDesktop, ahk_class Progman +GroupAdd, ExplorerDesktop, ahk_class WorkerW + +;; -> library + +Explorer(hwnd := "") +{ + global ShellApp + if (hwnd = "") + WinGet, hwnd, id, A + for window in ShellApp.Windows + if (window.hwnd = hwnd) + return window + return -1 +} + +ExplorerPath() +{ + WinGetClass, cls, A + if (cls = "Progman" or cls = "WorkerW") + return %A_Desktop% + else + return Explorer().Document.Folder.Self.path +} + +;; -> body + +;; Explorer/Desktop hotkeys --------------------------------------------------- + +#IfWinActive ahk_group ExplorerDesktop + +; Open new window/command prompt + +^n::Run, % "explorer /n,""" ExplorerPath() """" +^p::Run, % "cmd /k cd /d """ ExplorerPath() """" + ++^p:: +path := ExplorerPath() +Run, % "C:\Documents and Settings\All Users\Start Menu\Programs\Microsoft Visual Studio 2010 Express\Visual Studio Command Prompt (2010).lnk" +WinWait, ahk_class ConsoleWindowClass +SendInput, % "cd " path "{Return}" +return + +; Create new folder/file + +^+n:: +FileCreateDir, % ExplorerPath() "\New Folder" +SendInput, {F5}New Folder{F2} +return + +^!n:: +FileAppend,, % ExplorerPath() "\New Text Document.txt" +SendInput, {F5}New Text Document.txt{F2} +return + +;; Explorer hotkeys ----------------------------------------------------------- + +; Edit file + +#IfWinActive + +LWin & LButton:: +MouseGetPos,,, hwnd +DllCall("SetForegroundWindow", "UInt", hwnd) +if (not DoubleClick()) ; see tt.doubleclick.ahk + return +if (not WinActive("ahk_group Explorer")) +{ + SendInput, {Click} + return +} +; fall through to next hotkey + +#IfWinActive ahk_group Explorer + +#NumPadEnter:: +#Enter:: +i := Explorer().Document.FocusedItem +if (i.IsFolder) + return +ShellApp.ShellExecute(i.path, "", "", "Edit", 1) +return + +; Directory navigation + +LAlt & Up:: +RAlt & Up:: +e := Explorer() +path := e.Document.Folder.Self.path +if (InStr(path, "::{") = 1) + return +slash := InStr(path, "\", 0, 0) +if (slash = StrLen(path)) + slash := InStr(path, "\", 0, 0, 2) +if (slash = 0) + parent = ::{20D04FE0-3AEA-1069-A2D8-08002B30309D} ; My Computer +else + parent := SubStr(path, 1, slash) +e.Navigate(parent) +return + +LAlt & Down:: +RAlt & Down:: +path := ExplorerPath() +if (InStr(path, "::{") = 1) + return +Explorer().Navigate(path) ; go to real path of folder +return + +; Toggle hidden status + +^h:: +SSF_SHOWALLOBJECTS := 0x0001 +VarSetCapacity(SHELLSTATE, 32, 0) +DllCall("Shell32\SHGetSetSettings", "Ptr", &SHELLSTATE, "UInt", SSF_SHOWALLOBJECTS, "Int", false) +NumPut(NumGet(SHELLSTATE) ^ (1 << 0), SHELLSTATE,, "Int") +DllCall("Shell32\SHGetSetSettings", "Ptr", &SHELLSTATE, "UInt", SSF_SHOWALLOBJECTS, "Int", true) +WinGet, win, List, ahk_group Explorer +Loop, % win + PostMessage, 0x111, 41504,,, % "ahk_id " win%A_Index% ; refresh +return + +; Sort and display options + +^q::ExplorerFolderView("name") +^w::ExplorerFolderView("modified") +^e::ExplorerFolderView("type") +^t::ExplorerFolderView("created") +^g::ExplorerFolderView("groups") +^s::ExplorerFolderView("tiles") +^d::ExplorerFolderView("icons") +^+d::ExplorerFolderView("thumbnails") +^f::ExplorerFolderView("details") +^+f::ExplorerFolderView("list") + +^!q::ExplorerFolderView("name", true) +^!w::ExplorerFolderView("modified", true) +^!e::ExplorerFolderView("type", true) +^!t::ExplorerFolderView("created", true) +^!g::ExplorerFolderView("groups", true) +^!s::ExplorerFolderView("tiles", true) +^!d::ExplorerFolderView("icons", true) +^!+d::ExplorerFolderView("thumbnails", true) +^!f::ExplorerFolderView("details", true) +^!+f::ExplorerFolderView("list", true) + +#IfWinActive + +;; -> library + +ExplorerFolderView(view, children := false) +{ + if (view = "name") + n := {m: 30210, d: -1} + else if (view = "modified") + n := {m: 30213, d: -1} + else if (view = "type") + n := {m: 30212, d: -1} + else if (view = "created") + n := {m: 30214, d: -1} + else if (view = "groups") + n := {m: 30209, d: -1} + else if (view = "tiles") + n := {m: 28718, d: 6} + else if (view = "icons") + n := {m: 28713, d: 1} + else if (view = "thumbnails") + n := {m: 28717, d: 5} + else if (view = "details") + n := {m: 28716, d: 4} + else if (view = "list") + n := {m: 28715, d: 3} + + PostMessage, 0x111, % n.m, 0,, A ; change current folder + return + if (not children or m.d = -1) + return + + old := A_BatchLines + SetBatchLines, -1 + + Loop, Files, % ExplorerPath() "\*", D + { + MsgBox, % A_LoopFileFullPath + } + + SetBatchLines, % old +} -- cgit v1.2.3