dll 与 exe 之间的通讯方式有很多种, 本文采用回调函数的方法实现, 本文也将研究多线程,多模块的情况下,回调函数所在的线程, 啥也不说了,先附上代码: 下面的是dll模块的的, dll的工程文件: library DllAPP; uses windows, SysUtils, Classes, DllClass in 'DllClass.pas'; {$R *.res} var GDllServer: TDllServer; function AddServer(ADispatchFunc: TDispatchFunc): HRESULT; stdcall; begin Result := ERROR_INVALID_FUNCTION; if not Assigned(GDllServer) then Exit; GDllServer.AddServer(ADispatchFunc); Result := ERROR_SUCCESS; end; function DataDispatch(ACommand: Integer):HRESULT; stdcall; begin Result := ERROR_INVALID_FUNCTION; GDllServer.DataDispatch(ACommand); Result := 0; end; function DLLInitialize: HRESULT; begin Result := 1; GDllServer := TDllServer.create; Result := ERROR_SUCCESS; end; function D