尝试在 python 中正确加载和使用 dll 文件
Trying to load and use a dll file in python properly
我正在尝试在python中加载和使用dll。我一直在尝试使用Windows-kill,但我对C++知之甚少。我能够在Visual Studio中很好地编译它,exe文件工作正常,但我想弄清楚如何使用Python加载dll,以便我可以学习如何加载我最终可能想要使用的其他dll。
到目前为止,这是我提出的代码。我不确定它是否需要 SIGINT 或值的数字,因为命令行使用 -SIGINT,但我一直在尝试两者。
lib = ctypes.CDLL('windows-kill-library.dll')
libOpen = getattr(lib, "?sendSignal@WindowsKillLibrary@@YAXKK@Z")
libOpen.argtypes = [wintypes.DWORD, wintypes.DWORD]
val = 'SIGINT'
# val = 0
l = libOpen(9844, val)
print(l)
使用 SIGINT 作为值,我得到错误:
ctypes.ArgumentError: argument 2: <class 'TypeError'>: wrong type
并使用一个数字作为我得到的值:
OSError: [WinError -529697949] Windows Error 0xe06d7363
我知道参数类型一定是错误的或其他什么,但我一直在尝试很多不同的事情并得到相同的错误。
这是未修饰的名称:
void WindowsKillLibrary::sendSignal(unsigned long,unsigned long)
我尝试将ctypes.c_ulong和其他一些用于参数类型,但仍然遇到相同的错误。
在视觉工作室中,当我将鼠标悬停在以下 2 行中的 DWORD 上时:
DWORD signal_type;
DWORD signal_pid;
如果有帮助,它说"typedef unsigned long DWORD"。
这里也是可以在这里找到的使用示例
/// <summary>
/// Sends the signal.
/// </summary>
/// <param name="signal_pid">The signal target process id.</param>
/// <param name="signal_type">The signal type.</param>
void sendSignal(DWORD signal_pid, DWORD signal_type);
有谁知道我如何做到这一点?谢谢。
你需要一个DLL,因为Windows没有本机signal
工具,所以该库正在模拟POSIXsignal
功能。POSIXSIGINT
是数值 2,对于DWORD
来说,这是一个完美的值。该常量 2 可以方便地用作signal.SIGINT.value
。
相关文章:
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- 将 dll 文件注入 UWP
- 从 .lib 文件创建一个.dll文件
- 使用dll源代码C++调试dll文件
- 如何将我的程序转换为.dll文件并使用rundll32.exe在cmd中运行它?
- 提升 Python 找不到 dll 文件
- 为什么它无法在 c++ 中全局声明一个构建为 dll 文件的类?
- 尝试在 python 中正确加载和使用 dll 文件
- 如何在运行时从 c++ 中的 DLL 文件创建对象?
- 是否可以单步执行.dll文件中定义的成员函数?
- 是否有其他方法将.dll文件从一个项目复制到我的启动项目中的可执行文件旁边
- 设置所需DLL文件的自定义路径:电子应用
- LUA5.3 DLL文件中缺少名称
- 如何在 go 中调用带有 .lib 和.dll文件的预构建 API
- 将字符串从 C# 发送到 dll 文件C++
- DLL文件中函数的预期行为在C中编写并从CPP文件打电话
- 如何在VS项目中静态链接没有dll文件的cpprest?
- 加载C DLL文件时,如何修复异常_access_violation
- 编译时如何隐藏DLL文件中的字符串?
- 找不到 C# C++ DLL 文件