文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>转帖:InstallShield---如何使用脚本生成GUID

转帖:InstallShield---如何使用脚本生成GUID

时间:2010-09-01  来源:Kevin.Wan

朋友Fishout写了一篇关于在InstallShield中,如何用脚本生成GUID,写的非常好,在征得朋友Fishout的同意后特转到这里与大家分享,原文链接:http://blog.csdn.net/fishout/archive/2010/09/01/5855822.aspx

版权归原作者所有,未经同意严禁转载,大家也可以访问Fishout的Blog

 

下面是全文:

作者:Fishout 

GUID---Globally Unique Identifier(全球唯一标识符)是通过特定算法产生并具有唯一性的一个二进制长度为128位的数字,在安装过程中,有时需要生成GUID供安装过程调用,以下代码的出处是国外哪个网站已不记得了,只是自己用过不错,贴出来供大家参考。

 1 // 函数定义描述
 2 prototype OLE32.CoCreateGuid(POINTER);
 3 prototype OLE32.StringFromGUID2(POINTER, BYREF STRING, LONG);
 4 prototype CreateStringGUID (BYREF STRING);
 5 
 6 typedef GUID
 7 begin
 8     LONG Data1;
 9     SHORT Data2;
10     SHORT Data3;
11     STRING  Date4[8];
12 end;
13 //---------------------------------------------------------------------------
14 // 函数:  CreateStringGUID---通过调用系统OLE32.DLL产生GUID字符串
15 //---------------------------------------------------------------------------
16 function CreateStringGUID(strGuid)
17 
18 NUMBER nResult, cbMax, i;
19 GUID gGuid;
20 GUID POINTER pGuid;
21 STRING lpszGuid;
22 
23 begin
24 
25     // 初始化变量及函数指针
26     pGuid = &gGuid;
27     gGuid.Data1 = 0;
28     gGuid.Data2 = 0;
29     gGuid.Data3 = 0;
30     cbMax = 64;
31     if UseDLL(WINSYSDIR ^ "OLE32.dll") < 0 then
32         MessageBox("不能打开 OLE32.DLL.文件!", WARNING);
33         return -1;
34     endif;
35 
36     // 调用OLE32.DLL中的函数CoCreateGuid获取GUID - pGuid
37     nResult = CoCreateGuid(pGuid);
38     if nResult < 0 then
39         MessageBox("调用 OLE32.DLL 失败 - 函数:CoCreateGuid()", WARNING);
40         return -1;
41     endif;
42 
43     // 调用OLE32.DLL中的函数StringFromGUID2并转换pGuid为串 - strGuid
44     nResult = StringFromGUID2(pGuid, lpszGuid, cbMax);
45     if nResult < 0 then
46         MessageBox("调用 OLE32.DLL 失败 - 函数:StringFromGUID2()", WARNING);
47         return -1;
48     endif;
49 
50     // 转换unicode串strGuid为ANSI串
51     for i = 0 to nResult - 1
52         strGuid[i] = lpszGuid [i*2];
53     endfor;
54     
55     nResult = StrSub(strGuid, strGuid, 0, 39);
56     if nResult < 0 then
57         MessageBox("转换 GUID 失败.", WARNING);
58         return -1;
59     endif;
60 
61     nResult = UnUseDLL("OLE32.dll");
62 
63 end;

保存上述代码为:CreateStringGUID.rul,在主程序中这样调用:

#include "CreateStringGUID.rul"
STRING StringGUID

// 生成服务器GUID号

CreateStringGUID(StringGUID); 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载