在一个DLL(文件名为smppapidll.dll)中声明了以下函数,请问我应该如何在VB这些函数,以及如何实现里面的回调函数,只要up就有分,解决问题的另给
ifndef SMPP_API_HEADER
#define SMPP_API_HEADER#if defined(__cplusplus)
extern "C"
{
#endif#define DllExport __declspec(dllexport)typedef void (FAR PASCAL *LPSMPPSENDREPORTCALLBACK)(DWORD nMsgId, int nState, LPCSTR lpszSubmitTime, LPCSTR lpszDoneTime, LPCSTR lpszDestterminalId, int nSequenceId);
typedef void (FAR PASCAL *LPSMPPSUBMITRESPCALLBACK)(DWORD dwSequence, DWORD nMsgId, DWORD Status);
typedef void (FAR PASCAL *LPSMPPRECEIVECALLBACK)(DWORD nMsgID, LPCSTR lpszDestnationId, LPCSTR lpszServiceId, int nMsgFmt,LPCSTR lpszSrcTermId, LPCSTR lpszMsg, int nMsgLen, LPBYTE LinkID);
typedef void (FAR PASCAL *LPSMPPSTATUSCALLBACK)(DWORD Status);DllExport int SMPPInitialize(LPCTSTR lpszINIFileName);
DllExport int SMPPConnect();
DllExport int SMPPDisconnect();
DllExport int SMPPTerminate();
DllExport int SMPPSendMessage(
DWORD *lpdwSequence,
LPTSTR lpszServiceType,
int TP_pid,
int TP_udhi,
int nMsgFmt,
LPCSTR lpszValidTime,
LPCSTR lpszAtTime,
LPCSTR lpszSrcTermId,
int nDestTermNum,
LPCSTR *lpDestTermIds,
LPCSTR lpszMsg,
int nMsgLen,
int nReportStatus,
BOOL bWait,
LPBYTE LinkID
);
DllExport int SMPPSetSendReportCallback(
LPSMPPSENDREPORTCALLBACK lpfnSendReportCallback);
DllExport int SMPPSetSubmitRespCallback(
LPSMPPSUBMITRESPCALLBACK lpfnSubmitRespCallback);
DllExport int SMPPSetReceiveCallback(
LPSMPPRECEIVECALLBACK lpfnReceiveCallback);
DllExport int SMPPSetStatusCallback(
LPSMPPSTATUSCALLBACK lpfnStatusCallback);
DllExport void SMPPActiveTest();#if defined(__cplusplus)
}
#endif #endif // #ifndef SMPP_API_HEADER
ifndef SMPP_API_HEADER
#define SMPP_API_HEADER#if defined(__cplusplus)
extern "C"
{
#endif#define DllExport __declspec(dllexport)typedef void (FAR PASCAL *LPSMPPSENDREPORTCALLBACK)(DWORD nMsgId, int nState, LPCSTR lpszSubmitTime, LPCSTR lpszDoneTime, LPCSTR lpszDestterminalId, int nSequenceId);
typedef void (FAR PASCAL *LPSMPPSUBMITRESPCALLBACK)(DWORD dwSequence, DWORD nMsgId, DWORD Status);
typedef void (FAR PASCAL *LPSMPPRECEIVECALLBACK)(DWORD nMsgID, LPCSTR lpszDestnationId, LPCSTR lpszServiceId, int nMsgFmt,LPCSTR lpszSrcTermId, LPCSTR lpszMsg, int nMsgLen, LPBYTE LinkID);
typedef void (FAR PASCAL *LPSMPPSTATUSCALLBACK)(DWORD Status);DllExport int SMPPInitialize(LPCTSTR lpszINIFileName);
DllExport int SMPPConnect();
DllExport int SMPPDisconnect();
DllExport int SMPPTerminate();
DllExport int SMPPSendMessage(
DWORD *lpdwSequence,
LPTSTR lpszServiceType,
int TP_pid,
int TP_udhi,
int nMsgFmt,
LPCSTR lpszValidTime,
LPCSTR lpszAtTime,
LPCSTR lpszSrcTermId,
int nDestTermNum,
LPCSTR *lpDestTermIds,
LPCSTR lpszMsg,
int nMsgLen,
int nReportStatus,
BOOL bWait,
LPBYTE LinkID
);
DllExport int SMPPSetSendReportCallback(
LPSMPPSENDREPORTCALLBACK lpfnSendReportCallback);
DllExport int SMPPSetSubmitRespCallback(
LPSMPPSUBMITRESPCALLBACK lpfnSubmitRespCallback);
DllExport int SMPPSetReceiveCallback(
LPSMPPRECEIVECALLBACK lpfnReceiveCallback);
DllExport int SMPPSetStatusCallback(
LPSMPPSTATUSCALLBACK lpfnStatusCallback);
DllExport void SMPPActiveTest();#if defined(__cplusplus)
}
#endif #endif // #ifndef SMPP_API_HEADER
Private Declare Function SMPPConnect Lib "smppapidll.dll" () As Long
Private Declare Function SMPPDisconnect Lib "smppapidll.dll" () As Long
Private Declare Function SMPPTerminate Lib "smppapidll.dll" () As Long
Private Declare Function SMPPSendMessage Lib "smppapidll.dll" ( _
ByVal lpdwSequence As Long, _
ByVal lpszServerType As String, _
ByVal TP_pid As Long, _
ByVal TP_udhi As Long, _
ByVal lpszValidTime As String, _
ByVal lpszAtTime As String, _
ByVal lpszSrcTermId As String, _
ByVal nDestTermNum As Long, _
ByVal lpDestTermIds As String, _
ByVal lpszMsg As String, _
ByVal bWait As Long, _
LinkID As Any) As Long
Private Declare Function SMPPSetSendReportCallback Lib "smppapidll.dll" (ByVal lpfnSendReportCallback As Long) As Long
Private Declare Function SMPPSetSubmitRespCallback Lib "smppapidll.dll" (ByVal lpfnSubmitRespCallback As Long) As Long
Private Declare Function SMPPSetReceiveCallback Lib "smppapidll.dll" (ByVal lpfnReceiveCallback As Long) As Long
Private Declare Function SMPPSetStatusCallback Lib "smppapidll.dll" (ByVal lpfnStatusCallback As Long) As Long' 至于函数声明倒是好说,只是使用的时候注意一下,主要是 SMPPSendMessage 这个函数,如
Dim lpDestTermIds As String * 255
Dim LinkID() As Byte
LinkID = StrConv("Tekken", vbFromUnicode)
SMPPSendMessage 0, "", 0, 0, "", "", "", lpDestTermIds, "", "", 0, LinkID' 回调函数就给它传一个函数地址,给出一个基本结构,把参数匹配一下就差不多了,祝你好运
SMPPSetSendReportCallback AddressOf SendReportCallback
SMPPSetSubmitRespCallback AddressOf SubmitRespCallback
SMPPSetReceiveCallback AddressOf ReceiveCallback
SMPPSetStatusCallback AddressOf StatusCallbackPublic Function SendReportCallback(ByVal dwParam As Long) As Boolean
SendReportCallback = True
End FunctionPublic Function SubmitRespCallback(ByVal dwParam As Long) As Boolean
SubmitRespCallback = True
End FunctionPublic Function ReceiveCallback(ByVal dwParam As Long) As Boolean
ReceiveCallback = True
End FunctionPublic Function StatusCallback(ByVal dwParam As Long) As Boolean
StatusCallback = True
End Function
然后再在程序中引用DLL的函数。up to u!
Private Declare Function SMPPConnect Lib "smppapidll.dll" () As Long
Private Declare Function SMPPDisconnect Lib "smppapidll.dll" () As Long
Private Declare Function SMPPTerminate Lib "smppapidll.dll" () As Long
Private Declare Function SMPPSendMessage Lib "smppapidll.dll" ( _
ByVal lpdwSequence As Long, _
ByVal lpszServerType As String, _
ByVal TP_pid As Long, _
ByVal TP_udhi As Long, _
ByVal lpszValidTime As String, _
ByVal lpszAtTime As String, _
ByVal lpszSrcTermId As String, _
ByVal nDestTermNum As Long, _
ByVal lpDestTermIds As String, _
ByVal lpszMsg As String, _
ByVal bWait As Long, _
LinkID As Any) As Long
Private Declare Function SMPPSetSendReportCallback Lib "smppapidll.dll" (ByVal lpfnSendReportCallback As Long) As Long
Private Declare Function SMPPSetSubmitRespCallback Lib "smppapidll.dll" (ByVal lpfnSubmitRespCallback As Long) As Long
Private Declare Function SMPPSetReceiveCallback Lib "smppapidll.dll" (ByVal lpfnReceiveCallback As Long) As Long
Private Declare Function SMPPSetStatusCallback Lib "smppapidll.dll" (ByVal lpfnStatusCallback As Long) As Long' 至于函数声明倒是好说,只是使用的时候注意一下,主要是 SMPPSendMessage 这个函数,如
Dim lpDestTermIds As String * 255
Dim LinkID() As Byte
LinkID = StrConv("Tekken", vbFromUnicode)
SMPPSendMessage 0, "", 0, 0, "", "", "", lpDestTermIds, "", "", 0, LinkID' 回调函数就给它传一个函数地址,给出一个基本结构,把参数匹配一下就差不多了,祝你好运
SMPPSetSendReportCallback AddressOf SendReportCallback
SMPPSetSubmitRespCallback AddressOf SubmitRespCallback
SMPPSetReceiveCallback AddressOf ReceiveCallback
SMPPSetStatusCallback AddressOf StatusCallbackPublic Function SendReportCallback(ByVal dwParam As Long) As Boolean
SendReportCallback = True
End FunctionPublic Function SubmitRespCallback(ByVal dwParam As Long) As Boolean
SubmitRespCallback = True
End FunctionPublic Function ReceiveCallback(ByVal dwParam As Long) As Boolean
ReceiveCallback = True
End FunctionPublic Function StatusCallback(ByVal dwParam As Long) As Boolean
StatusCallback = True
End Function基本同意!
注意lib中加入路径:
Private Declare Function SMPPInitialize Lib "路径\smppapidll.dll" (ByVal lpszINIFileName As String) As Long
here is VB
如:SMPPInitialize "smpp.ini"无法调用,而调用SMPPConnect或SMPPDisconnect则可以。
这是为什么?
如:SMPPInitialize "smpp.ini"无法调用,而调用SMPPConnect或SMPPDisconnect则可以。
这是为什么?
http://expert.csdn.net/Expert/TopicView1.asp?id=2952906