Consultor Eletrônico



Kbase 33288: How to call the CoCreateGuid API from Progress?
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   5/10/1998
Solution ID: P3288

GOAL:

How to call the CoCreateGuid API from Progress?

FACT(s) (Environment):

Windows NT 4.0

FIX:


DEFINE VARIABLE cGuid AS CHARACTER NO-UNDO.
DEFINE VARIABLE createGUID AS CHARACTER NO-UNDO INITIAL ''.
DEFINE VARIABLE iResult AS INTEGER NO-UNDO.
DEFINE VARIABLE iLoop AS INTEGER NO-UNDO.

ASSIGN cGuid = FILL(' ', 16).

FUNCTION IntToHex RETURNS CHARACTER (i AS INTEGER) FORWARD.

RUN CoCreateGuid (OUTPUT cGUID, OUTPUT iResult).

IF iResult = 0 THEN
DO iLoop = 1 TO 16:
ASSIGN createGUID = createGuid + IntToHex(ASC(SUBSTRING(cGuid,iLoop,1))).
END.

MESSAGE createGUID VIEW-AS ALERT-BOX.

PROCEDURE CoCreateGuid EXTERNAL "ole32.dll":
DEFINE OUTPUT PARAMETER pGUID AS CHARACTER NO-UNDO.
DEFINE RETURN PARAMETER res AS LONG NO-UNDO.
END PROCEDURE.

FUNCTION IntToHex RETURNS CHARACTER (INPUT i AS INTEGER):
DEFINE VARIABLE cHex AS CHARACTER NO-UNDO INITIAL '0123456789ABCDEF'.
DEFINE VARIABLE j1 AS INTEGER NO-UNDO.
DEFINE VARIABLE j2 AS INTEGER NO-UNDO.

ASSIGN j1 = TRUNCATE(i / 16, 0)
j2 = i - (j1 * 16).

RETURN SUBSTRING(cHex, j1 + 1, 1) + SUBSTRING(cHex, j2 + 1, 1).
END FUNCTION.