#include "windows.bi" #include once "win/ole2.bi" #include once "win/objbase.bi" #include once "win\oleacc.bi" #include once "win\oleidl.bi" #include once "win\ocidl.bi" #include once "win\exdisp.bi" #include once "win\exdispid.bi" #include once "win\winerror.bi" #define DEFINE_GUID2(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) dim shared n as GUID = (l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}) #define NewGuid(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) DEFINE_GUID2(n,&h##l,&h##w1,&h##w2,&h##b1,&h##b2,&h##b3,&h##b4,&h##b5,&h##b6,&h##b7,&h##b8) NewGuid(IID_IHTMLDocument4 ,3050F69A,98B5,11CF,BB,82,00,AA,00,BD,CE,0B) NewGuid(CLSID_InternetExplorer ,8856F961,340A,11D0,A9,6B,00,C0,4F,D7,05,A2) function QueryGUIDString(pGuid as any ptr) as string dim sGUID as string, wTemp as wstring ptr = any if ProgIDFromCLSID(pGuid,@wTemp) = S_OK then sGUID = *wTemp: CoTaskMemFree( wTemp ) else StringFromCLSID(pGuid,@wTemp) sGUID = *wTemp: CoTaskMemFree( wTemp ) dim as HKEY TempKey if RegOpenKey(HKEY_CLASSES_ROOT,"Interface\",@TempKey) = ERROR_SUCCESS then dim zValue as zstring*256, iSz as integer = 256 if RegQueryValue(TempKey,sGUID,@zValue,@iSz) = ERROR_SUCCESS then if iSz then sGUID = zValue end if RegCloseKey(TempKey) end if end if return sGUID end function print QueryGUIDString(@CLSID_InternetExplorer) print QueryGUIDString(@IID_IHTMLDocument4) sleep