正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!
您需要 登录 才可以下载或查看,没有账号?立即注册
x
GUID---Globally Unique Identifier(全球唯一标识符)是通过特定算法产生并具有唯一性的一个二进制长度为128位的数字,在安装过程中,有时需要生成GUID供安装过程调用,以下代码的出处是国外哪个网站已不记得了,只是自己用过不错,贴出来供大家参考。
- // 函数定义描述
- prototype OLE32.CoCreateGuid(POINTER);
- prototype OLE32.StringFromGUID2(POINTER, BYREF STRING, LONG);
- prototype CreateStringGUID (BYREF STRING);
-
- typedef GUID
- begin
- LONG Data1;
- SHORT Data2;
- SHORT Data3;
- STRING Date4[8];
- end;
- //---------------------------------------------------------------------------
- // 函数: CreateStringGUID---通过调用系统OLE32.DLL产生GUID字符串
- //---------------------------------------------------------------------------
- function CreateStringGUID(strGuid)
-
- NUMBER nResult, cbMax, i;
- GUID gGuid;
- GUID POINTER pGuid;
- STRING lpszGuid;
-
- begin
-
- // 初始化变量及函数指针
- pGuid = &gGuid;
- gGuid.Data1 = 0;
- gGuid.Data2 = 0;
- gGuid.Data3 = 0;
- cbMax = 64;
- if UseDLL(WINSYSDIR ^ "OLE32.dll") < 0 then
- MessageBox("不能打开 OLE32.DLL.文件!", WARNING);
- return -1;
- endif;
-
- // 调用OLE32.DLL中的函数CoCreateGuid获取GUID - pGuid
- nResult = CoCreateGuid(pGuid);
- if nResult < 0 then
- MessageBox("调用 OLE32.DLL 失败 - 函数:CoCreateGuid()", WARNING);
- return -1;
- endif;
-
- // 调用OLE32.DLL中的函数StringFromGUID2并转换pGuid为串 - strGuid
- nResult = StringFromGUID2(pGuid, lpszGuid, cbMax);
- if nResult < 0 then
- MessageBox("调用 OLE32.DLL 失败 - 函数:StringFromGUID2()", WARNING);
- return -1;
- endif;
-
- // 转换unicode串strGuid为ANSI串
- for i = 0 to nResult - 1
- strGuid[i] = lpszGuid [i*2];
- endfor;
-
- nResult = StrSub(strGuid, strGuid, 0, 39);
- if nResult < 0 then
- MessageBox("转换 GUID 失败.", WARNING);
- return -1;
- endif;
-
- nResult = UnUseDLL("OLE32.dll");
-
- end;
复制代码
保存上述代码为:CreateStringGUID.rul,在主程序中这样调用:
- #include "CreateStringGUID.rul"
- STRING StringGUID
- // 生成服务器GUID号
- CreateStringGUID(StringGUID);
复制代码 |