Code: Select all
EnableExplicit
Global path.s = OpenFileRequester("ADS",GetUserDirectory(#PB_Directory_Downloads),"*.*",1)
Structure WIN32_FIND_STREAM_DATA
StreamSize.q;
cStreamName.s{#MAX_PATH+36}
EndStructure
Prototype.i FindFirstStreamW(filename.s,infolevel,*out,flags.l)
Prototype.i FindNextStreamW(hFindStream.l,*out)
Global FindFirstStream.FindFirstStreamW
Global FindNextStream.FindNextStreamW
Procedure.s ReadADS(file.s)
Protected handle,out.s,lib,*mem ,fn
Protected NewList sinfo.WIN32_FIND_STREAM_DATA()
lib = OpenLibrary(-1,"Kernel32.dll")
If lib
FindFirstStream.FindFirstStreamW = GetFunction(lib,"FindFirstStreamW")
FindNextStream.FindNextStreamW = GetFunction(lib,"FindNextStreamW")
If path <> ""
AddElement(sinfo())
handle = FindFirstStream(path,0,@sinfo(),0)
If handle > 0
While FindNextStream(Handle,@sinfo()) > 0
AddElement(sinfo())
Wend
EndIf
ForEach sinfo()
If sinfo()\StreamSize
*mem = AllocateMemory(sinfo()\StreamSize)
out.s = PeekS(@sinfo()\cStreamName,-1)
fn = OpenFile(-1,path+out)
If fn
ReadData(fn,*mem,sinfo()\StreamSize)
out + PeekS(*mem,sinfo()\StreamSize,#PB_Ascii) + #CRLF$
CloseFile(fn)
EndIf
FreeMemory(*mem)
EndIf
Next
EndIf
CloseLibrary(lib)
EndIf
ProcedureReturn out
EndProcedure
Debug ReadADS(path)