1. 程式人生 > >【Qt】使用WebBrowser並呼叫網頁中的JS函式

【Qt】使用WebBrowser並呼叫網頁中的JS函式

在介面上拖入QAxWidget,注意這裡不建議直接在UI設計介面指定控制元件,否則可能引起QtCreator崩潰

建議在程式碼中動態設定,如:

ui->axWidget->setControl("Shell.Explorer");
ui->axWidget->dynamicCall("Navigate(QString)", "C:/1.html");
當然,上面的"C:/1.html"是我測試的頁面

這裡的辦法是通過IHTMLWindow2介面的execScript方法執行JavaScript函式。可惜的是這個方法不支援函式返回值

#include <MsHTML.h>

{
    QAxObject *document = ui->axWidget->querySubObject("Document");
    IHTMLDocument2 *doc2;
    document->queryInterface(QUuid(IID_IHTMLDocument2), (void**)&doc2);
    if (doc2)
    {
        IHTMLWindow2 *win2 = nullptr;
        if (doc2->get_parentWindow(&win2) == S_OK)
        {
            BSTR s1 = SysAllocString(L"Test()");
            BSTR s2 = SysAllocString(L"JavaScript");
            VARIANT ret;
            win2->execScript(s1, s2, &ret);
            SysFreeString(s2);
            SysFreeString(s1);
        }
    }
}

JavaScript函式如下

<script language="javascript" type="text/javascript">
function Test()
{
    alert("你呼叫了全域性函式Test");
}
</script>

相關推薦

Qt使用WebBrowser呼叫網頁JS函式

在介面上拖入QAxWidget,注意這裡不建議直接在UI設計介面指定控制元件,否則可能引起QtCreator崩潰 建議在程式碼中動態設定,如: ui->axWidget->setControl("Shell.Explorer"); ui->axWidge

關於Python查詢庫函式方式

首先開啟命令列輸入: python -m pydoc -p 1234ython -m pydoc表示開啟pydoc模組,這個模組就是用來檢視python文件的工具-p 1234表示在埠號1234上開啟server,這個埠號可以自行設定原文地址:https://blog.csd

vs2010新增OCX控制元件呼叫OCX函式

第一種方法: 在會話框上右鍵選擇插入ActiveX控制元件 然後在你的控制元件上右鍵選擇新增變數,輸入變數名,比如m_ocx1,然後就可以用這個變數呼叫你OCX裡的函數了,例如:m_ocx1.init(); 第二種方法: 在工具箱裡右鍵點選選擇項,

網頁JS函式自動執行的方法

網頁中JS函式自動執行的三種方法 實現網頁中的圖片輪播要求: 在頁面中顯示一組圖片,預設顯示第一張,每隔n秒換一張圖片 在body標籤中使用onload<body onload="meth

QTQT的學習:在QT如何呼叫ROS庫

舉例:目前正在QT開發介面等,但是需要用到ROS的訂閱釋出機制,訂閱別的ROS模組的topic. (3)特別重要,否則編譯不過: 配置qt的啟動檔案。需要在qt啟動時載入ros的環境變數 sudo gedit ~/.local/share/application

Linux命令寫在檔案呼叫awk -f

我們在使用awk命令的時候,有時候命令特別長,在終端寫出來格式太亂,難以閱讀,以下是一個將命令寫在檔案中,並使用awk呼叫的具體案例 1.現在有檔案file3.txt,內容如下: 2.ak2.awk指令碼 #列印標題並格式化打印出數量合計 BEGIN { FS="\t" #設定欄位分割符

QTQt項目開發遇到的問題的總結

文件夾 edi mes ring detached roc ebo 使用 detach 1. QMessageBox中文亂碼   這裏的中文亂碼是指只有QMessageBox才出現中文亂碼,其他都可以正常使用的情況。有些博客中提到使用QString::fromUtf8()函

QTQT的學習:在QML使用AJAX向某伺服器傳送請求獲取資料

(1)準備Ajax.js // GET function get(url, success, failure) { var xhr = new XMLHttpRequest; xhr.open("GET", url); xhr.onreadyst

