如何在ctypes、Python中使用win32 api SendMessageA
我遇到了这个问题,这个函数的原型是这样的如何在ctypes、Python中使用win32 api SendMessageA,python,windows,winapi,ctypes,pywin32,Python,Windows,Winapi,Ctypes,Pywin32,我遇到了这个问题,这个函数的原型是这样的 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 F
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弹出的文件打开对话框
所以我找到了这个对话窗口,得到了它的hwnd(窗口的处理程序)
现在我想操纵这个窗口来选择我想要它选择的文件
我能想到的第一件事是在窗口中输入文件的完整路径,然后按enter键,这有点像我们选择文件的方式
所以,这就是我处理这个问题的方式,如果你有更好的解决方案,我完全同意
如果您能提供任何提示,请提前感谢。您真正想做的是自动执行Windows文件对话框。Python有各种自动化框架。你可能做得比使用更糟糕。另一个选项是绑定到平台自动化库UI automation。使用COM相对容易。也许函数的文档会有所帮助。@JonathanPotter我已经阅读了文档,但如何在python中使用Ctypest实现这一点似乎是个问题。看起来你真正想做的是假输入。您需要的是
SendMessage
,这一点还很不清楚。事实上,你需要的是伪造输入,这一点还远远不清楚。这往往是错误的解决方案。最后,如果您想了解SendMessage
的参数,您需要阅读文档。你认为Msg
是一个字符串这一事实表明你不可能阅读和理解文档。我刚刚编辑了这个问题,你们能告诉我如何在pythonWell中使用ctypes实现这一点吗,Msg
不是字符串。除非你把错误的理解弄清楚,否则继续下去是没有意义的。没有人可以告诉您如何发送Msg
参数为字符串的消息,因为这不是消息的工作方式。您的主要问题是尚未理解Windows消息。在理解它们之前,你不能继续。这样做首先要阅读文档。最好是读一下佩佐德的书。在皮维那托的下面,它使用了我一直在追求的技巧。那么为什么要麻烦使用一个大模块呢。我所需要的只是其中的一段代码。我会调查pywinauto并找到我需要的。谢谢你自己。我想你最清楚。