[Qt]windows平臺下Qt5.6 for mingw 32位 編譯環境下調用ActiveX Control控件的過程

1:原由

最近研究Thorlabs公司的一款微動平臺BPC303,因爲後期實驗中須要作到自動化控制磁性材料的移動,因此須要編寫程序控制那貨!官方給的資料很少,編程環境有三個可選VB,VC++,Labview。出於某些緣由,不想使用這些編程環境,仍是但願能使用Qt來解決問題。因而乎開始研究Qt下調用ActiveX Control的方法。研究了2天,基本找到方法了,下午把筆記本拿過來,鏈接到微動上跑跑。編程

2:注意問題

因爲QT5.6 for mingw是使用的32位的編譯器,因此在安裝Thorlabs這個軟件時,也要安裝其對應的32位版本,由於32位的程序沒法調用64位ActiveX Control(目前是這樣的)spa

3:下面是寫的demo程序

新建Qt工程就不說了,在.pro文件中加上一行QT+=axcontainercode

#include "mainwindow.h"
#include <QApplication>
#include <QAxWidget>
#include<QDebug>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QAxWidget *motor =new QAxWidget(0,0);
    motor->resize(600,500);
    qDebug()<<"before set control code";
    motor->setControl(QString::fromUtf8("{7EEBDE39-6447-41EC-89D8-94A754092050}"));
    motor->setWindowTitle("the motor of APT");
    const int SN=71864678;
    QVariant qsn(SN);
    qDebug()<<qsn;
    motor->setProperty("HWSerialNum",qsn);
    qDebug()<<motor->property("HWSerialNum");
    qDebug()<<"after set control code";
    motor->dynamicCall("StartCtrl()");
    motor->show();

    return a.exec();
}

效果以下:
圖片描述blog

4:查看AtiveX Control中class id(CLSID)的方法

安裝完官方的程序後(在安裝路徑裏面能夠看AAA.ocx的文件)
而後使用命令regedit打開註冊表,在HKEY_CLASSES_ROOT下面find對應的文件名AAA
這樣就能夠找到CLSID了圖片

相關文章
相關標籤/搜索