VB编写的dll怎么实现注册码功能(用于网页处理的dll)

fisheep_works 2008-03-06 02:13:16
我写了一个dll 但是不知道如何实现注册功能。。。

我想让dll 实现一个网站使用一个注册码

我是想用IP和域名做为注册依据,编写asp的注册功能还不错 不过php调用不了网站的IP和域名等数据


各位大侠帮帮忙 怎么来实现注册码功能呢?!

小弟万分感谢
...全文
185 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
supergreenbean 2008-03-09
  • 打赏
  • 举报
回复
oh ha,那就这么做好了。我们的思路是一样滴
fisheep_works 2008-03-09
  • 打赏
  • 举报
回复
嘿嘿 小弟迟钝,现在才反应过来IP地址可以通过一下代码获取

Private Const SOCKET_ERROR As Long = -1
Private Const MAX_WSADescription = 256
Private Const MAX_WSASYSStatus = 128
Private Const ERROR_SUCCESS As Long = 0
Private Const WS_VERSION_REQD As Long = &H101
Private Const MIN_SOCKETS_REQD As Long = 1
Private Const WS_VERSION_MAJOR As Long = WS_VERSION_REQD \ &H100 And &HFF&
Private Const WS_VERSION_MINOR As Long = WS_VERSION_REQD And &HFF&

Private Type HOSTENT
hName As Long
hAliases As Long
hAddrType As Integer
hLen As Integer
hAddrList As Long
End Type

Private Type WSADATA
wVersion As Integer
wHighVersion As Integer
szDescription(0 To MAX_WSADescription) As Byte
szSystemStatus(0 To MAX_WSASYSStatus) As Byte
wMaxSockets As Integer
wMaxUDPDG As Integer
dwVendorInfo As Long
End Type

Private Declare Function gethostname Lib "WSOCK32.DLL" (ByVal szHost As String, ByVal dwHostLen As Long) As Long
Private Declare Function gethostbyname Lib "WSOCK32.DLL" (ByVal szHost As String) As Long
Private Declare Function WSAStartup Lib "WSOCK32.DLL" (ByVal wVersionRequired As Long, lpWSADATA As WSADATA) As Long
Private Declare Function WSAGetLastError Lib "WSOCK32.DLL" () As Long
Private Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long)

Private Function GetIPAddress(Optional sHost As String) As String
'返回给定机器名的Ip地址,机器名为空时返回本机Ip地址
Dim sHostName As String * 256
Dim lpHost As Long
Dim HOST As HOSTENT
Dim dwIPAddr As Long
Dim tmpIPAddr() As Byte
Dim i As Integer
Dim sIPAddr As String
Dim werr As Long

If Not SocketsInitialize() Then
GetIPAddress = ""
Exit Function
End If

If sHost = "" Then
If gethostname(sHostName, 256) = SOCKET_ERROR Then
werr = WSAGetLastError()
GetIPAddress = ""
SocketsCleanup
Exit Function
End If

sHostName = Trim$(sHostName)
Else
sHostName = Trim$(sHost) & Chr$(0)
End If

lpHost = gethostbyname(sHostName)

If lpHost = 0 Then
werr = WSAGetLastError()
GetIPAddress = ""
SocketsCleanup
Exit Function
End If


CopyMemory HOST, lpHost, Len(HOST)
CopyMemory dwIPAddr, HOST.hAddrList, 4

ReDim tmpIPAddr(1 To HOST.hLen)
CopyMemory tmpIPAddr(1), dwIPAddr, HOST.hLen

For i = 1 To HOST.hLen
sIPAddr = sIPAddr & tmpIPAddr(i) & "."
Next

GetIPAddress = Mid$(sIPAddr, 1, Len(sIPAddr) - 1)
SocketsCleanup
End Function

Private Function SocketsInitialize(Optional sErr As String) As Boolean
Dim WSAD As WSADATA, sLoByte As String, sHiByte As String
If WSAStartup(WS_VERSION_REQD, WSAD) <> ERROR_SUCCESS Then
sErr = "The 32-bit Windows Socket is not responding."
SocketsInitialize = False
Exit Function
End If

If WSAD.wMaxSockets < MIN_SOCKETS_REQD Then
sErr = "This application requires a minimum of " & _
CStr(MIN_SOCKETS_REQD) & " supported sockets."

SocketsInitialize = False
Exit Function
End If


If LoByte(WSAD.wVersion) < WS_VERSION_MAJOR Or _
(LoByte(WSAD.wVersion) = WS_VERSION_MAJOR And _
HiByte(WSAD.wVersion) < WS_VERSION_MINOR) Then

