本机下测试,win10 64位,没有用自动注入方式采取手动,大漠版本3.1233,你懂得,最后一个免费版本。
手动注册方法也简单,可以写个简单的bat文件,直接新建一个.txt文本,把后缀改成bat,里面内容如下就行了。注意将bat文件和大漠的dm.dll文件放在同一目录下,这样就不用指定目录了。
注册内容,成功之后会有一个弹框显示
regsvr32 dm.dll
当然如果你已经注册过了会显示这个样子
这种情况证明是已经注册成功的,当然会如果不放心,可以先把它卸载了,再注册一遍,卸载也可以用.bat文件,内容如下
regsvr32 dm.dll /u
就是这两个命令,尤其注意,注册卸载要用管理员权限运行:
regsvr32 dm.dll = 注册
regsvr32 dm.dll /u = 卸载
然后卸载成功是这个样子
有时候写了bat,用了管理员运行也报错,那就只有使用命令行了
既然注册成功了,其它就好办了,新建一个简单的QT项目,需要在.pro文件里加入 axcontainer
QT += axcontainer
然后就可以写一个移动测试,向工程里面添加dm.h和dm.cpp文件
头文件,dm.h
#ifndef DM_H
#define DM_H
#include <QWidget>
//需要引入的头文件
#include<QDir>
#include<QProcess>
#include<QAxWidget>
#include <QCoreApplication>
#include <QDebug>
class Dm : public QWidget
{
Q_OBJECT
public:
explicit Dm(QWidget *parent = 0);
//自动注册大漠
void AutoRegCom();
//移动测试
void DmMove();
signals:
public slots:
};
#endif // DM_H
dm.cpp文件
#include "dm.h"
Dm::Dm(QWidget *parent) : QWidget(parent)
{
}
void Dm::DmMove()
{
QAxWidget *fla=new QAxWidget();
//id通过vc6.0的ole view工具查看
fla->setControl(QString::fromUtf8("{26037A0E-7CBD-4FFF-9C63-56F2D0770214}"));
QVariant i= fla->dynamicCall("MoveTo(int,int)",1,1);
if(i>0)
{
qDebug("大漠插件调用成功");
}else
{
qDebug("大漠插件调用失败");
}
}
//自动注册大漠插件
void AutoRegCom()
{
QString path;
path=QCoreApplication::applicationDirPath();//获取程序运行路径
QString cmdStr="Regsvr32"+path+"/dm.dll /s";
QProcess p(0);
p.start("cmd",QStringList()<<"/c"<<cmdStr);
p.waitForStarted(); p.waitForFinished();
}
最后mian方法里面调用一下就可以知道是否调用成功了
#include "mywidget.h"
#include <QApplication>
#include <dm.h>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//测试大漠移动
Dm dm;
dm.DmMove();
return 0;
}
鼠标能移到左上角坐标(1,1)处代表调用成功。