>DECLARE INTEGER InternetQueryOption IN WinInet.dll ;
> INTEGER hInternet, ;
> STRING dwOption, ;
> STRING @lpBuffer, ;
> LONG @lpdwBufferLength
>
>DECLARE INTEGER InternetOpen IN WININET.DLL ;
> STRING, ;
> INTEGER, ;
> STRING, ;
> STRING, ;
> INTEGER
>
>hInternet = InternetOpen("EKraft Web Application", 0, NULL,NULL,0)
>
>lpdwBufferLength = 0
>lpBuffer = SPACE(0)
>dwOption = NumToDWord(41)
>?InternetQueryOption(hInternet, dwOption, @lpBuffer, @lpdwBufferLength)
>
>BOOL InternetQueryOption( > IN HINTERNET hInternet, > IN DWORD dwOption, > OUT LPVOID lpBuffer, > IN OUT LPDWORD lpdwBufferLength >); > > DECLARE SHORT InternetQueryOption IN WinInet.DLL INTEGER hInternet, ; INTEGER dwOption ; STRING @ lpBuffer INTEGER @ lpdwBufferLength I might be inclined to allocate a static block using CLSHEAP if the buffer might contain self-referential pointers, in which case, I'd allocate a block and pass the pointer: DECLARE SHORT InternetQueryOption IN WinInet.DLL INTEGER hInternet, ; INTEGER dwOption ; INTEGER lpBuffer INTEGER @ lpdwBufferLength SET PROC TO CLSHEAP ADDITIVE oHeap = CREATEOBJ('Heap') nBuffLen = 4096 nBuffPtr = oHeap.Alloc(nBuffLen) dwOption = NumToDWord(41) ? InternetQueryOption(hInternet, dwOption, @nBuffPtr, @nBuffLen)You could then copt back the buffer using the reutrned pointer.