1
dsp2138 2015-11-22 11:00:47 +08:00 1
aauto
|
2
mathgl 2015-11-22 12:39:07 +08:00 via Android 1
以前用 autoit 做过一个外单,感觉比 autohotkey 好用。
|
3
joshz 2015-11-22 13:48:26 +08:00 1
语言设计上明显 autoit 更好,不过 ahk 更普及,脚本更好找,目前加入了 OO ,能力不相上下了。 ahk 开源,还有一些黑科技,比如使用单个 modifier 键控制。总体还是看个人喜好, pyautogui 我没用过,不了解。
|
4
g00001 2015-11-22 19:51:23 +08:00
autoit ,以及基于 autoit 山寨出来的 ahk ,一个最主要的功能就是模拟操作控制外部的句柄窗口十几个函数(这两软件曾经为了这十几个函数的所有权打的不可开交),不过现在 direct ui 流行,基本都是无句柄窗口了,这种模拟按键的软件有些过时了。
说到 autoit 的语言设计,真是不敢恭维, 简单的一个调用 WINAPI 的代码,用 aardio( aauto ) 写只要一句。 var tm = time() //创建 SYSTEMTIME var filetime = ::FILETIME() //创建 FILETIME ::Kernel32.SystemTimeToFileTime(tm,filetime) //调用 API 函数 改成 autoit 来写吧,比写命令行还麻烦: ------------------------------------------------------------------ $SYSTEMTIME = DllStructCreate("ushort;ushort;ushort;ushort;ushort;ushort;ushort;ushort") $lpSYSTEMTIME = DllStructGetPtr($SYSTEMTIME) $LOCALFILETIME=DllStructCreate("dword;dword") $lpLOCALFILETIME = DllStructGetPtr($LOCALFILETIME) DllStructSetData($SYSTEMTIME, 1, $Year) DllStructSetData($SYSTEMTIME, 2, $Month) DllStructSetData($SYSTEMTIME, 3, _DateToDayOfWeek($Year,$Month,$Day)-1) DllStructSetData($SYSTEMTIME, 4, $Day) DllStructSetData($SYSTEMTIME, 5, $Hour) DllStructSetData($SYSTEMTIME, 6, $Minute) DllStructSetData($SYSTEMTIME, 7, 0) DllStructSetData($SYSTEMTIME, 8, 0) $result = DllCall("kernel32.dll", "long", "SystemTimeToFileTime", "ptr", $lpSystemTime, "ptr", $lpLocalFileTime) If $result[0] = 0 Then Local $lastError = DllCall("kernel32.dll", "int", "GetLastError") SetExtended($lastError[0]) SetError(1) Return 0 EndIf |
7
qzane 2015-11-23 17:57:32 +08:00 1
没有可比性吧...pyautogui 现在只能控制鼠标+键盘+截屏, hotkey 功能在计划中但暂时还没实现。主要的优势在于跨平台吧,其实看源码,至少 win 下面的部分接口很简单,即使用 c 写也不麻烦。
|
8
meloncrashed OP @qzane 新人才看完基础的 c, 想练练手请问完成自动控制在 windows7 下,需要使用什么库呀,大致几个步骤? 可以点指导方向嘛。谢谢
|
9
meloncrashed OP Windows Automation API
只用这一个 api 就够了嘛? |
10
meloncrashed OP @Hyperion 新人才看完基础的 c, 想练练手请问完成自动控制在 windows7 下,需要使用什么库呀,大致几个步骤? 可以点指导方向嘛。谢谢
|
11
Hyperion 2015-11-23 19:33:06 +08:00
@meloncrashed ahk 的语法太奇葩, 如果还是想用这类工具, 要么耐心学下 ahk 的各种魔法语句... 要么可以学习下 autoit, 有国内汉化版本, 但很久很久不更新了.
其他语言没有用过, 所以也不好推荐. |
12
qzane 2015-11-26 20:59:14 +08:00 1
@meloncrashed 直接 windows.h 就行,样例:
··· c #include <windows.h> void LeftClick ( ) { INPUT Input={0}; // left down Input.type = INPUT_MOUSE; Input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN; SendInput(1,&Input,sizeof(INPUT)); // left up ZeroMemory(&Input,sizeof(INPUT)); Input.type = INPUT_MOUSE; Input.mi.dwFlags = MOUSEEVENTF_LEFTUP; SendInput(1,&Input,sizeof(INPUT)); } ``` |
13
meloncrashed OP @qzane 谢谢
|
14
yinkaisheng 2019-04-02 18:56:58 +08:00
我用 python 封装了一个 Windows UI 自动化模块
https://github.com/yinkaisheng/Python-UIAutomation-for-Windows |