2,723
社区成员
发帖
与我相关
我的任务
分享
以下为向一个窗口多个控件发消息(写内容及单击按钮)
Declare Long FindWindow In WIN32API String lpClassName,String lpWindowName &&函数返回与指定字符创相匹配的窗口类名或窗口名的最顶层窗口的窗口句柄。这个函数不会查找子窗口。
Declare Long FindWindowEx In WIN32API Long hwndParent,Long hwndChildAfter,String @lpszClass,String @lpszWindow &&该函数获得一个窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数查找子窗口,从排在给定的子窗口后面的下一个子窗口开始。在查找时不区分大小写。
Declare Long SendMessage In WIN32API Long hWnd,Long Msg,Long wParam,String @IParam &&该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回。
Declare Long GetDlgItem In WIN32API Long HWnd,Long lnIDDlgItem &&通过窗口(控件的父窗口)句柄和控件ID来返回控件句柄。使用该函数时,你可以指定任何窗口,而不只是对话框窗口,只要 hDlg 指定的是一个父窗口并且子窗口具有标识符(在调用 CreateWindow 或 CreateWindowEx 函数创建子窗口时通过 hMenu 参数设置),GetDlgItem 将返回一个有效的子窗口句柄。
#Define EM_REPLACESEL 0xC
#Define BM_CLICK 0xF5
llHandle=FindWindow(Null,'窗口的Caption')
If llHandle>0
hWnd1=GetDlgItem(llHandle,1011) && 1011为控件ID
SendMg='8888'&&指定要发送的消息
SendMessage(hWnd1,EM_REPLACESEL,0,SendMg)&&往输入框自动发送消息
hWnd1=GetDlgItem(llHandle,1012)
SendMg='888888'
SendMessage(hWnd1,EM_REPLACESEL,0,SendMg)
hWnd1=GetDlgItem(llHandle,1001)
SendMg='88888888'
SendMessage(hWnd1,EM_REPLACESEL,0,SendMg)
SendHwnd=FindWindowEx(llHandle,0,'Button','按钮Caption')
If SendHwnd<>0
SendMessage(SendHwnd,BM_CLICK,0,'')&&自动按下按钮
Endif
Endif