qt web插件一种后台进程实现方式

1、main函数启动http服务

QLocalHttpServer localHttpServer;
localHttpServer.setHttpServer("127.0.0.1",nHttpServerPort);
localHttpServer.startHttpServer("127.0.0.1",nHttpServerPort);

QWebWindowManage:strSessionId管理,兼容多个tab页面的打开

MainWindow:显示窗口

2、获取浏览器中页面的窗体ID

//获取本程序的窗体
HWND windId=(HWND)pWebWindow->winId();
qDebug()<<"windId:"<<windId;

//获取最上面的窗体---浏览器窗体ID
HWND topWindId=GetForegroundWindow();
qDebug()<<"topWindId:"<<topWindId;

//获取下一级的页面窗体---浏览器中页面的窗体ID
HWND childWindId=GetNextWindow(topWindId,GW_CHILD);
qDebug()<<"childWindId:"<<childWindId;
if(childWindId != 0){
    HWND pParent=SetParent(windId,childWindId);
    if(pParent!=NULL){
        pWebWindow->setWebBrowserHwnd(topWindId,childWindId);
    }else{
        DWORD ErrorNo=GetLastError();
        qDebug()<<"GetLastError ErrorNo:"<<ErrorNo;
    }
    qDebug()<<"pParent:"<<pParent;
}

3、设置为父窗体

void MainWindow::onHandleVideoFullScreen(bool bIsFullScreen)
{

    if(pVideoFrame){
        if(bIsFullScreen){
            qDebug()<<"showFullScreen:"<<bIsFullScreen;

            //设置为父窗体---全屏时桌面窗口为父窗体
            SetParent((HWND)this->winId(),GetDesktopWindow());
            this->showFullScreen();
        }else{
            qDebug()<<"showNormal:"<<bIsFullScreen;

            //设置为父窗体---非全屏时浏览器中页面窗口为父窗体
            SetParent((HWND)this->winId(),mWebBrowserDocumentHwnd);
            this->showNormal();
        }
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值