Win32 API消息函数:SendMessage
来源:互联网 发布:vb.net ocx 编辑:程序博客网 时间:2024/04/29 09:42
函数原型:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam);
参数:
hWnd:其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。
Msg:指定被发送的消息。
wParam:指定附加的消息指定信息。
IParam:指定附加的消息指定信息。
返回值:返回值指定消息处理的结果,依赖于所发送的消息。
备注:需要用HWND_BROADCAST通信的应用程序应当使用函数RegisterWindowMessage来为应用程序间的通信取得一个唯一的消息。
如果指定的窗口是由调用线程创建的,则窗口程序立即作为子程序调用。如果指定的窗口是由不同线程创建的,则系统切换到该线程并调用恰当的窗口程序。线程间的消息只有在线程执行消息检索代码时才被处理。发送线程被阻塞直到接收线程处理完消息为止。
Windows CE:Windows CE不支持Windows桌面平台支持的所有消息。使用SendMesssge之前,要检查发送的消息是否被支持。
速查:Windows NT:3.1及以上版本:Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:winuser.h;输入库:user32.lib;Unicode:在Windows NT环境下以Unicode和ANSI方式实现。
Win32 API消息函数:PostMessage
函数功能:该函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回。消息队列里的消息通过调用GetMessage和PeekMessage取得。
函数原型:B00L PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
参数
hWnd:其窗口程序接收消息的窗口的句柄。可取有特定含义的两个值:
HWND.BROADCAST:消息被寄送到系统的所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口。消息不被寄送到子窗口。
NULL:此函数的操作和调用参数dwThread设置为当前线程的标识符PostThreadMessage函数一样。
Msg:指定被寄送的消息。
wParam:指定附加的消息特定的信息。
IParam:指定附加的消息特定的信息。
返回值:如果函数调用成功,返回非零值:如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。
备注:需要以 HWND_BROADCAST方式通信的应用程序应当用函数 RegisterwindwosMessage来获得应用程序间通信的独特的消息。
如果发送一个低于WM_USER范围的消息给异步消息函数(PostMessage.SendNotifyMessage,SendMesssgeCallback),消息参数不能包含指针。否则,操作将会失败。函数将再接收线程处理消息之前返回,发送者将在内存被使用之前释放。
速查:Windows NT: 3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:winuser.h;输入库:user32.lib;Unicode:在Windows NT环境下以Unicode和ANSI方式实现。
示例:
var
hwn:hwnd;
begin
hwn:=FindWindow(nil,'腾讯网迷你首页');
//showwindow(hwn,sw_show);
SendMessage(hwn,WM_Close,0,0); //关闭进程语句
===================================================
QQ2007中自动切换消息模式:此处用的是SendMessage函数实现自动按钮单击
var
i,j,k:integer;
begin
i:=FindWindow(nil,'与 ●┌哒!ňg 聊天中'); //查找主窗口
j:=FindWindowEx(i,0,'#32770','');
k:=FindWindowEx(j,0,'Button','消息模式(&T)');
SendMessage(k,BM_CLICK,0,0); //模拟单击此按钮
ShowWindow(k,SW_HIDE); //隐藏此按钮
end;
==================================================================
procedure TFrmMain.Button1Click(Sender: TObject); //动态修改别的程序中的控件中的文本
var
i,j:Thandle; //句柄变量
MyText : String; //发送的字符串
szText : Array[0..255] Of char; //得到的字符串
begin
i:=FindWindow(nil,'计算器'); //本来WINDOWS计算器中是不可以打汉字的通过这个方法可以发进去,
ShowMessage(IntToStr(i));
j:=FindWindowEx(i,0,'Edit',nil);
ShowMessage(IntToStr(j));
MyText:=edtAppend.Text;
SendMessage(j, WM_GetTEXT, 256,integer(@szText[0])); //取出控件中文本,
ShowMessage(szText);
MyText := szText + MyText;
SendMessage(j, WM_SETTEXT, 256,integer(MyText)); //给指定控件中追加文本
end;
==================================================================
SendMessage(FindWindow(nil,'str'),WM_CLOSE,0,0); //精简就是这样,str 是窗体名变量
SendMessage(hWndClose,WM_CLOSE,0,0) //hwndclose 是要关闭的窗体的句柄,
SendMessage(k,BM_CLICK,0,0); //模拟单击某按钮,参数K为某按钮的句柄,通过FindWindowEx找到
- Win32 API消息函数:SendMessage
- [转贴]Win32 API消息函数:SendMessage
- Win32 API消息函数:SendMessage PostMessage
- Win32 API消息函数:SendMessage(发送消息)
- Win32消息处理API---SendMessage
- <Win32 API> 发送消息 SendMessage/PostMessage
- Win32 API消息函数:GetMessage
- Win32 API消息函数:PostMessage
- Win32 API消息函数:PostMessage
- Win32 API消息函数:PostMessage
- [WIN32]Windows API宏SendMessage
- SendMessage函数与系统预定义消息[Windows API]
- Windows消息函数 - SendMessage
- SendMessage自定义消息函数
- SendMessage 自定义消息函数
- SendMessage()API函数
- VC/Win32 消息的发送 SendMessage/PostMessage
- Win32 API之SendMessage与PostMessage
- The first time
- SQL Server administration best practices
- 一些常用的辅助代码 (网络收藏)
- Delphi 关闭指定窗口
- 一个查看MSSQL数据库中所有表信息的SQL语句
- Win32 API消息函数:SendMessage
- 在tomcat上安转BIRT Viewer
- Delphi进程枚举
- SQL常用语句
- Service Model Metadata Utility Tool (SvcUtil.exe)
- Delphi ListView基本用法大全
- hibernate 动态查询 Criteria
- 限制程序运行实例数
- 未能加载类型“Namespace.Global”的解决方法