【问题标题】:How to close already open browser from application in Qt如何从 Qt 中的应用程序关闭已经打开的浏览器
【发布时间】:2012-04-04 07:45:04
【问题描述】:

我正在使用QDeskTopServices 在我的 Qt 应用程序中打开一个 URL,但是如果浏览器已经在后台打开,它不会进入前台并且在调用 QDeskTopServices 时不会执行任何操作。

如果浏览器已经在后台打开,有什么方法可以检查并关闭它?

【问题讨论】:

  • 没有这样的检查。窗口系统可能不允许将正在运行的浏览器置于前台(在 Windows 中,前台进程需要允许这样做)。如果它即使在后台也没有打开 URL,那将是一个错误。你在哪个平台上?
  • 你正在为哪个平台编码,对于 symbian,我认为你需要特殊的能力才能做到这一点。
  • @Kunal 我正在为 symbain 平台编码,我也在尝试这个链接,但它显示错误 link
  • @FrankOsterfeld 如果浏览器已经打开,我正在尝试关闭它
  • 我不确定如何关闭浏览器,但您可以通过添加 SwEvent" 功能来提升现有浏览器。TARGET.CAPABILITY += "SwEvent"

标签: qt qt4 symbian


【解决方案1】:

我找到了将浏览器放在前面的答案,但仍然需要将 URL 传递给浏览器。

#if defined(Q_WS_S60)
    TPtrC16 textPtr(reinterpret_cast<const TUint16*>(theUrl.utf16()));
    HBufC *param = HBufC::NewMaxLC(textPtr.Length());
    param->Des().Copy(_L("4 http://google.com"));

    RApaLsSession apaLsSession;
    const TUid KBrowserUid = {0x10008D39};

    TApaTaskList taskList(CEikonEnv::Static()->WsSession());
    TApaTask task = taskList.FindApp(KBrowserUid);
    if (task.Exists()){
        // Switch to existing browser instance
        task.BringToForeground();
        HBufC8* param8 = HBufC8::NewLC(param->Length());
        param8->Des().Append(*param);
        task.SendMessage(TUid::Uid(0), *param8); // UID not used
        CleanupStack::PopAndDestroy(param8);
    }
    else {
        if(!apaLsSession.Handle()) {
            User::LeaveIfError(apaLsSession.Connect());
        }
        TThreadId thread;
        User::LeaveIfError(apaLsSession.StartDocument(*param, KBrowserUid, thread));
        apaLsSession.Close();
    }

    CleanupStack::PopAndDestroy(param);
#else
    //QDesktopServices::openUrl(QUrl("http://google.com"));
#endif

如果有任何建议,请将其添加到答案中。

问题已解决,只需在您的 project.pro 文件中添加“symbian:TARGET.CAPABILITY += SwEvent”并制作已签名的应用程序。这将解决问题:)

【讨论】:

  • @Kunal 你对这个答案有什么意见吗?/
【解决方案2】:
QDesktopServices::openUrl(QUrl("http://google.com"));

使用上面的行你可以打开浏览器。并且只需在您的 project.pro 文件中添加“symbian:TARGET.CAPABILITY += SwEvent”并制作签名应用程序。

参考这个LINK

【讨论】:

    猜你喜欢
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 2014-05-29
    • 2011-12-07
    • 1970-01-01
    • 2015-08-28
    • 1970-01-01
    相关资源
    最近更新 更多