ehxz 发表于 2011-10-18 15:07:04

pb中使用winapi生成全球唯一标示码(GUID,UUID) [pb8,pb11.5测试成功]

1、定义结构:
global type uuid from structure
        ulong                data1
        uint                data2
        uint                data3
        character                data4
end type


2、定义外部函数:
PB9及以下:
Function ulong UuidCreate(ref uuid lpUUID) LIBRARY "rpcrt4"
Function ulong UuidToString (ref uuid lpUUID, ref long lpUUIDString)LIBRARY "rpcrt4" Alias for "UuidToStringA;Ansi"
Function ulong RpcStringFree(long lpUUIDString) LIBRARY "rpcrt4"Alias for "RpcStringFreeA"

PB10及以上:
Function ulong UuidCreate(ref uuid lpUUID) LIBRARY "rpcrt4" alias for "UuidCreate;Ansi"
Function ulong UuidToString (ref uuid lpUUID, ref long lpUUIDString)LIBRARY "rpcrt4" Alias for "UuidToStringW;Ansi"
Function ulong RpcStringFree(long lpUUIDString) LIBRARY "rpcrt4"Alias for "RpcStringFreeW"

3、函数主体:
//====================================================================
// 事件: .gs_get_guid()
//--------------------------------------------------------------------
// 描述:
//--------------------------------------------------------------------
// 参数:
//--------------------------------------------------------------------
// 返回:string
//====================================================================

CONSTANT LongRPC_S_OK = 0
CONSTANT LongRPC_S_UUID_LOCAL_ONLY = 1824

Long ll_rtn
uuid u
ll_rtn = uuidcreate(u)//Create a new UUID
IF ll_rtn = RPC_S_OK OR ll_rtn = RPC_S_UUID_LOCAL_ONLY THEN
   Long ll_pointer
   String ls_uuid
   ll_rtn = UuidToString(u,ll_pointer)
   ls_uuid = Upper(String (ll_pointer,"Address")) //Convert it to a string

   RpcStringFree(ll_pointer)//Remove the string from the memory
   RETURN ls_uuid
ELSE
   RETURN ""
END IF

4、调用:
sle_1.text = gs_get_guid()

pb8,pb11.5测试成功
页: [1]
查看完整版本: pb中使用winapi生成全球唯一标示码(GUID,UUID) [pb8,pb11.5测试成功]

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com