aardio 文档
aardio 范例: 临视窗口创建、销毁、激活、全屏等事件
相关范例 | 判断钩子拦截到的消息类型
//临视窗口创建、销毁、激活、全屏等事件
//相关范例: https://www.aardio.com/zh-cn/doc/example/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();
Markdown 格式