typedef void* __stdcall (OPENEQUIPMENT)(int nMyAddress, HWND hWnd);
typedef void __stdcall (RECVVERSION)(LPTSTR lpEdition);
typedef void __stdcall (SETLOG)(void* pDevice, BOOL bAddLog);OPENEQUIPMENT* lpOpenEQUIPMENT;
RECVVERSION* lpRecvVERSION;
SETLOG* lpSetLog;unsigned char cId[8],i;GetLocalTime(&LocalTime);lpOpenDevice = (OPENEQUIPMENT*)::GetProcAddress(hLibrary, "OnDevice");
if(lpOpenDevice == NULL)
{
FreeLibrary(hLibrary);
return FALSE;
}
typedef void __stdcall (RECVVERSION)(LPTSTR lpEdition);
typedef void __stdcall (SETLOG)(void* pDevice, BOOL bAddLog);OPENEQUIPMENT* lpOpenEQUIPMENT;
RECVVERSION* lpRecvVERSION;
SETLOG* lpSetLog;unsigned char cId[8],i;GetLocalTime(&LocalTime);lpOpenDevice = (OPENEQUIPMENT*)::GetProcAddress(hLibrary, "OnDevice");
if(lpOpenDevice == NULL)
{
FreeLibrary(hLibrary);
return FALSE;
}
解决方案 »
- opendialog只能选择一个文件吗?
- 关于ModelMaker中的接口和自动生成代码的问题?
- DBGrid转EXCLE时候身份证号码最后3位显示为0(急!!!)
- 求助:mscomm注册使用
- 在线等待!!! 关于用ADO连接Sybase ASE 12.5的速度问题!
- 关于DBGridEH动态添加标题的问题
- 简单问题,送分了...
- dbExpress的应用怎样分发到客户端啊!
- 在三层开发过程中,如果客户端是win95,则需要安装WinSocket2.0,问题是在程序中怎样判断客户端是否安装了WinSocket2.0版本?
- 难!与DOS有关
- “深圳市傲业科技有限公司” 这家公司怎样?了解的可以八卦一下吗?
- delphi listview 如何获取某一单元格的单击事件?
typedef void __stdcall (RECVVERSION)(LPTSTR lpEdition);
typedef void __stdcall (SETLOG)(void* pDevice, BOOL bAddLog); //Dll里边声明的函数么?OPENEQUIPMENT* lpOpenEQUIPMENT;
RECVVERSION* lpRecvVERSION;
SETLOG* lpSetLog; //是结构体声明吧?可以转成pascal的record记录类型unsigned char cId[8],i; GetLocalTime(&LocalTime); lpOpenDevice = (OPENEQUIPMENT*)::GetProcAddress(hLibrary, "OnDevice");
if(lpOpenDevice == NULL)
{
FreeLibrary(hLibrary);
return FALSE;
}//动态调用dll函数
typedef void* __stdcall (OPENEQUIPMENT)(int nMyAddress, HWND hWnd);
typedef void __stdcall (RECVVERSION)(LPTSTR lpEdition);
typedef void __stdcall (SETLOG)(void* pDevice, BOOL bAddLog); type
TOpenEquipment = function(nMyAddress: Integer; Wnd: HWND): Pointer stdcall;
TRecvVersion = procedure(lpEdition: LPTSTR) stdcall;
TSetLog = procedure(pDevice: Pointer; bAddLog: BOOL) stdcall;
lpOpenDevice = (OPENEQUIPMENT*)::GetProcAddress(hLibrary, "OnDevice");
if(lpOpenDevice == NULL)
{
FreeLibrary(hLibrary);
return FALSE;
} lpOpenDevice := GetProcAddress(hLibrary, "OnDevice");
if(lpOpenDevice=nil)then
begin
FreeLibrary(hLibrary);
Result := False;
Exit;
end;
typedef void __stdcall (RECVVERSION)(LPTSTR lpEdition);
typedef void __stdcall (SETLOG)(void* pDevice, BOOL bAddLog);
以上是函数指针的声明
第一个是返回值为无类型指针(void*)的有一个int类型和HWND类型参数列表的符合stdcall调用规则的函数指针,这个指针命名为OPENEQUIPMENT;
第二个是无返回值的有一个LPTSTR类型参数列表的符合stdcall调用规则的函数指针,这个指针命名为RECVVERSION;
第三个是无返回值的有一个无类型指针(void*)类型和BOOL类型参数列表的符合stdcall调用规则的函数指针,这个指针命名为SETLOG;OPENEQUIPMENT* lpOpenEQUIPMENT;
RECVVERSION* lpRecvVERSION;
SETLOG* lpSetLog;
这些是声明指针的指针;unsigned char cId[8],i;
声明一个无符号字符型数组和变量
GetLocalTime(&LocalTime);
获取本地时间
lpOpenDevice = (OPENEQUIPMENT*)::GetProcAddress(hLibrary, "OnDevice");
为指向指针的类型变量赋值,将GetProcAddress返回的指针,转换为 OPENEQUIPMENT*类型;
if(lpOpenDevice == NULL) //如果没有取到指针
{
FreeLibrary(hLibrary); //释放dll句柄
return FALSE;
}