将 ctypes 与 jython 一起使用

2023-12-13

我在 python 脚本中使用 ctypes lib 时遇到问题。这是我的代码(在互联网上找到):

if __name__ == "__main__":
    from ctypes import *
    user32 = windll.user32
    kernel32 = windll.kernel32

    class RECT(Structure):
        _fields_ = [
            ("left", c_ulong),
            ("top", c_ulong),
            ("right", c_ulong),
            ("bottom", c_ulong)];

    class GUITHREADINFO(Structure):
        _fields_ = [
        ("cbSize", c_ulong),
        ("flags", c_ulong),
        ("hwndActive", c_ulong),
        ("hwndFocus", c_ulong),
        ("hwndCapture", c_ulong),
        ("hwndMenuOwner", c_ulong),
        ("hwndMoveSize", c_ulong),
        ("hwndCaret", c_ulong),
        ("rcCaret", RECT)
        ]

    def moveCursorInCurrentWindow(x, y):
        # Find the focussed window.
        guiThreadInfo = GUITHREADINFO(cbSize=sizeof(GUITHREADINFO))
        user32.GetGUIThreadInfo(0, byref(guiThreadInfo))
        focussedWindow = guiThreadInfo.hwndFocus

        # Find the screen position of the window.
        windowRect = RECT()
        user32.GetWindowRect(focussedWindow, byref(windowRect))

        # Finally, move the cursor relative to the window.
        user32.SetCursorPos(windowRect.left + x, windowRect.top + y)

    if __name__ == '__main__':
    # Quick test.
        moveCursorInCurrentWindow(100, 100)

第一个问题是 python 找不到 ctypes,所以我将从项目站点下载的文件复制到

netbeans\6.9\jython-2.5.1\Lib\

(是的,我使用的是netbeans)然后它显示了这个错误:

>    from ctypes import *
>  File "C:\Users\k\.netbeans\6.9\jython-2.5.1\Lib\ctypes\__init__.py", line 10, in <module>
>    from _ctypes import Union, Structure, Array

就像 init 文件有一些错误 o_O 帮助大家! 问候,克里斯


ctypes在 Jython 中是实验性的且不完整。

来自 jython-users 邮件列表中标题为“的线程”Jython 中的 ctypes” Jim Baker(Jython 提交者)于 2010 年 11 月 17 日写道:

有一些实验支持 2.5.2 [当前版本]中的 ctypes,但它确实更多 此时的占位符。

然后他建议了这些解决方法:

如果你可以修改的话我推荐JNA 你的ctypes代码。 JNA 非常接近 到 ctypes - JNA 的 API 显然是 受ctypes影响显着! JNA 似乎也可以很好地配合 吉通。

另一种选择是使用一些东西 就像执行网一样。对于执行网 具体来说:它允许您配对 Jython 与 CPython,看起来确实如此 好好工作。但它的 GPL 许可证 使它成为许多人的非首发 人们。还有其他选择 那里也有。

在同一条线索中,我们进一步进行了以下确认评估:

我尝试了2.5.2rc2中的ctypes模块 最近,发现:1)有 还没有 ctypes.util.find_library 2) ctypes.Structure 不支持 非标量类型

所以我同意“更多的是 占位符”评估。不过,它是 很高兴看到它开始。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 ctypes 与 jython 一起使用 的相关文章

随机推荐