- 博客(42)
- 收藏
- 关注
原创 aardio网页自动化和窗口自动化的学习
窗口自动化,无非是win、winex、mouse、key几个库配合,标准窗口就是句柄操作,非标准窗口可以使用winex.accObject,还不行就找图找色找字,扩展库里还有大漠。网页自动化用于采集、填表等任务,现在一般用Chrome,aardio提供了chrome driver和chrome driverex扩展库,支持cdp命令。
2022-12-27 12:09:55
3382
原创 aardio嵌入外部窗口(以scrcpy手机投屏窗口为例)
手机在开发者选项中打开USB调试开关,使用数据线连接到电脑,运行scrcpy.exe,就可以在电脑上查看手机屏幕,可以使用鼠标、键盘进行操作,并且提供了一系列命令行和快捷键,方便二次开发。有时候,嵌套的程序在打开瞬间来不及调整,也可以用管道调用,调整好了再显示。这里用的是设置父窗口的办法,有时候也可以用悬浮窗口。窗口样式需要改一下,位置和大小需要调一调,感觉不算复杂。嵌入外部窗口并不是一个值得推荐的开发方式,但这个方法还是要掌握,有时候可以作为应急之选。第一次使用嵌入窗口,可能理解得不透彻,欢迎指正。
2022-12-26 22:04:00
2560
2
原创 aardio简单说说API函数的返回值
同样的32个bit,你把它当成无符号整数,它就呈现为0XFFFFFFFF(4294967295),当成有符号整数,也就是负整数,它呈现为-1,其实内存里一模一样,没有变。它不会直接开始格式化,而是需要用户点击开始,所以可以放心测试。其实呀,在电脑内存里,-1和0XFFFFFFFF(4294967295)是一样的,是同样的32个bit。当然,我们也可以通过在声明api时改变定义返回值的类型,最终得到我们想要的结果。aardio调用api非常方便,可以先声明后调用,也可以不声明直接调用,并且推荐不声明。
2022-12-22 20:41:07
1253
原创 aardio提取AutoCAD DWG图形文件缩略图
昨晚和今早在群里闲逛,又学了一招:通过文件结构解析,提取dwg中的缩略图。这个不需要安装cad,用到的是文件读写操作和结构体的知识。大家有兴趣测试一下,看还有没有什么问题。
2022-12-20 14:13:14
895
原创 aardio多线程小练习
第一次使用中文变量名,感觉有方便的地方,也有不方便的地方,总体上还是不习惯这样用。aardio搞多线程是非常方便的。3.线程共享变量thread.set/get。1.线程任务分派thread.works。2.线程共享表thread.table。界面设计不是这次练习的内容,请忽略。
2022-12-19 17:12:45
1010
原创 aardio工程实例——MIDI音乐盒(源码)
1.先点击绿色区域的音符,再点击蓝色区域的时长,输入一个完整的音乐元素。如果在音符上右键单击,则输入的是带有#号的音符。midiOut库还支持更宽的音域,支持32分音符,这里主要针对通俗歌曲,所以没有考虑。前段时间,aardio增强了midiOut库相关功能,我结合这个库写了个程序,一方面自娱自乐,同时也给新接触aardio的朋友做个参考。演奏界面可以指定默认乐器,但如果乐谱中指定了乐器,则优先使用乐谱中指定的乐器。所以保存乐谱请以*.midi为后缀名,其实是个文本文件。就像 是游荡在梦中追逐的沙漠。
2022-12-19 12:20:30
1638
2
原创 aardio关于元表和订阅消息的学习
这样连续的、对象般的代码写法;通过学习和使用订阅消息,我们可以自动监测对表的操作,就像封装好的。通过学习和使用元表,我们可以实现。
2022-12-17 23:35:13
730
2
原创 aardio一个EXE文件能否在自身中保存和修改密码
在程序执行期间,程序文件被占用,是无法修改的。可以试试使用process.temp库创建临时进程。前面我已经用这个库演示了《一个EXE可执行文件,如果不用配置文件的话,能否直接在自身中保存和修改密码呢?》,这回再用它一次动态管理自身密码。注意,以上代码发布后才有效。
2022-12-17 19:06:56
758
原创 aardio从IP地址排序介绍一些基础知识
最近群里两个小伙伴都碰到了IP地址排序问题。其实这是一个比较简单的问题。同时借此介绍一些aardio基本操作。第四种方法:通过结构体操作,将ip转换为一个大整数。只是展示而已,实战没必要这么搞。第二种方法:通过数位运算,将ip转换为一个大整数。第三种方法:通过字符串操作,将ip转换为一个大整数。第一种方法:把ip分成4个整数,逐个比较。
2022-12-17 17:36:02
564
1
原创 aardio快速设置控件Z序
如果一个窗体上控件很多,设计阶段有增删修改,那么Z序会有点乱。这时候如果还想通过tab键有规矩的移动焦点,就要重设Z序。因为tab键移动焦点的顺序就是Z序。如果不想那么做,这里有一个辅助函数可以试试。由于过于简单,就不做什么说明了。手动改代码是可以的。
2022-12-14 23:55:30
539
5
原创 aardio网页元素截图(webform)
对webform整个网页或网页中的某个元素进行截图,aardio有范例,这里只是略加工了一下。现在流行webview,但是webform是基于系统自带的IE控件,还是有它的用处的。
2022-12-14 17:19:25
838
原创 aardio PDF与图片互相转换 PDFRender库
PDFRender升级!之前发的只能从PDF生成图片,现在也可以从图片生成PDF了。有群友问TIFF转PDF的问题,我试了试,这个库可以。关于PDF生成图片,之前已经演示过了,这里不再重复。有善于写库的同学,可以再帮忙优化一下。
2022-12-12 00:47:18
800
1
原创 aardio分离式控制台窗口
aardio窗口程序用到控制台的话,一个进程只能有一个控制台,而且用户点击×按钮关闭控制台,主程序也跟着关闭了。虽然控制台用到的地方不多,但是这两天也琢磨了一下,希望能够突破上面的问题。总的思路是多开进程,通过进程命令进行协调配合。上述代码用到了process(io._exepath,),需要在发布为exe后才能取到效果。正好群友也有类似的想法,想要一个控制台负责输入,一个控制台负责输出。(本程序将3个进程写在一个工程里,通过启动参数进行区别)...
2022-12-07 22:49:32
1235
2
原创 aardio工具提示控件的简单实例
中贴了部分代码,不太完整,我这里贴个完整一点的,可以直接运行。主要就是提示框随着鼠标移动,另外也有列表视图控件的一些基本用法。这是早时候回答群友问题时写的一个tooltip控件的简单实例。
2022-11-27 13:58:39
1314
1
原创 aardio字符串嵌套变量的几种解决方案
string.format以及其衍生的printf函数,可以解决大部分的字符串嵌套变量的问题。比起使用字符串连接符++进行硬连接,已经方便多了。大家都比较熟悉,这里不多介绍。除此之外,aardio还提供了其他两种方案。
2022-11-27 12:21:06
1030
原创 aardio排列组合函数扩展库试用版
aardio官方公众号介绍如何调用python时,曾经举过例子是调用py3的itertools模块的permutations函数,实现排列组合功能。当时就想,排列组合是常用数学功能,aardio本身有没有封装呢?最近也有AAR友问这个问题,干脆写一个,自己动手,丰衣足食。
2022-11-26 23:49:35
506
3
原创 aardio控件字体大小随控件缩放
aardio窗体上的控件可以在属性里设置自适应大小,或者固定边距、九宫格布局等方法,这样控件的大小就会随着窗体大小变化而自动缩放调整了。上面的算法,是分别计算宽的变化比例、高的变化比例,取其中的较小值,作为字体大小的变化比例。你也可以有自己的算法。的确,控件大小变了,字体大小不变的话,会不协调。但是并没有直接的属性、现成的函数可以设置,需要我们写一点代码。那么就有人问,控件里面的字体大小呢,也会随着缩放调整吗?程序员本来就是写代码的。
2022-11-26 15:41:54
819
原创 aardio再说函数编写的两个思路
从1乘到100,相当于把每个数先进行因数分解,然后再让这些因数彼此相乘。积的末尾有多少个0,取决于这些因数里有多少个2和5的组合。由于2是足够多的,所以这些因数里有多少个5,结果末尾就有多少个0。这样,我们只要关心每个数里有几个因数5就行了。当然,从通用性来说,第一种方法差一些,如果是1连乘到200,即使用大数运算,也出不来结果了。第一种方法好处是不用动脑筋。第二种方法好处是程序运行快。这里引入大数运算库,直接把结果求出来,然后数0。题目:从1连续乘到100,积的末尾有几个0?
2022-11-26 15:20:01
533
原创 aardio基础实例——一个简单的计算器
这是我参加aardio培训的一个小作业,留也无用,弃之可惜,贴出来,供初学者参考。里面用到了批量处理控件、模式匹配等知识点。
2022-11-26 11:38:11
1028
原创 aardio让窗体控件响应文件拖放
我们知道,aardio的窗体封装了winform.onDropFiles事件,可以很方便地响应文件拖放。但是一般的控件并没有封装这个函数。那么如何让这些控件也响应文件拖放呢?注意,在窗体和控件都响应文件拖放的情况下,控件所在区域优先由控件响应,窗体不会重复响应。但其实我们也有更好的办法,就是在控件的回调函数中去捕获WM_DROPFILES消息。简单的,我们可以伪装。仍然让窗体去接收事件,然后根据鼠标位置,判断对应哪个控件。相当于我把这个函数的源码自己折腾了一遍 ,就算是学习api了吧。
2022-11-26 11:00:29
1099
原创 再说aardio选项卡子窗口的分离与加入
之前写过一篇,是关于高级选项卡控件如何将子窗体分离出来,成为独立窗口。这次是关于标准的选项卡控件,方法大同小异。不过这次既有分离,也有加入。
2022-11-26 10:11:24
1057
原创 aardio在程序中嵌入特定字体
按照arrdio的文档,我们在资源管理器复制字体文件之后,到上点击右键粘贴文件,表面上看不到任何变化,实际上在你的里生成了一个.res文件夹,字体文件被复制到了里面。实际上,我们可以把字体文件放在任何一个地方,工程内工程外都可以,只要通过$包含符都可以嵌入进来。要想让它正常显示,除了把字体文件发送给客户进行安装之外,我们也可以把字体文件嵌入到程序中。这时,在设计视图,我们已经可以使用这个字体了,但是运行时还不能正常显示。
2022-11-12 15:29:50
640
2
原创 aardio文本框限制输入特定字符
如何限制一个文本框只能输入特定字符?一般有事前拦截、事后修正两个思路。以下代码对两个文本框各采用其中一个思路, 限制只能输入16进制字符串。如果试图输入其他字符则提示错误,不会输入。事前拦截法目前还有个问题,无法阻止右键粘贴非法字符,有待完善。
2022-11-11 22:59:52
718
2
原创 aardio二维数组去除重复项的方法探讨
形如{ {1,2},{3,5},{4,2},{1,2},......}这样的数组,如何快速去除重复项?两种方法结果一致,代表都是可行的。第一种方法快一些,但第二种方法通用一些。第一种方案:将嵌套数组转换为字符串,去除重复,再转换为表。第二种方案:将数组导入内存数据库,查询不重复值,导出为表。我对数据库不是很熟悉,第二种方法可能还能加速,欢迎讨论。第一种方法用时312ms,得到9808个不重复元素。第二种方法用时843ms,得到9808个不重复元素。
2022-11-11 21:09:18
872
原创 aardio动态管理EXE自身内嵌资源
我这里借用了aardio的process.temp库,供大家参考。一个正在运行的exe文件,能否向自身添加或者删除内嵌资源文件呢?道理显而易见,exe文件正在被占用,无法修改。
2022-11-06 16:42:49
1410
1
原创 一次弄懂aardio中的数据类型转换
byte串也叫byte数组。例如,当应用场景为字符串时,计算机就会认为byte数组中存储的值是字节码,然后按照编码规则,展现字符串。同一个byte数组,可以展现为不同的数据类型,但是展现成什么有意义,只有存储数据的人清楚。bit容量太小,于是人们将8个bit定义为一个更大的存储单元,叫做byte(翻译为字节)。1个byte可以存储2的8次方,也就是256个值,分别是0-255。byte数组与其展现的特定数据之间,是本质与现象的关系,可以互相转换。因此也可以说,计算机中的数据都是以byte串方式存储的。
2022-11-05 17:49:44
3301
1
原创 aardio从高级选项卡中分离出独立窗口
里面有一个关键点,就是必须把独立出来的窗体从选项卡容器(container)的子窗口队列中移除。因为tbs.loadform的本质是tbs.container.loadform,也就是mainform.custom.loadform。而custom控件的loadForm函数会将窗体加载为子窗口,自动维护一个子窗口队列,显示一个子窗口就会隐藏其他子窗口。如果不从这个队列中移除,就会出现,一切换选项卡,窗体就看不见了的情况。虽然它的名字带下划线,像个常量,其实可以移除其中的元素。...
2022-07-23 16:46:18
1701
1
原创 aardio内嵌资源的代码写法-以内嵌DLL为例
编写程序经常需要调用一些dll文件。大体有把dll内嵌进exe文件和不内嵌直接从硬盘调用两种方式。如果不内嵌,写起来相对简单,就写dll的绝对路径或者以exe文件为基础的相对路径就可以了。重点分析一下内嵌方式,当然这种方式其实并不局限于dll,其他文件也是类似的。(一)使用$包含操作符进行内嵌使用包含操作符就是在dll路径字符串前引号前面加上一个$符号,就可以了。编译的时候,程序会将dll以二进制方式嵌入exe。执行的时候,执行到这里,程序会从exe中提取这个二进制数据到内存,然后调用它。也就是说,程序执行
2022-07-07 01:02:32
2692
1
原创 aardio利用鼠标钩子响应文件拖动过程(三)
第51-88行是我们加的内容,其他的都是IDE的《横版导航》工程模板,没有任何改动。算是勉强实现了吧。
2022-06-25 19:42:18
593
原创 aardio利用鼠标钩子响应文件拖动过程(二)
到了这一步,再说开头提到的高级选项卡的响应,就很简单了。选项卡也是窗口,没有什么太多不同。后面我们用IDE自带的导航页面模板试一试。
2022-06-25 18:47:51
386
原创 aardio利用鼠标钩子响应文件拖动过程(一)
首先说明,这里说文件拖动过程,不是拖放过程。拖放的话,onDropFiles事件轻松搞定。拖动就是鼠标拖着文件来到窗体(或控件)上,没有放手,窗体就做出响应。比如在高级选项卡中,鼠标拖着文件来到某一选项卡上,该选项卡展开。这个问题的难点在于,当拖动文件的时候,窗体的各种事件、鼠标跟踪器win.ui.tracker全部失灵,wndproc回调函数也收不到任何消息,可以试一试。 那怎么办呢,需要用鼠标钩子mouse.hook。在钩子里,参数很多,我还不完全知道它们的用法,暂时就按照 鼠标左键按下尚未抬起这
2022-06-25 18:18:16
776
原创 aardio调试库解决局部变量的有趣问题(三)
上一篇已经弹出变量a,现在我们试着将它的定义放到后面去,看看还能不能找到?看,也是可以。再换个地方:经测试,不行,报错了。说明这种查询方法它的范围只是本层级和以上层级中。当然,除了查询,还可以修改。用到的是debug.setlocalvar(层级,索引,新值)。修改的前提是找到层级和索引,所以这两个函数要配合使用。下一步可以考虑写一个小库,让它更方便,纯属练习,没有什么实用价值。...
2022-06-16 00:52:08
481
原创 aardio调试库解决局部变量的有趣问题(二)
比如下面这种情况,并不能弹出变量a的值,但是如果改成b的话,是可以弹出的。 原因就在于层级!那么a到底在哪一层级呢?我们试着将层级改成2,仍然没有反应,不会弹出a。继续改……直到改成7,才弹出了a!可见这个层级是个难以把握的东西。这也是为什么不推荐这种方法的原因。如果是一个框架已经成型的程序,我们可以通过调试摸清我们想要的变量所在的层级,再把摸来的结果写到代码中。如果是一个还不太确定的程序,只能是遍历了,看看哪一层级有我们的变量,就来哪一层级。显然,这要求我们的要找的局部变量的名字在代码文件中必须是唯
2022-06-16 00:27:25
621
原创 aardio调试库解决局部变量的有趣问题(一)
今天群友提出了一个有趣的问题:在aardio中,如何通过局部变量的名字的字符串去引用这个变量?例如:var a =123;如何通过字符串"a"去查询乃至修改变量a的值?第一想法是eval,可是不成功。第二想法是劝告提问者,不要用局部变量,改用成员变量,然后就可以非常方便地用下标操作符[]直接引用了,比如owner["a"]。这是个不错的提议,但不是我们这里要探讨的方向。我们就是要顺着提问者的思路,看看有没有可能实现他的想法。其实,局部变量在程序中有层级、索引两个参数,类似于纵坐标、横坐标,通过这两个参数可以
2022-06-15 23:48:18
845
1
原创 aardio名字空间库的扩展方法(五)实例
前面介绍了两种方法,都需要在扩展库中导入基库。但如果我们要扩展的是内核库,这一步当然就可以省略,因为内核库是IDE自动导入的,不需要我们操心。下面以扩展table库做一个实例,我们为table库增加一个函数,功能是选出数组中数值最大的元素的索引。扩展库代码如下:将上述代码保存为aardio\lib\tableEX.aardio。调用代码如下:调用效果如下:...
2022-06-05 22:57:11
602
原创 aardio名字空间库的扩展方法(四)
前面三篇讲的是同一种扩展方法,比照类库,我们可以称之为直接继承的扩展方法。本人推荐这种方法,简单,好理解。其实,名字空间库也有“间接继承”的扩展方法,也就是利用元表继承,在此展示一下,仅作为参考。在spaceB中这样写:测试一下,能够正常调用: 这时调用的owner也是统一的,是test.spaceB。但是占用了_get元方法,所以不太推荐。...
2022-06-05 22:15:44
511
1
原创 aardio名字空间库的扩展方法(三)
通过前面的操作,我们实现了只要导入spaceB这个扩展库,就可以使用spaceA这个基库的内容,还可以使用我们自己新扩展出来的功能,目标达成。这里面有几个问题需要解释:一、我们继承基库,采用的是在扩展库里import基库的方法,这体现了import的类似嵌套的用法。我们没有采用复制粘贴基库代码的方法,因为这种复制的方法,一旦基库更新,我们的扩展库没办法自动跟进。要知道,aardio的标准库是经常更新的。import没有这方面的问题,我么继承的永远是最新的标准库。二、在扩展库里导入基库后,我们又在下面name
2022-06-05 21:53:38
860
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人