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, "[email protected]:"))
            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,"[email protected]:"))
            qDebug() << "Registered dock click handler";
        else
            qWarning() << "Failed to register dock click handler";
    }
}

时间: 2024-10-29 19:09:45

mac监听Dock激活程序的相关文章

如何监听第三方应用程序(SOAP or RESTful 客户端)访问HTTPS网站时的数据?

随着互联网的应用越来越多,在我们的日常开发和调试当中(比如调试SOAP和RESTFul的时候),我们常常需要访问用第三方的工具访问HTTPS的网站,为了简化描述,本文使用IE浏览器访问Google 提供的https://www.googleapis.com/discovery/v1/apis RESTful服务为例,注意这个是基于https协议的访问,如果用第三方的嗅探工具,比如wiresharp,即使我们能把http的数据包抓到,显示出来的内容也是乱码,因为传送的内容经过了加密,而加密的私钥就

分享:50行代码监听watch小程序的globalData

监听方法: 1 // 在任何组件.页面,例如页面 2 3 const app = getApp( ); 4 5 Page({ 6 7 onLoad: function( ) { 8 app.watch$('role', ( val, old ) => { 9 console.log( old, val ); // 此处输出 1, 2 10 }) 11 }, 12 13 }); 使用方法(触发watch): 1 // 在任何组件.页面,例如页面 2 3 const app = getApp( );

查看windows系统中监听端口的程序

netstat -aon | findstr 80Proto Local Address Foreign Address State PID==== ============ ============== ========== ======TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 1688可以看出80端口被进程号为1688的程序占用.tasklist | findstr 1688图像名 PID 会话名 会话# 内存使用=========================

一个基于Socket的http请求监听程序实现

首先来看以下我们的需求: 用java编写一个监听程序,监听指定的端口,通过浏览器如http://localhost:7777来访问时,可以把请求到的内容记录下来,记录可以存文件,sqlit,mysql数据库,然后把接受到的信息在浏览器中显示出来 要点: Socket,线程,数据库,IO操作,观察者模式 来看下我们如何来设计这个小系统,这个系统包含三部分的内容,一个是监听端口,二是记录日志,三是数据回显,端口监听第一想到的就是Socket编程了,数据回显也是一样的,无非是把当前请求客户端的sock

好记性不如烂笔头40-javaWeb应用中HttpSession域的监听(4)

JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext, HttpSession和 ServletRequest等域对象的创建与销毁事件,以及监听这些域对象中的属性发生修改的事件. HttpSessionListener 接口用于监听HttpSession对象的创建和销毁 创建一个Session时, sessionCreated (HttpSessionEvent se): 销毁一个Session时, sessionDestroy

好记性不如烂笔头41-javaWeb应用中ServletRequest域的监听(5)

JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext, HttpSession和 ServletRequest等域对象的创建与销毁事件,以及监听这些域对象中的属性发生修改的事件. ServletRequestListener接口用于监听ServletRequest 对象的创建和销毁 Request对象被创建时,requestInitialized(ServletRequestEvent sre)方法将会被调用 Request对象

linux设置预留端口号,防止监听端口被占用 ip_local_reserved_ports

1. 背景 linux服务器启动时,会对指定的端口进行监听bind,如果同一个机器上这个端口已经被使用,则监听失败,程序无法启动. linux客户端连接服务器accept时,系统会分配本地临时端口用于网络连接. 目前是"大混部"的时代,一台物理机可能会部署多个服务,如果端口号设置不好,很可能会出现端口被其他程序占用的情况. 2. 解决方法 针对我的linux机器看看 本地临时端口配置(2个数: start, end) cat /proc/sys/net/ipv4/ip_local_po

用携程来启动一个监听程序

1.启动携程 监听空格键 一旦空格键按下 就运行程序 然后携程结束 1 void Start() 2 { 3 StartCoroutine(测试携程()); 4 5 } 6 7 8 9 IEnumerator 测试携程() 10 { 11 Debug.Log("携程被激活了"); 12 13 while(!Input.GetKeyDown(KeyCode.Space)) //监听到一个事件 就结束携程 14 yield return null; 15 16 Debug.Log(&quo

【Android】使用Intent调用系统其它程序,使用onKeyDown对音量键的监听,长按事件

Intent在安卓编程中非常常见,在<[Android]多个Activity之间利用bundle传递数值>(点击打开链接)中已经展示了它可以唤醒其它Activity并在Activity之间传递数据.其实Intent的作用远非于此,它还可以调用系统中其它固有程序,比如拨打电话.发送短信等.onKeyDown也是如此,不仅仅可以对设备的菜单键进行监听,这在<[Android]各式各样的弹出框与对菜单键.返回键的监听>(点击打开链接)中已经展示过的,对设备的音量调节键也是可以监听的, 下