您的位置:首页 > 编程语言 > Python开发

[ahk]将Python和AutoHotkey结合起来

2010-04-15 15:02 1131 查看
http://www.autohotkey.com/forum/topic53773.html

Q:I am searching for is a way to execute AHK commands from a Python script. Is this possible?

A:Yes. Here is an example. 

tested with python2.6, requires AutoHotkey.dll in the working directory or path... 

ahkpython.ahk:

#Persistent
dllcall(A_ScriptParams, "int", 42, "cdecl int")
return
f1::
inputbox, x, enter a numerical parameter for python callback
result := dllcall(A_ScriptParams, "int", x, "cdecl int")
return
 

ahkpython.py

from ctypes import *
ahk = cdll.AutoHotkey
pyclient = create_string_buffer("ahkpython.ahk")   # no unicode in ahk
CMPFUNC = CFUNCTYPE(c_int, c_int)
def py_cmp_func(a):
print "ahk: " , a
return a
cmp_func = CMPFUNC(py_cmp_func)
fx = create_string_buffer(str(cast(cmp_func, c_void_p).value))
script = create_string_buffer("""
fx2(msg){
WinActivate %msg%
msgbox in function fx2 with %msg% from python
return "success"
}
""")
ahk.ahkdll(pyclient, "", fx)
ahk.ahkassign(create_string_buffer("fx"), fx)
ahk.addScript(script)
ahk.ahkFunction(create_string_buffer("fx2"), create_string_buffer("Untitled"))
 

remarks: 

create_string_buffer is required because autohotkey.dll exported functions do not work with unicode. 

See HotkeyIt's excellent chm help file for documentation on the functions.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息