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

朋友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           M e ssageBox( " 调用 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); 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值