这个函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而和函数PostMessage不同,PostMessage是将一个消息寄送到一个线程的消息队列后就立即返回。
函数原型
LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam)
AutoHotkey中的参数顺序如下:
SendMessage, Msg [, wParam, lParam, Control, WinTitle, WinText, ExcludeTitle, ExcludeText, Timeout]
SendMessage,Msg , wParam, lParam,控件标识可以空, 窗口标识
hWnd:其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。
Msg:指定被发送的消息。
wParam:指定附加的消息特定信息。
IParam:指定附加的消息特定信息。
返回值:返回值指定消息处理的结果,依赖于所发送的消息。
备注:在WinUser.h中根据是否已定义Unicode被定义为SendMessageW或SendMessageA,
头文件:winuser.h;
库文件:user32.lib。
AutoHotkey调用方式:
; 例子: ahk中的函数 "SendMessage" 来改记事本窗口标题。
#z::
Run Notepad
WinWait 无标题 - 记事本
SendMessage,0xC,, "哥要你改标题",,A ; 0XC 为 WM_SETTEXT
;SendMessage, 0xC, 0, "New Notepad Title"
MsgBox 点击确定将关闭记事本
WM_CLOSE=0x10
WM_QUIT=0x12
SendMessage,WM_CLOSE, 0, 0,,哥要你改标题
c#语言:
[DllImport("user32.dll", EntryPoint="SendMessage")]
public static extern int SendMessage (int hwnd,int wMsg,string wParam,string lParam);
SendMessage的用法
SendMessage(句柄,消息的标识符,"取决于消息","取决于消息");
从CSDN中可以查到消息 WM_SETTEXT =0x000C
那么可得
SendMessage(handelA, 0x000C, "", "哥要你改标题");