ctypes函数ptr as c\u void\u p

2024-04-25 12:05:51 发布

您现在位置:Python中文网/ 问答频道 /正文

使用ctypes(python3),我试图转换一个_FuncPtr对象,它应该是一个标识符或类型c_void_p。你知道吗

但是使用cast会产生错误的地址,而in_dll会产生正确的地址。你知道吗

在下面的代码中,使用p1会导致segfault,而p2会按预期工作。 为什么会这样,如何正确地将_FuncPtr转换为c_void_p?你知道吗

windows = CGWindowListCopyWindowInfo( kCGWindowListOptionAll, kCGNullWindowID )

for _win in cfarray( windows ):
    print( _win )
    p1 = cast( Q.kCGWindowNumber, c_void_p )
    p2 = c_void_p.in_dll( Q, "kCGWindowNumber" )
    pid = CFDictionaryGetValue( _win, p2 )
    print( pid )

Tags: inwindows地址ctypespidwinpython3dll