我想从Python调用通用Windows平台(UWP)API。我试图通过使用ctypes调用包含调用UWPAPI函数的win32 dll来做到这一点。在
总结一下这个过程:
Python->;cytpes->;dll->;UWP
我一直在调试它。以下是的工作原理:创建win32 dll文件并使用
Python ctypes模块
生成包含UWP调用的win32 dll文件(使用指令here)。在从一个C++ Win32应用程序加载Win32 DLL文件,调用UWP API调用的函数。在
以下是不起作用的地方:当用Python ctypes加载win32 DLL时,该DLL内的UWP调用;从win32应用程序加载和调用同一DLL时,相同的UWP调用在从ctypes调用时失败。在
Python 3.6.4代码如下所示:dll = ctypes.CDLL(path_to_dll)
dll.IsKeyboardPresent.restype = ctypes.c_bool
is_keyboard_present = dll.IsKeyboardPresent()
崩溃后的回溯结果如下:
^{pr2}$
dll文件的源代码如下:#include "stdafx.h"
using namespace Platform;
using namespace Windows::Devices::Input;
using namespace Windows::Foundation;
using namespace Windows::Foundation::Collect