的主窗口中也有需要发送消息的窗口。 可以使用Microsoft Spy工具显示此“隐藏”窗口,也可以检索所有子窗口,如下所示: defcallback(HWND,hwnds ) :
if win32 GUI.iswindowvisible (hwnd ) and win32 GUI.iswindowenabled (hwnd ) :
hwnds [ win32 GUI.getclass name (hwnd ) ]=hwnd
返回真
hwnds={}
win32 GUI.enumchildwindows (whn dl,callback,hwnds )。
我们要查找的窗口包含" Edit "类名。 这是记事本中启用的,是唯一可以显示的子窗口。 所以你的代码是这样工作的。 导入win32ui API、win32con、win32gui、win32ui、win32服务、操作系统、time
deff_click(pycwnd ) :
x=300
y=300
lParam=y 15 | x
py cwnd.sendmessage (win32 con.WM _ lbuttondown,win32con.MK_LBUTTON,lParam );
py cwnd.sendmessage (win32 con.WM _ lbuttonup,0,lParam );
def get_whndl () :
whn dl=win32 GUI.findwindowex (0,0,None,' NB.txt - Notepad ' )
return whndl
efmake_pycwnd(hwnd ) :
py cwnd=win32 ui.createwindowfromhandle (hwnd ) ) ) )。
return PyCWnd
efsend_input_hax(pycwnd,msg ) :
f_click(pycwnd ) )。
for c in msg:
if c=='n':
py cwnd.sendmessage (win32 con.WM _ keydown,win32con.VK_RETURN,0 ) ) )。
py cwnd.sendmessage (win32 con.WM _ keyup,win32con.VK_RETURN,0 ) ) ) )。
else:
py cwnd.sendmessage (win32 con.WM _ char,ord(c ),0 ) ) ) ) ) ) )
pycwnd.UpdateWindow (
whndl=get_whndl ()
defcallback(HWND,hwnds ) :
if win32 GUI.iswindowvisible (hwnd ) and win32 GUI.iswindowenabled (hwnd ) :
hwnds [ win32 GUI.getclass name (hwnd ) ]=hwnd
返回真
hwnds={}
win32 GUI.enumchildwindows (whn dl,callback,hwnds )。
whndl=hwnds['Edit']
pycwnd=make_pycwnd(whndl )
MSg=' it工作! n '
send_input_hax(pycwnd,msg ) )。
lParam是int。 我们在这里看到的技巧是允许在一个参数中传递多个值。 假设需要将两个数字传递给只接受一个参数的函数。 可以将它们作为两位数发送,并在函数内进行分割。 同样,位移位(lt; lt; 和按位或(|)的操作也可以在客户情况下翻转。 x=300
y=300
lParam=y 15 | x
lParam0x7FFF # x
0: 300
lParam 15 # y
1: 300
有关逐位操作的详细信息,请参见维基和Python Wiki。