谢谢大家的回复
1
x86 2023-10-21 11:09:33 +08:00
按键精灵简单粗暴
|
2
ysc3839 2023-10-21 11:52:37 +08:00 via Android 1
看上去是很标准的 Win32 控件,应该不难。主要难点大概是获取第一步 ListView 中项目的文字,应该是得在目标进程中分配内存。
大致步骤是: 找到左侧窗口的句柄。 找到 ListView 的句柄。 在目标进程分配内存 (VirtualAllocEx),发送消息读取项目名称到刚分配的内存中 (LVM_GETITEMTEXT),读取内存数据到自己进程中 (ReadProcessMemory),释放内存 (VirtualFreeEx)。找到对应条目,发送消息直接选中 (LVM_SETITEMSTATE)。 找到 2 按钮的句柄,发送消息模拟点击。 找到右侧窗口的句柄。 找到 3ComboBox 的句柄。发送消息选中包含指定文字的项目 (CB_SELECTSTRING ,大概也需要像上面那样分配内存)。 找到 4 标签的句柄,读取文本。 查找顶级窗口句柄可以用 FindWindow ,传入标题和类名即可,类名可以用 Spy++查看。 查找子控件句柄的话,一般子控件都会编号的,可以用 GetDlgItem 获取,编号可以用 Spy++查看。有编号的话,按钮大概也不需要模拟点击了,可以给父窗口发 WM_COMMAND 直接触发操作。 |
3
ysc3839 2023-10-21 11:53:45 +08:00 via Android
不太建议用 Golang/Python ,因为系统 API 以及相关常量需要自己声明,用 C++写非常简单快捷。
|
6
ShineyWang 2023-10-21 12:22:49 +08:00 via Android 1
不妨试试 powerautomate
微软出品,原生控件应该能直接识别 |
7
lonewolfakela 2023-10-21 12:24:03 +08:00 1
如果真的是 c# winform 的话,应该考虑能不能用反编译器直接把源码弄出来。如果工具本身没有特地做代码混淆的话,反编译出来的代码质量应该相当好,可以直接用。
|
8
imicksoft 2023-10-21 12:31:47 +08:00 1
下载一个彗星助手,抓取一下那些界面控件,如果能单独抓取到,用易或 aardio 开发一个模拟操作软件就行了。
|
9
ysc3839 2023-10-21 13:33:27 +08:00 via Android
@daiv 不接单,但如果你能提供相关信息(如窗口类名、控件 ID)的话,我可以免费写一些 C++的代码片段
|
10
akira 2023-10-21 13:50:25 +08:00 1
识别和点击 操作这些都不难,都是标准的 windows 跨进程操作,用键盘鼠标模拟或者消息模拟都可以。
但是看到你似乎是涉及到硬件啥的,这种涉及到的逻辑情况就很麻烦了。 |
11
404neko 2023-10-21 14:15:12 +08:00 2
|
12
ysc3839 2023-10-21 14:36:10 +08:00 via Android
另外我想问一下原始需求是什么?只是为了自动调整打印方向和获取固件版本吗?
去查了一下,这个打印机可以用 ZPL 命令进行控制,也许可以直接控制,不需要通过操作配置软件的方式? |
13
daiv OP @lonewolfakela 反编译这条路, 平时不玩这个, 时间成本有点高吧
@imicksoft 晚点我试试彗星助手, 看起来应该能用得上. @akira 不会涉及到硬件部分, 是原有这套软件会去控制硬件, 我这次只是去尝试控制这个软件界面 @404neko 看来大家有一个关注点都是 标准控件, 那我先要看看 目标窗口是不是都用标准控件了. (看到你还下载了 zebra 的软件来尝试, 谢谢, 其实我只是用 zebra 来做 demo ) @ysc3839 #12 截图的 zebra 的软件截图是为了 演示, 不是目标软件. |
15
lonewolfakela 2023-10-21 16:10:19 +08:00 1
|
16
daiv OP @lonewolfakela #15 .Net 不熟悉, 如果可以导出, 难道直接改源码?
|
17
forgottencoast 2023-10-21 17:26:42 +08:00 1
|
18
lonewolfakela 2023-10-21 21:48:34 +08:00 1
@daiv #16 如果发现它的源码不复杂的话直接改源码也可以。
|
20
R0n1n 2023-10-22 09:30:01 +08:00 via Android 1
标准 Win 窗体控件,AutoIt3 很适合干这种事
|
22
daiv OP |