zoukankan      html  css  js  c++  java
  • mac监听Dock激活程序

    mac监听Dock激活程序

    涉及库添加:

    LIBS += -framework CoreFoundation -framework Carbon -lobjc

    涉及头文件:

    #include <objc/objc.h>
    #include <objc/message.h>

    监听回调函数:

    bool dockClickHandler(id self,SEL _cmd,...)
    {
        Q_UNUSED(self)
        Q_UNUSED(_cmd)
        (QMainWindow *)mainWindow->OnHandleClickDock();
        return true;
    }

    主程序监听:

    Class cls = objc_getClass("NSApplication");
    objc_object *appInst = objc_msgSend((objc_object*)cls, sel_registerName("sharedApplication"));
    
    if(appInst != NULL) 
    {
        objc_object* delegate = objc_msgSend(appInst, sel_registerName("delegate"));
        Class delClass = (Class)objc_msgSend(delegate, sel_registerName("class"));
        SEL shouldHandle = sel_registerName("applicationShouldHandleReopen:hasVisibleWindows:");
        if (class_getInstanceMethod(delClass, shouldHandle)) 
        {
            if (class_replaceMethod(delClass, shouldHandle, (IMP)dockClickHandler, "B@:"))
                qDebug() << "Registered dock click handler (replaced original method)";
            else
                qWarning() << "Failed to replace method for dock click handler";
        }
        else 
        {
            if (class_addMethod(delClass, shouldHandle, (IMP)dockClickHandler,"B@:"))
                qDebug() << "Registered dock click handler";
            else
                qWarning() << "Failed to register dock click handler";
        }
    }
  • 相关阅读:
    Oracle Spool详解
    转自云界漫步:同步容灾100公里的限制来自哪里
    中国十大基金公司排行榜
    DataGuard体系结构
    SWIFT国际资金清算系统
    linux -- 命令大全
    bootstrap -- css -- 图片
    bootstrap -- css -- 按钮
    bootstrap -- css -- 表单控件
    bootstrap -- css -- 表单
  • 原文地址:https://www.cnblogs.com/sz-leez/p/4769058.html
Copyright © 2011-2022 走看看