Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
How to use ProgIDFromCLSID API function?
Message
From
27/02/2008 10:31:20
Lu Ping
Zhuhai Tec Co.
Zhuhai, China
 
General information
Forum:
Visual FoxPro
Category:
COM/DCOM and OLE Automation
Miscellaneous
Thread ID:
01296369
Message ID:
01296848
Views:
15
Durban ,Thank you very much!



>Hi Lu,
>
>This is one of the trickier APIs because of the memory handle. But here is a sample function that shows how it is used in VFP:
>
>
>?GetProgID([{002D2B10-C1FA-4193-B134-D86EAECC5250}])
>
>********************************************************
>FUNCTION GetProgID(tcCLSID)
>
>  LOCAL lqCLSID, lcProgID, lhMem
>
>  DO CASE
>  CASE LEN(tcCLSID) = 16
>    lqCLSID = tcCLSID
>  CASE LIKE([{????????-????-????-????-????????????}],tcCLSID)
>    lqCLSID = REPLICATE(0h00,16)
>
>    IF CLSIDFromString(STRCONV(tcCLSID+CHR(0),5),@lqCLSID) <> 0
>      ERROR "Invalid CLSID"
>    ENDIF
>  OTHERWISE
>    ERROR "Invalid CLSID"
>  ENDCASE
>
>  lhMem = 0
>  lcProgID = ""
>  IF ProgIDFromCLSID(lqCLSID, @lhMem) = 0
>    lcProgID = STRCONV(SYS(2600, lhMem, 80),6)
>    lcProgID = LEFT(lcProgID, AT(CHR(0),lcProgID)-1)
>    LocalFree(lhMem)
>  ENDIF
>
>  RETURN lcProgID
>
>ENDFUNC
>
>********************************************************
>FUNCTION ProgIDFromCLSID(tcCLSID, tnProgID)
>  DECLARE Long ProgIDFromCLSID IN ole32 String, Long@
>  RETURN ProgIDFromCLSID(tcCLSID, @tnProgID)
>ENDFUNC
>
>********************************************************
>FUNCTION CLSIDFromString(tcString, tcCLSID)
>  DECLARE Long CLSIDFromString IN ole32 String, String@
>  RETURN CLSIDFromString(tcString, @tcCLSID)
>ENDFUNC
>
>********************************************************
>FUNCTION LocalFree(nHandle)
>  DECLARE Long LocalFree IN WIN32API Long
>  RETURN LocalFree(nHandle)
>ENDFUNC
>
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform