- UID
- 3262
- 积分
- 76
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-3-23
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2004-8-3 20:24:09
|
显示全部楼层
感谢二楼,但还有一个问题,就是你在程序运行中如何调用guidgen.exe生成一个序列号,再把生成的序列号拿出来,谢谢!
感谢关心,我在网上已查到,是采用API方式,相当于guidgen.exe 非常感谢二楼的帮助!这里是vb的api代码希望对各位有用:
Option Explicit
'什么是GUID?GUID是Globally Unique IDentifier的缩写.由一个特殊的算法来产生这些128位的数
',并保证不产生重复的GUID—重复的可能性当然存在,但有太多可用的数了,因此算法特别防止产生重复的数,
'这种情况你一生都不会看到. ActiveX控件都有一个用于相互区别的GUID.你如何在自己的程序中使用GUID呢?
'例如,当一个数据库的每个条目都需要由一个唯一的键值时.下面的代码将给你一个答案:
'向窗体frmTest中放置一个名为cmdGUID的按钮和一个名为txtGUID的文本框 , 加入一下代码:
'Option Explicit
Private Type GUID
Data1 As Long
Data2 As Long
Data3 As Long
Data4(8) As Byte
End Type
Private Declare Function CoCreateGuid Lib "ole32.dll" (pguid As GUID) As Long
Private Declare Function StringFromGUID2 Lib "ole32.dll" (rguid As Any, ByVal lpstrClsId As Long, ByVal cbMax As Long) As Long
Private Function GUIDGen() As String
Dim uGUID As GUID
Dim sGUID As String
Dim bGUID() As Byte
Dim lLen As Long
Dim RetVal As Long
lLen = 40
bGUID = String(lLen, 0)
CoCreateGuid uGUID '把结构转换为一个可显示的字符串
RetVal = StringFromGUID2(uGUID, VarPtr(bGUID(0)), lLen)
sGUID = bGUID
If (Asc(Mid$(sGUID, RetVal, 1)) = 0) Then RetVal = RetVal - 1
GUIDGen = Left$(sGUID, RetVal)
End Function
Private Sub Command1_Click()
txtGUID.Text = GUIDGen
End Sub |
|