//shell 外壳接口 import com; import com.interface.IApplicationActivationManager; namespace com; class shell{ ctor(){ return ..com.CreateObject("Shell.Application"); }; } namespace shell; eachApp = function(){ var shell = ..com.CreateObject("Shell.Application") if(!_WIN10_LATER){ return function(){} } return ..com.each( shell.NameSpace("shell:::{4234d49b-0245-4df3-b780-3893943456e1}"/*Shell:AppsFolder*/).Items() ) } findApp = function(name,path){ for i,item in eachApp(){ if( (name && ..string.find(item.name,name)) || (path && ..string.find(item.path,path)) ) { return item; } } } findActivateApp = function(name,path,arguments,options){ var item = findApp(name,path); if(item) activateApp(item.Path,arguments,options); } activateApp = function(aumid,arguments,options){ if(_WIN10_LATER){ if(!..string.indexOf(aumid,"!")){ var app = findApp(,"@"+aumid); aumid = app ? app.path : aumid + "!App" } var mgr = ..com.interface.IApplicationActivationManager.Create() var hr,pid = mgr.ActivateApplication(aumid,arguments:"",options:0/*_AO_NONE*/, 0); if( (hr)>=0/*_SUCCEEDED*/){ return pid; } } } eachWindow = function(){ var shell = ..com.CreateObject("Shell.Application") return ..com.each(shell.Windows) } /**intellisense() com.shell() = 返回 ..com.CreateObject("Shell.Application") 创建的对象\n!stdComShell. com.shell.activateApp(.(aumid,arguments,options) = 打开 APP 应用。\n参数@1 指定 Application User Model ID。\n如果参数 @1 不含感叹号,则自动查找并添加合适的应用程序 ID。\n\ncom.shell.eachApp 可以获取 应用的 AUMID,\n也可以将应用拖到桌面上,然后打开快捷方式的属性在taget中查看,\n参数 @2,@3 为可选参数。 com.shell.eachApp = @for i,item in com.shell.eachApp(){ console.log( item.name,item.path );__/*遍历WIN10 appsFolder目录下安装的应用\nitem.path 是应用的 AUMID 或者原生程序路径*/ } com.shell.findActivateApp(.(name,path,arguments,options) = 查找指定的 APP,打开 APP 应用。\n可用 @name 指定应用名搜索关键字,\n或用 @path 指定应用路径搜索关键字。\n参数支持模式匹配语法。\n参数 @3,@4 为可选参数。 com.shell.findApp(.(name,path) = 查找指定的 APP 是否安装。\n成功则返回对象的 name 字段为应用名,path 字段为应用路径。\n失败返回 null 。\n\n可用 @name 指定应用名搜索关键字,\n或用 @path 指定应用路径搜索关键字。\n参数支持模式匹配语法 com.shell.eachWindow() = @for i,shWnd in com.shell.eachWindow(){\n var typeName = com.GetTypeInfo(shWnd.document).GetDocumentation().name;\n if(typeName=="IShellFolderViewDual3" || typeName=="IShellFolderViewDual2"){\n var items = shWnd.document.SelectedItems();\n for index,item in com.each(items) {\n console.log(item.Path,shWnd.HWND);__/*资源管理器被选中的文件路径与所在窗口句柄*/\n } \n } \n}\n!comShellWnd. com.shell.eachApp() = !comShellAppItem. !comShellAppItem.name = 应用名称 !comShellAppItem.path = 应用路径 !comShellWnd.document = 文档对象 !stdComShell.CascadeWindows() = 层叠窗口 !stdComShell.ileHorizontally() = 横向平铺窗口 !stdComShell.TileVertically() = 纵向平铺窗口 !stdComShell.MinimizeAll() = 最小化所有窗口 !stdComShell.UndoMinimizeALL() = 撤消全部最小化 !stdComShell.ControlPanelItem("__.cpl") = 打开控制面板指定项目\n也可以改用 raw.execute("control.exe","__.cpl") !stdComShell.MinimizeAll() = 最小化所有窗口 !stdComShell.SetTime() = 打开日期时间设置 !stdComShell.NameSpace("__") = 打开指定的目录对象。\n也可以指定 _CSIDL_ 前缀的数值常量,例如 `0xA/*_CSIDL_BITBUCKET*/` !stdComShell.NameSpace() = !comShellFolder. !comShellFolder.ParentFolder = 父目录\n!comShellFolder. !comShellFolder.MoveHere(__) = 移动文件到当前目录。\n参数 @1 可以指定源文件路径。\n参数 @2 可选指定 _FOF_ 前缀的常量数值(多个值用 | 组合) !comShellFolder.CopyHere(__) = 复制文件到当前目录。\n参数 @1 可以指定源文件路径。\n参数 @2 可选指定 _FOF_ 前缀的常量数值(多个值用 | 组合) !comShellFolder.InvokeVerb("Copy__") = 调用菜单命令\n菜单命令并不完全等价于菜单显示文本,而且与语言无关。\n所以在中文系统上不需要改为中文字符串。 !comShellFolder.ParseName("__") = 返回指定的文件或目录,参数指定文件名 !comShellFolder.ParseName() = !comShellFolder.P !comShellFolder.InvokeVerb("Copy__") = 调用菜单命令\n菜单命令并不完全等价于菜单显示文本,而且与语言无关。\n所以在中文系统上不需要改为中文字符串。 !comShellFolder.Items() = 返回子项目集合。\n返回值可用 com.each 遍历。 end intellisense**/