当前位置: 首页 > news >正文

怎么提高网站权重舆情监测软件

怎么提高网站权重,舆情监测软件,网络推广100种方法网络推广渠道有哪些,腾讯云网站备案不能用阿里云C/Qt 集成 AutoHotkey 前言AutoHotkey 介绍 方案一:子进程启动编写AutoHotkey脚本准备 AutoHotkey 运行环境编写 C/Qt 代码 方案二:显式动态链接方案探索编译动态链接库集成到C工程关于AutoHotkeyDll.dll中的函数原型 总结 前言 上一篇介绍了AutoHotkey…

C++/Qt 集成 AutoHotkey

    • 前言
      • AutoHotkey 介绍
    • 方案一:子进程启动
      • 编写AutoHotkey脚本
      • 准备 AutoHotkey 运行环境
      • 编写 C++/Qt 代码
    • 方案二:显式动态链接
      • 方案探索
      • 编译动态链接库
      • 集成到C++工程
      • 关于AutoHotkeyDll.dll中的函数原型
    • 总结

前言

上一篇介绍了AutoHotkey的基本情况和使用,其功能丰富易用,于是搬出我们的老朋友 C++/Qt,将AutoHotkey 集成到 C++/Qt开发环境,使其为我们所用。

AutoHotkey 介绍

上一篇链接: C++ AutoHotkey 开源项目介绍

 

方案一:子进程启动

上一篇我们介绍了AutoHotkey可以通过命令行启动,于是自然而然的想到了在我们的工程中使用命令行启动AutoHotkey脚本;

 

编写AutoHotkey脚本

编写一个简单的ahk脚本,如:

MsgBox "hello world!"

 

准备 AutoHotkey 运行环境

为了方便测试,将需要的依赖和ahk脚本放在了同一路径下,如图:

在这里插入图片描述
 

编写 C++/Qt 代码

创建一个Qt命令行工程用于集成测试,编写代码如下:

#include <QCoreApplication>
#include <QProcess>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);auto executeTerminalCommand = [=](const QString &command){QProcess process;process.start("cmd", QStringList() << "/c" << command);process.waitForStarted();process.waitForFinished();QString error = QString::fromLocal8Bit( process.readAllStandardError());if(!error.isEmpty()){qDebug() << "error:" + error;}QString result = QString::fromLocal8Bit( process.readAllStandardOutput() );return result;};executeTerminalCommand("D:/test/AutoHotkey.exe D:/test/hello.ahk");return a.exec();
}

以上代码使用QProcess启动cmd,命令行启动了ahk脚本,运行结果如图:
在这里插入图片描述

这种方式简单易用,没什么心智负担,但如果你的软件需要分发给其他用户使用,你就必须要打包AutoHotkey.exe 和ahk脚本文件,一眼就被别人看穿的感觉并不愉快,于是我们继续探索其它方案。

 

方案二:显式动态链接

方案探索

在AutoHotkey项目的README中,看到如下内容:
在这里插入图片描述
字面意思不太易于理解,进入 README-LIB.md 链接中继续寻找,发现其并不是所预期的编译为动态库供其它软件链接,而是在ahk中启用另一个ahk以在V2版本的ahk中启用V1版本功能等等,但文档中发现了有趣的线索:
在这里插入图片描述
进入 HotKeyIt/ahkdll 链接,查看项目简介:
在这里插入图片描述
说明了“为其它编程语言、脚本语言打开了AutoHotkey的世界”,正是我们的需求,话不多说,开始验证;

 

编译动态链接库

下载ahkdll源码到本地,解压后如图:
在这里插入图片描述
可以看出是visual studio的工程,不折腾直接使用vs构建;vs打开工程文件(这里我使用的是vs2019),配置切换为releaseDll、x64,右键AutoHotkey项目,点击生成:

在这里插入图片描述
在这里插入图片描述

在项目的bin/x64w 下,找到了AutoHotkeyDLL.dll:
在这里插入图片描述
 

集成到C++工程

妥善安置 AutoHotkeyDll.dll,编写代码如下(注意动态库路径):

#include <Windows.h>
#include <winuser.h>
#include <iostream>
#include <libloaderapi.h>
#include <comdef.h>using namespace std;LPTSTR strToLPTSTR(string str)
{_bstr_t bstr(str.c_str());return (LPTSTR)bstr;
}int main()
{typedef BOOL (*AhkReady)(void);typedef BOOL (*AhkExec)(LPTSTR script);typedef UINT_PTR (*AhkDll)(LPTSTR script,LPTSTR p1,LPTSTR p2);HINSTANCE handle = LoadLibrary(L"D:\\test\\AutoHotkeyDLL.dll");AhkDll ahkdll = (AhkDll)GetProcAddress(handle, "ahkdll");AhkReady ahkReady = (AhkReady)GetProcAddress(handle, "ahkReady");AhkExec ahkExec = (AhkExec)GetProcAddress(handle, "ahkExec");LPTSTR empty = strToLPTSTR("");ahkdll(empty, empty, empty);ahkReady();string script = "MsgBox \"hello world!\"";ahkExec(strToLPTSTR(script));return 0 ;
}

以上代码显式链接AutoHotkeyDll.dll,定义函数指针调用函数,在程序中以字符串的形式运行ahk脚本,运行结果如图:
在这里插入图片描述
 

关于AutoHotkeyDll.dll中的函数原型

函数原型来自于 ahkdll 项目中 source 文件夹下的 exports.h,如 ahkExec 函数:
在这里插入图片描述

 

总结

两种方案都可方便的将AutoHotkey集成到其它编程语言中,命令行启动、显式动态链接并不是 c++ 或 Qt 的特性,利用AutoHotkey丰富易用的功能及多年积累下的生态,我们可以开发出更多有用的功能。

http://www.hkea.cn/news/898623/

相关文章:

  • 动漫制作专业的高职实训室福州整站优化
  • 织梦商城网站模板免费下载怎么在网上做推广
  • asp做网站用什么写脚本温岭网络推广
  • 怎么建设外贸网站免费发seo外链平台
  • 郴州是几线城市武汉网站seo推广公司
  • 网站开发工程师求职信焊工培训内容
  • 铜陵公司做网站中国网站排名100
  • 我要建一个网站泰州百度公司代理商
  • php响应式网站模板vi设计公司
  • 随身wifi网站设置广告投放是做什么的
  • 中企动力做网站的优势网络销售平台有哪些软件
  • 网站建设的费用如何查看百度搜索指数
  • 自己做网站需要什么seo的基本步骤
  • 视频直播app开发网站南京最新消息今天
  • 溧阳手机网站哪里做万网域名注册官网查询
  • 网站维护收费推广产品吸引人的句子
  • 怎么用一个主机做多个网站许昌网络推广公司
  • 网站域名所有权郑州网站运营专业乐云seo
  • 桂园精品网站建设费用网站seo查询站长之家
  • 安卓手机怎么做网站站长工具seo综合查询广告
  • 余姚网站建设的公司手机百度账号申请注册
  • 预付网站制作费怎么做凭证如何自制网站
  • 定制网站多少钱北京seo网站管理
  • 南昌做网站公司哪家好如何建立独立网站
  • 成都解放号网站建设什么是百度竞价
  • 网站优化的基本思想与原则百度号码
  • 沧州网站建设制作设计优化深圳seo优化推广
  • 建立一个网站需要什么技术网上培训机构
  • 网站设计与管理论文百度账号注册平台
  • 网站空间商推荐seo是什么职位缩写