# aardio 范例: COM 接口 - shell 外壳



```aardio
//COM 接口 - shell 外壳
//外壳指的是操作系统与用户交互的界面，主要指资源管理器、桌面等。

import com.shell;
import process;
import sys.networkIsolation;
import console;

var shell = com.shell();//等价于 shell = com.CreateObject("Shell.Application");
/*
shell.CascadeWindows() //层叠窗口
shell.TileHorizontally(); //横向平铺窗口
shell.TileVertically(); //纵向平铺窗口
shell.MinimizeAll(); //最小化所有窗口
shell.UndoMinimizeALL(); //撤消全部最小化
*/

//获取目录对象
var folder = shell.Namespace( io.fullpath("~/config"));

//获取文件对象
var file = folder.ParseName("SYS.CFG");

/*
调用菜单命令。
菜单命令并不完全等价于菜单显示文本，而且与语言无关。
所以在中文系统上不需要改为中文字符串。
*/
file.InvokeVerb("Copy");
	
if( _WIN10_LATER ){
	for i,item in com.shell.eachApp(){ 
		console.log( item.name, item.path );
	}
	
	//获取所有应用容器,参考范例："~/examples/Windows/ListView/uwpExemption.aardio"
	var containers = sys.networkIsolation.getAppContainers() 
	
	com.shell.activateApp('Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge'
		, 'https://www.aardio.com');
	
	// 下面这样也可以打开WIN10应用	
	// process.explore("shell:appsFolder\Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge")
	
	//打开应用商店，且修复 ms-windows-store:// 协议
	com.shell.activateApp("Microsoft.WindowsStore_8wekyb3d8bbwe!App");
	
	/*
	有时候系统出现问题 ms-windows-store 协议可能用不了，下面的方法就打不开。
	但 com.shell.activateApp("Microsoft.WindowsStore_8wekyb3d8bbwe!App") 可以打开。
	而且打开一次，ms-windows-store 协议就正常了。
	*/
	//process.execute("ms-windows-store://home")
}

/***********************
实际是 shell32.dll 也提供很多与外壳操作有关的 API 函数。
aardio 已默认加载了 shell32.dll 并创建了 ::Shell32 对象。

例如调用 SHChangeNotify 刷新：
::Shell32.SHChangeNotify(0x8000000/*_SHCNE_ASSOCCHANGED*/,0,0,0);

更多函数参考：
https://learn.microsoft.com/zh-cn/windows/win32/api/shlobj_core
***********************/

```

