Interesting comments re. interfaces.
Well ComObjType has been updated to support retrieving CLSIDs just now as luck would have it (the current version *is* v1.1.26).
ComObjType()
https://autohotkey.com/docs/commands/ComObjType.htm
[look up Shell.Application in the registry to get the CLSID]
[look up the CLSID, 13709620-C279-11CE-A49E-444553540000, which takes you to:]
Scriptable Shell Objects (Windows)
https://msdn.microsoft.com/en-us/librar ... s.85).aspx
Shell object (Windows)
https://msdn.microsoft.com/en-us/librar ... s.85).aspx
[which has a 'Windows' method, you get a ShellWindows object, which is a collection of items, each an 'InternetExplorer object that represents the Shell window', each with a 'Document' property]
Shell.Windows method (Windows)
https://msdn.microsoft.com/en-us/librar ... s.85).aspx
ShellWindows object (Windows)
https://msdn.microsoft.com/en-us/librar ... s.85).aspx
InternetExplorer object (Windows)
https://msdn.microsoft.com/en-us/librar ... s.85).aspx
Document property (Windows)
https://msdn.microsoft.com/en-us/librar ... s.85).aspx
==================================================
Object: VarType IName IID CName CLSID
- Shell: 9 IShellDispatch5 {866738B9-6CF2-4DE8-8767-F794EBE74F4E} Shell {13709620-C279-11CE-A49E-444553540000}
- Win: 9 IWebBrowser2 {D30C1661-CDAF-11D0-8A3E-00C04FC9E26E} WebBrowser {8856F961-340A-11D0-A96B-00C04FD705A2}
- Doc: 9 IShellFolderViewDual3 {29EC8E6C-46D3-411F-BAAA-611A6C9CAC66} ShellFolderView {62112AA1-EBE4-11CF-A5FB-0020AFE7292D}
- Folder: 9 Folder3 {A7AE5F64-C4D7-4D7F-9307-4D24EE54B841}
- Items: 9 FolderItems3 {EAA7C309-BBEC-49D5-821D-64D966CB667F}
Code: Select all
q:: ;get Explorer window object info
WinGet, hWnd, ID, A
WinGetClass, vWinClass, % "ahk_id " hWnd
if vWinClass not in CabinetWClass,ExploreWClass
return
oShell := ComObjCreate("Shell.Application")
for oWin in oShell.Windows
if (oWin.HWND = hWnd)
{
oDoc := oWin.Document
oFolder := oDoc.Folder
oItems := oFolder.Items
vList := "Shell,Win,Doc,Folder,Items"
vOutput := ""
Loop, Parse, vList, % ","
{
vObj := A_LoopField
vVarType := ComObjType(o%vObj%)
vIName := ComObjType(o%vObj%, "Name")
vIID := ComObjType(o%vObj%, "IID")
vCName := ComObjType(o%vObj%, "Class")
vCLSID := ComObjType(o%vObj%, "CLSID")
vOutput .= RTrim(vObj ": " vVarType " " vIName " " vIID " " vCName " " vCLSID) "`r`n"
}
}
MsgBox, % Clipboard := vOutput
return
==================================================
[EDIT:] Are these the interfaces you made reference to:
Code: Select all
eil IEnumIDList
isf IShellFolder
ifv IFolderView
isv IShellView
isb IShellBrowser
isp IServiceProvider