# aardio 范例: 临视窗口创建、销毁、激活、全屏等事件



```aardio
//临视窗口创建、销毁、激活、全屏等事件
//相关范例: https://www.aardio.com/zh-cn/docs/examples/System/Desktop/appBarMsg.html
import win.ui;
/*DSG{{*/
var winform = win.form(text="临视窗口创建、销毁、激活、全屏等事件";right=603;bottom=384)
winform.add(
edit={cls="edit";left=8;top=8;right=594;bottom=372;db=1;dl=1;dr=1;dt=1;edge=1;multiline=1;vscroll=1;z=1}
)
/*}}*/

import win.util.shellhook;
var shellhook = win.util.shellhook(winform);

shellhook.onShellHook=function(hshell,hwnd){ 

	//获取线程ID,进程ID
	var tid,pid = win.getThreadProcessId(hwnd);
	if(tid== thread.getId()){
		/*return 如果不想临视本线程在这里退出*/
	}
	
	//判断钩子拦截到的消息类型
	//https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-registershellhookwindow
    select(hshell ) {
		case 0x1/*_HSHELL_WINDOWCREATED*/ {  
			winform.edit.print( "窗口创建"+hwnd+"进程ID：" + pid + "线程ID:" +tid + '\r\n    标题:' + win.getText(hwnd) )
		}
		case 0x2/*_HSHELL_WINDOWDESTROYED*/{
			winform.edit.print( "窗口销毁"+hwnd+"进程ID：" + pid + "线程ID:" +tid  + '\r\n   标题:' + win.getText(hwnd) )
		}   
		case 0x4/*_HSHELL_WINDOWACTIVATED*/{
			winform.edit.print("窗口激活"+hwnd+"进程ID：" + pid + "线程ID:" +tid  + '\r\n   标题:' + win.getText(hwnd) )
		}
		case 0x35/*_HSHELL_FULLSCREEN_ENTERING*/{
			if(win.getForeground() ==hwnd){
				winform.edit.print("窗口全屏"+hwnd+"进程ID：" + pid + "线程ID:" +tid  + '\r\n   标题:' + win.getText(hwnd) )
			}
		}
		case 0x36/*_HSHELL_FULLSCREEN_ENTERING*/{
			if(win.getForeground() ==hwnd){
				winform.edit.print("窗口退出全屏"+hwnd+"进程ID：" + pid + "线程ID:" +tid  + '\r\n   标题:' + win.getText(hwnd) )
			}
		}  
     }	
}

winform.show();
win.loopMessage();
```

