我一直在把powershell脚本翻译成python,主要是为了学习如何做。我被困在这里了:
$lpTargetHandle = [IntPtr]::Zero
$CallResult = [Kernel32]::DuplicateHandle(
$ProcessInfo.hProcess, 0x4,
[Kernel32]::GetCurrentProcess(),
[ref]$lpTargetHandle, 0, $false, 0x00000002)
echo $lpTargetHandle
这是我在python中看到的:
^{pr2}$以下是我得到的输出:
>>> lpTargetHandle = HANDLE()
>>> CallResult = kernel32.DuplicateHandle(ProcessInfo.hProcess, 0x4, kernel32.GetCurrentProcess(),byref(lpTargetHandle), 0, False, 0x00000002)
>>>
>>> print(lpTargetHandle)
c_void_p(None)
>>> lpTargetHandle.value
>>> type(lpTargetHandle.value)
<type 'NoneType'>
应该发生的是,lpTargetHandle指针应该返回线程ID号,但是我得到的是none。我已经看到IntPtr是用IronPython处理的,但我的目标是学习普通python。我的包括:from ctypes import *
from ctypes.wintypes import *
如何在普通Python(CPython)中复制IntPtr?
具体来说,如何用python编写$var = [IntPtr]::Zero
?在
我也试过这个,但没用:
tid = POINTER(c_int)
num = c_int(0)
addr = addressof(num)
ptr = cast(addr,tid)
CallResult = = kernel32.DuplicateHandle(ProcessInfo.hProcess, 0x4,
kernel32.GetCurrentProcess(),ptr, 0, False, 0x00000002)
这是一个装满了python code的纸篓
这是我正在复制的powershell function的一个贴纸盒。在
编辑:这是我试图在C语言中复制的相关函数
HANDLE hThread = nullptr;
DuplicateHandle(procInfo.hProcess, (HANDLE)0x4,
GetCurrentProcess(), &hThread, 0, FALSE, DUPLICATE_SAME_ACCESS);
return hThread;
根据Windows documentation,这是函数原型:
在python中,
LPHANDLE
类型的等价物是wintypes.LPHANDLE
相关问题 更多 >
编程相关推荐