如何在ctypes中使用Win32 API的SendMessageA,Python
我遇到了一个问题,这个函数的原型是这样的:
LRESULT WINAPI SendMessage(
_In_ HWND hWnd,
_In_ UINT Msg,
_In_ WPARAM wParam,
_In_ LPARAM lParam
);
我在Python中做了这个:
SendMessageA = ctypes.windll.user32.SendMessageA
# hwnd here is already got by EnumWindows or FindWindowA
SendMessageA(hwnd, KEY, 0, 0)
补充一下:
有没有人能根据我提供的代码做个例子?
看起来这个SendMessageA函数是一次发送一个按键。
那么,如何用ctypes来做到这一点呢?
补充:
我真正想做的是:
我遍历了所有窗口,找到了一个特定的窗口,那是浏览器中Flash弹出的文件打开对话框。
所以我找到了这个对话框窗口,并获取了它的句柄(窗口的标识符)。
现在我想操作这个窗口,选择我想要的文件。
我能想到的第一件事就是在窗口中输入文件的完整路径,然后按下回车,这有点像模拟我们选择文件的方式。
所以,这就是我解决这个问题的方法,如果你有更好的解决方案,我完全没问题。
如果你能提供任何提示,我非常感谢。
1 个回答
0
你真正想做的是自动化一个Windows文件对话框。Python有很多自动化的工具。对于这个任务,使用pywinauto是个不错的选择。另一个选择是使用平台的自动化库,叫做UI Automation。通过COM来实现这个也相对简单。