舊文章搬運獲取修改PEB的映像路徑,命令列和當前目錄

原文發表於百度空間,2008-7-24 當時對UNICODE_STRING的使用還有點問題,導致最終效果圖中字串被截斷了========================================================================== 先從分析PEB開始吧.感覺分析這個東

120TensorFlow 從CSV檔案讀取資料訓練線性迴歸模型(面向新手)

正文開始。 學習 TensorFlow 讓我的思維發生了變化。 計算機本質上是一種數學的工具,而我在學習程式設計的時候,思維也不可避免地收到了影響。傳統的程式設計思想,常常認為程式就應該像數學定理或者數學函式一樣,給出一個確定的結果。這是一種基於邏輯推導

QT如何將QFileDialog對話方塊的英文內容轉化為中文

如何將QFileDialog對話方塊中的英文內容轉化為中文 在QT安裝目錄中找到相應的.qm檔案,如/usr/local/Trolltech/Qt-4.8.7/translations/qt_zh_CN.qm 在程式的入口函數出增加如下程式碼 #include &

shell對指定資料夾檔案進行過濾,修改檔案內容的shell指令碼

編寫shell指令碼,對某個資料夾內搜尋指定檔案並對檔案內容進行更改: 在桌面建立shell_test資料夾  進入shell_test資料夾,建立5個測試檔案 在shell_test資料夾中再建立一個666資料夾,繼續再建立5個檔案,如圖: 分

git在git遠端倉庫建立一個新專案把原生代碼提交上去

一、確保你有管理員許可權。 如果你還不是管理員,請讓當前管理員編輯gitosis-admin專案下的gitosis.conf檔案,在[group gitosis-admin]下的members行裡新增你的名字。 二、把gitosis-admin專案clone下來 三、現

爬蟲Scrapy 爬取excel500個網址首頁,使用Selenium模仿使用者瀏覽器訪問,將網頁title、url、文字內容組成的item儲存至json檔案

建立含有網址首頁的excel檔案 host_tag_網站名稱_主域名_子域名.xlsx 編輯讀取excel檔案的工具類專案FileUtils 新建專案FileUtils 編輯file_utils.py # -*- coding: utf-8 -*- """

QTQT的學習:qml使用listmode、listview實現選項的變換操作,類似qwidgetlistwidget的作用。

(1)方法一:點選某一選項,某一個選項的顏色就立即會發生變化 ListView { id : m_listView anchors.fill: parent anchors.margins: 20 clip: true model: ["A","B","C","D","E"

QTQT的單選框和複選框的使用

QT中的複選框和單選框的使用跟MFC中的相同控制元件的使用是有所不同的,QT中的控制元件的使用涵蓋了更加高階的功能。 MFC中可以通過組這個功能手動的把多個控制元件組合在一起,而QT中是不能如此簡單的做到這個功能的,需要建組。 建組的方式如下: 在.h檔案

淺談一個網頁打開的全過程(涉及DNS、CDN、Nginx負載均衡等)

位置 filters 產生 多種方法 tps windows cnblogs 這就是 廣東 1、概要   從用戶在瀏覽器輸入域名開始,到web頁面加載完畢,這是一個說復雜不復雜,說簡單不簡單的過程,下文暫且把這個過程稱作網頁加載過程。下面我將依靠自己的經驗,總結一下整個過程

譯文怎樣在R語言使用SQL命令

bow all label 數據科學 eid tex 鏈接 方法 params 【譯文】怎樣在R語言中使用SQL命令 作者 Fisseha Berhane 對於有SQL背景的R語言學習者而言。sqldf是一個很實用的包,由於它使我們能在R

Java_SSM(四)Eclipse通過maven引入jar包

osc ati eight wid -- stat ack ips 技術 這篇博文我們介紹一下如何通過eclipse配置setting並引入jar包 (1)eclipse:Window--Preferences--Maven--User Setting 全部完成

QtStackedWidget

-m sni rac fill http 距離 etc con 新建 一個簡單的堆棧窗體類: 左側列表框會出現不同的選項,右側顯示所選的不同的窗口 #include<QHBoxLayout> #include "stackdlg.h