sHiByte = CStr(HiByte(WSAD.wVersion))
sLoByte = CStr(LoByte(WSAD.wVersion))

sErr = "Sockets version " & sLoByte & "." & sHiByte & _
" is not supported by 32-bit Windows Sockets."

SocketsInitialize = False
Exit Function
End If
SocketsInitialize = True
End Function

Private Sub SocketsCleanup()
If WSACleanup() <> ERROR_SUCCESS Then
App.LogEvent "Socket error occurred in Cleanup.", vbLogEventTypeError
End If
End Sub

Private Function HiByte(ByVal wParam As Integer)
HiByte = wParam \ &H1 And &HFF&
End Function

Private Function LoByte(ByVal wParam As Integer)
LoByte = wParam And &HFF&
End Function

IP地址可以通过GetIPAddress函数获取 不过域名就不知如何获取了。。。这样同ip的网站就可以同时使用一个注册码了。。。

大侠我的QQ号是86781823 要是可以的话加QQ聊聊 不过还是谢谢你了哈
fisheep_works 2008-03-08
  • 打赏
  • 举报
回复
我的思路是 在dll中把注册码解密一下 看是否和传入的IP和域名是否一致。。。

请问大哥的方法是?

不过经大哥的一提示也对我大有启发。。。
supergreenbean 2008-03-08
  • 打赏
  • 举报
回复
汗死,你注册码的计算过程是在dll中么?是的话就在dll中根据传入的ip和域名计算一次注册码,然后跟机器中保存的注册码核对一下。
fisheep_works 2008-03-07
  • 打赏
  • 举报
回复
用类似这样方法传进去
Public Function GetSN(ip,svrname)
'生成注册码
'GetSN=....
End Function


<?
$obj=new COM("ConDBDLL.cs");
$sn=$obj-> GetSN($HTTP_SERVER_VARS["LOCAL_ADDR"],$HTTP_SERVER_VARS["SERVER_NAME"]);
?>

传进去后怎么确认这是真的呢?
注册码可以确认是真的,不过这个需要什么方法来确认是真的呢?!


谢谢各位大侠的关注了哈 十分感谢
supergreenbean 2008-03-07
  • 打赏
  • 举报
回复
用类似这样方法传进去
Public Function GetSN(ip,svrname)
'生成注册码
'GetSN=....
End Function


<?
$obj=new COM("ConDBDLL.cs");
$sn=$obj->GetSN($HTTP_SERVER_VARS["LOCAL_ADDR"],$HTTP_SERVER_VARS["SERVER_NAME"]);
?>
fisheep_works 2008-03-07
  • 打赏
  • 举报
回复
dll中我不知如何引用PHP的相关函数 以至于无非进行计算。。。




新建一个VB下的ActiveX DLL工程,工程的名称Project1更改成ConDBDLL?? 方法class1的名称更改成cs
工程名和方法名会在调用这个DLL的时候使用到,大家可以按照自己命名规则定义,但请注意好好使用。
这个DLL的代码部分书写如下:

Dim rp As Response
Dim rq As Request
Dim ap As Application
Dim sr As Server
Dim sn As Session

Public Sub OnStartPage(MyScriptingContext As ScriptingContext)
Set rp = MyScriptingContext.Response
Set rq = MyScriptingContext.Request
Set sr = MyScriptingContext.Server
Set ap = MyScriptingContext.Application
Set sn = MyScriptingContext.Session
End Sub

Public Sub OnEndPage()
Set rp = Nothing
Set rq = Nothing
Set sr = Nothing
Set ap = Nothing
Set sn = Nothing
End Sub

给这个工程添加 "Microsoft Active Server Pages ObjectContext Object Library " 的 Reference
添加方法,选择菜单中的 "Project "-> "Reference ",在打开的对话框里选择。
对了,还要选择上 "microsoft activeX data objects 2.6 library "

--------------------------
如此就可以在asp页面中引用asp函数 比如我想用到的rq.ServerVariables("LOCAL_ADDR") 和 rq.ServerVariables("SERVER_NAME")
通过这两个值就可以进行注册码计算。。。

不过这个方法在PHP页面中就出现错误。。。调用不了上面的两个函数 导致错误。。。

不过小弟就是不知如何在dll中引用PHP函数来进行计算
vbhero 2008-03-07
  • 打赏
  • 举报
回复
获取访问网站的地址,提交过程中,给一个参数

然后在里面做个内部算法,计算参数结果,和你(网址+参数)算法程序 ,是否相同

fisheep_works 2008-03-06
  • 打赏
  • 举报
回复
谢谢楼上的了哈
东方之珠 2008-03-06
  • 打赏
  • 举报
回复
我不会!支持一下。

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