; 将当前窗口的底部任务栏隐藏3秒后,再恢复的示例
/*
AHK帮助文档的示例搜:使用 COM 从任务栏暂时地移除活动窗口.
ITaskbarList 的 VTable 中的方法:
IUnknown:
0 QueryInterface -- 使用 ComObjQuery() 代替
1 AddRef -- 使用 ObjAddRef() 代替
2 Release -- 使用 ObjRelease() 代替
ITaskbarList:
3 HrInit
4 AddTab
5 DeleteTab
6 ActivateTab
7 SetActiveAlt
*/
IID_ITaskbarList := "{56FDF342-FD6D-11d0-958A-006097C9A090}"
CLSID_TaskbarList := "{56FDF344-FD6D-11d0-958A-006097C9A090}"
; 创建 TaskbarList 对象并把它的地址保存到 tbl.
tbl := ComObjCreate(CLSID_TaskbarList, IID_ITaskbarList)
activeHwnd := WinExist("A")
DllCall(vtable(tbl,3), "ptr", tbl) ; tbl.HrInit ()
DllCall(vtable(tbl,5), "ptr", tbl, "ptr", activeHwnd) ; tbl.DeleteTab (activeHwnd)
Sleep 3000
DllCall(vtable(tbl,4), "ptr", tbl, "ptr", activeHwnd) ; tbl.AddTab (activeHwnd)
; 非 dispatch 对象总是需要手动释放.
ObjRelease(tbl)
vtable(ptr, n) {
; NumGet(ptr+0) 返回对象的虚函数表
; (简称为 vtable) 的地址. 表达式的其余部分从
; vtable 中获取第 n 个函数的地址.
return NumGet(NumGet(ptr+0), n*A_PtrSize)
}
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。

评论(0)