由dll发起通知主程序的方法常用的有以下几种:
1.消息法:在dll中申明类似RegisterMessage(h: THandle; Msg: Cardinal)的函数,参数包括接受消息的窗体句柄和消息常量.主程序初始化dll时调用该函数,将自身句柄和一个预定义的消息常量告知dll.dll在收到数据后向主程序句柄发送该消息,数据缓冲区指针及长度有消息参数携带.
2.回调函数法:在dll中申明类似SetDataCallback(Callback: TCallbackProc)的方法,参数包含一个回调函数,回调函数的参数包括数据缓冲区指针及长度.主程序初始化dll时调用该函数,将主程序内一数据处理函数告知dll.dll在收到数据后向通过之前的回调函数指针调用主程序内的数据处理函数.
3.事件法:在dll申明类似RegisterEvent(Event: TEvent)的方法,参数为一个事件.主程序初始化dll时先建立事件,再传给dll;同时,主程序开一线程等待该事件.dll在收到数据后置位该事件即可.