python - 如何在 python 中获取打开文件的 win32 句柄?

标签 python winapi

我确定这在某处有记录,但我找不到...

我的代码正在从另一个库中获取一个 python 对象(我无法修改),我需要在其上调用一些 win32 api 函数。

Python 从 file.fileno() 返回一些不是操作系统级句柄的东西,我的猜测是它给出了 MSVCRT 的文件号。

>>> ctypes.windll.kernel32.CreateFileA('test',0x80000000L,1,None,3,0,0)
1948 # <- HANDLE

>>> file('test','r').fileno()
4 # <- not a HANDLE

如何将其转换为真正的 win32 句柄?

最佳答案

我找到了答案:

>>> msvcrt.get_osfhandle(a.fileno())
1956 # valid HANDLE

这实际上记录在 http://docs.python.org/library/msvcrt.html 上,不知道我是怎么错过的。

关于python - 如何在 python 中获取打开文件的 win32 句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6135805/

相关文章:

Python:如何异步 for 循环

python - 将 C++ 缓冲区复制到 Python 的最佳方法

c++ - WinApi,从控件获取文本,不可见文本和可见文本不显示任何内容

c++ - 无法将参数从 'SIZE_T *' 转换为 'size_t *' - 如何转换?

c# - 将 GetKeyNameText 与特殊键一起使用

python - 将函数应用于基于列的数据框和基于索引的其他数据框

python - 根据值列表重复每个元素

python - 我应该如何重构/重新设计我的代码

wpf - 如何从 WPF 应用程序使用FolderBrowserDialog

winapi - Windows clipboard::GetClipboardData() for CF_DIBV5 导致剪贴板上的图像被修改和损坏?