我正在尝试编写一个代码来通过Windows GUI的Tab面板访问,为此我想在我的python代码中创建一个DllCall到user32.dll,我使用Pywin32来访问autoit' s函数,我想我可以调用DllCall,这就是我的工作方式。
TabID = autoit.DllCall("user32.dll", "int", "GetDlgCtrlID", "hwnd", hTab)
TabID = autoit.TabID[0]
但每次我运行此代码时,它都会给我以下错误 - :
raise AttributeError("%s.%s" % (self._username_, attr))
AttributeError: AutoItX3.Control.DllCall
整个代码如下所示:
import time
import LogIt
import datetime
import win32con
import win32gui
import win32com.client
# this makes use of the AutoITX.dll that we registered with the Windows OS
autoit = win32com.client.Dispatch("AutoItX3.Control")
autoit.DllCall("user32.dll", "int", "GetDlgCtrlID")
有人可以帮我解决这个错误吗,我在网上找不到多少。
答案 0 :(得分:0)
DllCall
未出现在AutoItX的功能列表中,因此出现错误,因为它不可用。这通常是因为在技术上难以在dll中实现,就像HotkeySet这样的函数一样。 AutoItX是AutoIt的一个非常小的项目,所以如果需要花费很多精力来移植,那么它往往不会发生。
另一种方法是实现与DllCall相同的机制:
通常在Windows中,您使用GetModuleHandle
获取user32.dll的句柄,然后使用GetProcAddress
获取该函数的地址。在python中,大多数代码片段都是使用ctypes或win32api中的kernel32完成的。