saeedada
یک شنبه 15 شهریور 1394, 13:12 عصر
با سلام.
من با vb6 یک dll ساختم که کارش ارسال پیامک می باشد.
مقدار خروجی کد dll یک عدد می باشد که نشان دهنده وضعیت پیامک می باشد. (0 =ارسال شده , 1= ارسال نشده و ...)
من کد این dll را در برنامه ام فراخوانی میکنم و پیامک ارسال میشه اما مقدار بازگشتی به برنامه ام ارسال نمیشه.
به صورت ماژول مقدار را بر میگردونه اما به صورت dll نه!!!!
مشکل کجاست؟
کد فایل dll
Private Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" _
(ByVal ozAgent As String, ByVal ozAccessType As Long, ByVal ozProxyName As String, _
ByVal ozProxyBypass As String, ByVal ozFlags As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet" (ByRef ozInet As Long) As Long
Private Declare Function InternetReadFile Lib "wininet" _
(ByVal ozGetFile As Long, ByVal ozBuffer As String, ByVal ozNumBytesToRead As Long, ozNumberOfBytesRead As Long) As Integer
Private Declare Function InternetOpenUrl Lib "wininet" Alias "InternetOpenUrlA" _
(ByVal ozInternetSession As Long, ByVal ozUrl As String, ByVal ozHeaders As String, _
ByVal ozHeadersLength As Long, ByVal ozFlags As Long, ByVal ozContext As Long) As Long
Dim urlencd As New URLEncoding.UTF8
Public Function sendapirequest(ByVal khat As String, ByVal num As String, ByVal message As String, ByVal pass As String, ByVal user As String) As String
Dim SendString As String
message = urlencd.EncodeStr(message)
addr = "**********"
SendString = "http://" + addr + "***********" + khat + "&to=" + num + "&text=" + message + "&password=" + pass + "&username=" + user
Dim ozConnOpen As Long, ozGetFile As Long
Dim ozReturnValue As Long, ozBuffer As String * 128
Dim ozData As String
ozConnOpen = InternetOpen("Ozeki HTTP client", 1, vbNullString, vbNullString, 0)
If ozConnOpen = 0 Then
MsgBox "No Internet connection avaible"
Exit Function
End If
ozGetFile = InternetOpenUrl(ozConnOpen, SendString, vbNullString, 0, &H4000000, 0)
InternetReadFile ozGetFile, ozBuffer, 128, ozReturnValue
ozData = ozBuffer
Do While ozReturnValue <> 0
InternetReadFile ozGetFile, ozBuffer, 128, ozReturnValue
ozData = ozData + Mid(ozBuffer, 1, ozReturnValue)
Loop
InternetCloseHandle ozGetFile
InternetCloseHandle ozConnOpen
send = ozData
result = ozData
ozData = ""
End Function
کد تابع برنامه:
Dim urlencd As New URLEncoding.UTF8
Dim result As String
Dim send As New relax.Class1
Dim addr As String
Private Sub btnSend_Click()
Dim num As String
Dim user As String
Dim pass As String
Dim khat As String
Dim SendString As String
Dim message As String
num = txport
user = txuname
pass = txpassword
khat = txnum
message = tbmessage
label1.Caption = send.sendapirequest(khat, num, message, pass, user)
End Sub
من با vb6 یک dll ساختم که کارش ارسال پیامک می باشد.
مقدار خروجی کد dll یک عدد می باشد که نشان دهنده وضعیت پیامک می باشد. (0 =ارسال شده , 1= ارسال نشده و ...)
من کد این dll را در برنامه ام فراخوانی میکنم و پیامک ارسال میشه اما مقدار بازگشتی به برنامه ام ارسال نمیشه.
به صورت ماژول مقدار را بر میگردونه اما به صورت dll نه!!!!
مشکل کجاست؟
کد فایل dll
Private Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" _
(ByVal ozAgent As String, ByVal ozAccessType As Long, ByVal ozProxyName As String, _
ByVal ozProxyBypass As String, ByVal ozFlags As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet" (ByRef ozInet As Long) As Long
Private Declare Function InternetReadFile Lib "wininet" _
(ByVal ozGetFile As Long, ByVal ozBuffer As String, ByVal ozNumBytesToRead As Long, ozNumberOfBytesRead As Long) As Integer
Private Declare Function InternetOpenUrl Lib "wininet" Alias "InternetOpenUrlA" _
(ByVal ozInternetSession As Long, ByVal ozUrl As String, ByVal ozHeaders As String, _
ByVal ozHeadersLength As Long, ByVal ozFlags As Long, ByVal ozContext As Long) As Long
Dim urlencd As New URLEncoding.UTF8
Public Function sendapirequest(ByVal khat As String, ByVal num As String, ByVal message As String, ByVal pass As String, ByVal user As String) As String
Dim SendString As String
message = urlencd.EncodeStr(message)
addr = "**********"
SendString = "http://" + addr + "***********" + khat + "&to=" + num + "&text=" + message + "&password=" + pass + "&username=" + user
Dim ozConnOpen As Long, ozGetFile As Long
Dim ozReturnValue As Long, ozBuffer As String * 128
Dim ozData As String
ozConnOpen = InternetOpen("Ozeki HTTP client", 1, vbNullString, vbNullString, 0)
If ozConnOpen = 0 Then
MsgBox "No Internet connection avaible"
Exit Function
End If
ozGetFile = InternetOpenUrl(ozConnOpen, SendString, vbNullString, 0, &H4000000, 0)
InternetReadFile ozGetFile, ozBuffer, 128, ozReturnValue
ozData = ozBuffer
Do While ozReturnValue <> 0
InternetReadFile ozGetFile, ozBuffer, 128, ozReturnValue
ozData = ozData + Mid(ozBuffer, 1, ozReturnValue)
Loop
InternetCloseHandle ozGetFile
InternetCloseHandle ozConnOpen
send = ozData
result = ozData
ozData = ""
End Function
کد تابع برنامه:
Dim urlencd As New URLEncoding.UTF8
Dim result As String
Dim send As New relax.Class1
Dim addr As String
Private Sub btnSend_Click()
Dim num As String
Dim user As String
Dim pass As String
Dim khat As String
Dim SendString As String
Dim message As String
num = txport
user = txuname
pass = txpassword
khat = txnum
message = tbmessage
label1.Caption = send.sendapirequest(khat, num, message, pass, user)
End Sub