1、API介绍:PostMessagePostMessage是WindowsAPI(应用程序接口)中的一个常用函数,用于将一条消息放入到消息队列中。该函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回,是异步消息模式。
2、使用方法及参数:声明:DeclareFunctionPostMessageLib"user32"Alias"PostMessageA"(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsLong)AsLong调用:PostMessagehwnd,wMsg,wParam,lParam其中:hwnd是指目标窗体的句柄,wMsg这里使用参数&H102,代表直接发送字符串。wParam表示要发送的内容,lParam这里引用0。(当wMsg的参数为&H102的时候,最后一个参数lParam无效,故引用0即可)不使用插件,发送消息的具体实现
3、//声明APIDeclareFunctionPostMessageLib"user32"Alias"PostMessageA"(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsLong)AsLong//直接发送消息:通过将字符串分割成一个一个字符,发送到目标窗体FunctionSendString(hwnd,str)Fori=1ToLen(str)PostMessagehwnd,&H102,ASC(Mid(Str,i,1)),0NextEndFunction//调用函数SendStringSendString目标窗体句柄,"加入按键学院实战班,坐拥脚本江山与美人~~~"其中:关键的代码段为“PostMessagehwnd,&H102,ASC(Mid(Str,i,1)),0”。“ASC(Mid(Str,i,1))”,先将字符串中字符一个一个取出,转化为ANSI值,传送到目标窗体。
4、通过窗口插件,也可以实现发送消息按键精灵中自带的窗体插竭惮蚕斗件:Find、Search、MousePoint等也可以搏皋咬夼实现查找窗口句柄,然后实现发送消息。大家如果感兴趣,也可以自己去试试哦~~命令名称:Find查找窗口命令功能:查找窗口类名或者标题命令参数:参数1字符串型,窗口类名参数2字符串型,窗口标题返回值:整数型,窗口句柄脚本例子:(8.x语法)CallRunApp("notepad.exe")Delay1500//0表示忽略//下面这句是查找窗口类名("Notepad")或者标题(0),返回找到的句柄HwndHwnd=Plugin.Window.Find("Notepad",0)MsgBox"查找到的父窗口句柄为:"&Hwnd命令名称:Search遍历符合窗口命令功能:遍历符合窗口标题的句柄保存到数值串里命令参数:参数1字符串型,窗口符合的标题返回值:字符串型,句柄数值串脚本例子:(8.x语法)//下面这句是遍历符合窗口标题("记事本")的句柄保存到数组(HwndEx)里HwndEx=Plugin.Window.Search("记事本")MsgBox"查找到符合的窗口句柄为:"&HwndEx//下面这句用于分割字符串,将获得的句柄组分割dimMyArrayMyArray=Split(HwndEx,"|")IfUBound(MyArray)>=0Theni=0ForUBound(MyArray)//下面这句将字符串转换成数值Msgbox"第"&i+1&"个窗口句柄为:"&Clng(MyArray(i))i=i+1NextEndIf命令名称:MousePoint鼠标指向窗口命令功能:得到鼠标指向的窗口句柄命令参数:无返回值:整数型,窗口句柄脚本例子:(8.x语法)//下面这句是得到鼠标指向的窗口句柄Hwnd0=Plugin.Window.MousePoint()MsgBox"得到鼠标指向的窗口句柄为:"&Hwnd0