delphi 如何用消息发送一个记录

2024-05-10 05:13

1. delphi 如何用消息发送一个记录

正如Windows发送消息给应用程序窗口一样,我们偶尔也需要在应用程序的窗口和控件之间发送消息。Delphi提供了几种途径发送消息,例如Perform()方法(它不依赖Windows API)和SendMessage()、PostMessage() API函数。
(一)Perform()方法
VCL为所有的TControl派生类提供了Perform()方法:Perform()可以发送消息给任何已知对象实例的窗体或控件对象。Perform()方法有3个参数:消息、它对应的lParam和wParam,如下所示:
Function TControl1.Perform(Msg: Cardinal; wParam,lParam: Longint):Longint;
要发送一条消息给一个窗体或控件,使用下面的格式:
RetVal:=ControlName.Perform(MessageID, wParam,lParam);
Perform()是同步调用的,因此直到消息被处理完毕,才能得到返回值。Perform()方法把它的参数组合成一个TMessage记录,然后调用该对象的Dispatch()方法去发送这条消息——绕开了Windows API消息系统。
(二)SendMessage()和PostMessage() API函数
有时候需要发送消息给某个窗口,但并不知道这个窗口的Delphi对象实例。例如我们可能希望发送一条消息给一个非Delphi窗口,但是我们只有该窗口的句柄。幸运的是,Windows提供了两个API:SendMessage()和PostMessage()。这两个函数基本上是相同的,只有一点区别,区别之处在于:SendMessage()和Perform()类似,都是同步调用的,消息直接发往目的窗口,该消息被处理完毕才返回;Postmessage()是异步调用的,发送消息给Windows消息序列,然后立即返回。
SendMessage()和PostMessage()的定义如下:
Function SendMessage(hWnd:HWND;Msg:UINT;wParam:WPARAM;lParam:LPARAM): LRESULT;stdcall
Function PostMessage(hWnd:HWND;Msg:UINT;wParam:WPARAM;lParam:LPARAM): LRESULT;stdcall
上面的定义中,hwnd是消息目的地的窗口句柄,Msg是消息ID、wParam和lParam是32位附加信息。
说明:虽然SendMessage()和PostMessage()用法相近,它们各自的返回值是不同的。SendMessage()返回被处理的消息的结果值,但是PostMessage()返回的只是一个布尔值,表示是否该消息被放入到目标窗口队列中。另外一个方面,SendMessage()是同步调用的,PostMessage()是异步调用的

delphi 如何用消息发送一个记录

2. 用delphi可以编写收发短信的程序吗

可以!
首先,我认为你应该搞懂收发短信的原理,然后再决定可不可以写,怎么写。
大致,我可以想到两种方法:
1,通过外部设备,连接一个sim卡,收发短信。显然,你可能问的不是这种。
2,可以利用SP等供用的API收发短信,当然这个服务期你也可以去配置的,只是能不能发到联通、移动的号码段上,我不清楚(应该是不能的,除非连接上人家的接口,也就是API)。但要发到你自己的虚拟号码段肯定没问题的。
故,用delphi肯定是可以编写收发短信程序的!而且,几乎多数语言都可以做到,包括网页脚本语言。每一门语言只是一种工具,就好比是令狐冲手中的剑,带你应用到如火纯青时,拿个树枝都比别人的剑好使。学编程,重在思维。
最新文章
热门文章
推荐阅读