CASE Action = 'zscan' This.oFld.Self.Verbs.Item(5).DoItBut I think you should not worry about this one. The code is helpful enough and people should test and modify things in their own environment when implementing it in their app.
>******************************************************* >* * >* A free zip file handler for XP * >* * >* Alan Shepard Mar 2004 * >* * >* Objective :- * >* Use built in XP facilities to handle zip files. * >* * >* Most of the documented verbs work, but some * >* are rather iffy . * >* * >* To do :- * >* Find a way to extract a file from the zip. * >* Confirm that delay option stabilises oFld. * >* * >******************************************************* > >* Create a text files to play with >STRTOFILE('Rubbish','C:\temp\fred.txt',0) >STRTOFILE('More rubbish','C:\temp\joe.txt',0) > >* Create an object to handle the zip file >oZHandler = CREATEOBJECT('ZipHandler') > >* Try it out >WITH oZHandler > > * Zip contents methods (start with 'f'). > * Zip file methods (start with 'z'). > > SET STEP ON > * Step over each line below to see the result. > > .Doit('zNew','C:\temp\test.zip') && Create a new zip file. > .cZipName = 'C:\temp\test.zip' && Set the handler to point to the zip file. > .nDelay = 100 && Set the delay in milliseconds. > > .Doit('fAdd','C:\temp\fred.txt') && Place two text files in the zip file > .Doit('fAdd','C:\temp\joe.txt') > > * Troublesome methods >* .Doit('zProperties') && Zip file properties. Sometimes works. >* .Doit('zExtractTo') && Extract To. Fails for me. Try it. >* .Doit('zShort') && Create shortcut. I get 'File copy error' sometimes. >* .Doit('zRename') && Fails with OLE error. >* .Doit('zShort') && Creates a shortcut. Sometimes fails. > .Doit('zCut') && Cut. Seems to do nothing. > > * Methods that work > .Doit('fOpen','fred.txt') && View contents of a text file. > .Doit('zOpen') && View contents of the zip file. > .Doit('fCopy','fred.txt') && Copy. Copies to clipboard. > .Doit('fCut','fred.txt') && Cut. Seems to do nothing. > .Doit('fProperties','joe.txt') && Properties of joe.txt. > .Doit('fDelete','joe.txt') && Delete. > .Doit('zExplore') && Explore contents of the zip file. > .Doit('zSearch') && Search contents of a zip file. > .Doit('zExtractAll') && Extract contents of the zip file. > .Doit('zScan') && Anti Virus scan. > .Doit('zCopy') && Copy. Copies to clipboard. > >ENDWITH > >DEFINE CLASS ZipHandler AS Custom > > cZipName = '' > nDelay = 100 > oShell = '' > oFld = '' > oIts = '' > > PROCEDURE Init > > This.oShell = CREATEOBJECT("Shell.Application") > DECLARE INTEGER Sleep IN kernel32 AS Sleep ; > INTEGER dwMilliseconds > > ENDPROC > > PROCEDURE Doit > LPARAMETERS Action,FileName > > Action = LOWER(Action) > * All actions starting with 'z' apply to the zip file. > * All actions starting with 'f' apply to the contents. > > IF Action = 'znew' > This.cZipName = FileName > ELSE > > IF EMPTY(This.cZipName) > MESSAGEBOX('Can not find zip file '+This.cZipName) > RETURN > ELSE > * Create/renew a Folder object. > This.oFld = '' > DO WHILE TYPE('This.oFld') <> 'O' > This.oFld = This.oShell.NameSpace(This.cZipName) > ENDDO > ENDIF > * Create/renew an Items object. > This.oIts = '' > =Sleep(This.nDelay) > This.oIts = This.oFld.Items > > IF Action = 'f' AND Action <> 'fadd' > * Find the file in the Zip. > FOR t = 0 TO This.oIts.Count-1 > IF This.oIts.Item[t].Name = FileName > EXIT > ENDIF > ENDFOR > IF t = This.oIts.Count > MESSAGEBOX('Can not find '+FileName+' in '+This.cZipName) > RETURN > ENDIF > ENDIF > ENDIF > > DO CASE > > * Carry out Action on the zip file. > CASE Action = 'znew' > STRTOFILE('PK'+CHR(0x05)+CHR(0x06)+REPLICATE(CHR(0),18),FileName,0) > CASE Action = 'zopen' > This.oIts.Item.Verbs.Item[0].DoIt > CASE Action = 'zsearch' > This.oIts.Item.Verbs.Item[1].DoIt > CASE Action = 'zextractto' > This.oIts.Item.Verbs.Item[2].DoIt > CASE Action = 'zexplore' > This.oIts.Item.Verbs.Item[3].DoIt > CASE Action = 'zextractall' > This.oFld.Self.Verbs.Item(4).DoIt > CASE Action = 'zscan' > This.oFld.Self.Verbs.Item(5).DoIt > CASE Action = 'zcut' > This.oFld.Self.Verbs.Item(8).DoIt > CASE Action = 'zcopy' > This.oFld.Self.Verbs.Item(9).DoIt > CASE Action = 'zshort' > This.oFld.Self.Verbs.Item(10).DoIt > CASE Action = 'zshort' > This.oFld.Self.Verbs.Item(11).DoIt > CASE Action = 'zrename' > This.oFld.Self.Verbs.Item(12).DoIt > CASE Action = 'zproperties' > This.oFld.Self.Verbs.Item(13).DoIt > > * Carry out Action on the zip contents. > CASE Action = 'fadd' > This.oFld.CopyHere(FileName,0) > CASE Action = 'fopen' > This.oIts.Item(t).Verbs.Item(0).DoIt > CASE Action = 'fcut' > This.oIts.Item(t).Verbs.Item(1).DoIt > CASE Action = 'fcopy' > This.oIts.Item(t).Verbs.Item(2).DoIt > CASE Action = 'fdelete' > This.oIts.Item(t).Verbs.Item(3).DoIt > CASE Action = 'fproperties' > This.oIts.Item(t).Verbs.Item(4).DoIt > > OTHERWISE > > MESSAGEBOX('The action is not supported') > > ENDCASE > > ENDPROC > >ENDDEFINE >