` Save screenshot of web page (Menno De Ruiter) - Icetips Article
Icetips - Templates, Tools & Utilities for Clarion Developers

Templates, Tools and Utilities
for Clarion Developers

Icetips Article

Back to article list   Search Articles     Add Comment     Printer friendly     Direct link  

Windows API: Save screenshot of web page
2006-04-13 -- Menno De Ruiter
 
Editors note: This contains over 800 lines of code, most of which are commented out. Some lines are long and may break. This is posted as is and no editing or testing/verification of the code has been made. >I want to scale down a web page (determined by a URL) and display it as an >image on a Clarion control of some sort - maybe I am dreaming ! .. in combination with Capesoft FileExplorer i use this.. MakeDC Routine Data TV Group,pre(),Dim(2) TV_X long TV_Y long TV_R ushort TV_G ushort TV_B ushort TV_A ushort End RV Group,pre() RV_X ULong RV_Y ULong End returnval long Code barsSheet_BkGndDCHnd = GetWindowDC(ThisIEWin{Prop:Handle}) TBar_BkGndDCHnd = CreateCompatibleDC(barsSheet_BkGndDCHnd) R# = ReleaseDC(ThisIEWin{Prop:Handle},barsSheet_BkGndDCHnd) X# = SetMapMode(TBar_BkGndDCHnd,MM_TEXT) TBar_BFH.TBar_BFHType = 19778 TBar_BFH.TBar_BFHSize = 0 TBar_BFH.TBar_BFHReserved1 = 0 TBar_BFH.TBar_BFHReserved2 = 0 TBar_BFH.TBar_BFHOffBits = 54 TBar_BIH.TBar_BIHSize = Size(TBar_BIH) TBar_BIH.TBar_BIHWidth = ?feControl{Prop:Width} - 20 TBar_BIH.TBar_BIHHeight = TotalPages * 800 TBar_BIH.TBar_BIHPlanes = 1 TBar_BIH.TBar_BIHBitCount = 24 TBar_BIH.TBar_BIHCompression = 0 TBar_BIH.TBar_BIHSizeImage = 0 TBar_BIH.TBar_BIHXPelsPerMeter = 0 TBar_BIH.TBar_BIHYPelsPerMeter = 0 TBar_BIH.TBar_BIHClrUsed = 0 TBar_BIH.TBar_BIHClrImportant = 0 TBar_DIBSectionHnd = CreateDIBSection(TBar_BkGndDCHnd,Address(TBar_BIH),0,Address(TBar_Ptr_DIBits),0,0) ReturnVal = SelectObject(TBar_BkGndDCHnd,TBar_DIBSectionHnd) ...and something like this in the time (look at the bitblt) !!! If IndexFilesFromProxyFilesBOOL = True !!! Do IndexFilesFromProxyFilesLOOP !!! End !If GoPrn = True If SendStop = True SendStop = False ThisViewer2.Stop() End If TotalPages <> 3 TotalPages = 3 End If DoBitBlt = False Case StartPrinting Of 1 SavedPage = False CurrentPage = 0 Do MakeDC StartPrinting = 2 CurrentPage = 1 NewPage = CurrentPage Of TotalPages Do SaveDC StartPrinting = 0 CurrentPage = 0 SavedPage = True NewPage = CurrentPage ThisIEWin{Prop:YPos} = DefaultY Else If StartPrinting > 0 And StartPrinting < TotalPages HeightNow = 800 ! Execute CurrentPage ThisIEWin{Prop:YPos} = DefaultY ! ThisIEWin{Prop:YPos} = DefaultY-(HeightNow*1) ! ThisIEWin{Prop:YPos} = DefaultY-(HeightNow*2) ! ThisIEWin{Prop:YPos} = DefaultY-(HeightNow*3) ! ThisIEWin{Prop:YPos} = DefaultY-(HeightNow*4) ! ThisIEWin{Prop:YPos} = DefaultY-(HeightNow*5) ! ThisIEWin{Prop:YPos} = DefaultY-(HeightNow*6) ! ThisIEWin{Prop:YPos} = DefaultY-(HeightNow*7) ! ThisIEWin{Prop:YPos} = DefaultY-(HeightNow*8) ! ThisIEWin{Prop:YPos} = DefaultY-(HeightNow*9) ! ThisIEWin{Prop:YPos} = DefaultY-(HeightNow*10) ! ThisIEWin{Prop:YPos} = DefaultY-(HeightNow*11) ! ThisIEWin{Prop:YPos} = DefaultY-(HeightNow*12) ! ThisIEWin{Prop:YPos} = DefaultY-(HeightNow*13) ! ThisIEWin{Prop:YPos} = DefaultY-(HeightNow*14) ! ThisIEWin{Prop:YPos} = DefaultY-(HeightNow*15) ! End DoBitBltTimeOut = Clock() + 30 DoBitBlt =True NewPage = CurrentPage End End End If DoBitBlt = True And DoBitBltTimeOut < Clock() And StillLoading = False DoBitBlt = False barsSheet_BkGndDCHnd = GetDC(ThisIEWin{Prop:Handle}) X# = BitBlt(TBar_BkGndDCHnd,0,0,TBar_BIH.TBar_BIHWidth,TBar_BIH.TBar_BIHHeight,barsSheet_BkGndDCHnd,0,0,SRCCOPY) ! Y# = 0 ! C# = 0 ! Loop 18 Times ! C# = C# + 1 ! If C# = (CurrentPage) ! If TBar_BkGndDCHnd <> 0 ! !If CurrentPage = 1 ! ! X# = BitBlt(TBar_BkGndDCHnd,0,(CurrentPage*800)-800-4,TBar_BIH.TBar_BIHWidth-8,800,barsSheet_BkGndDCHnd,0,(CurrentPage*800)-800-4,SRCCOPY) ! !Else ! X# = BitBlt(TBar_BkGndDCHnd,0,0,TBar_BIH.TBar_BIHWidth,TBar_BIH.TBar_BIHHeight,barsSheet_BkGndDCHnd,0,0,SRCCOPY) ! !End ! PrintScreened = PrintScreened + 1 ! Else ! message('dc error') ! End ! Break ! End ! End R# = ReleaseDC(ThisIEWin{Prop:Handle},barsSheet_BkGndDCHnd) StartPrinting = StartPrinting + 1 CurrentPage = CurrentPage + 1 End If NewSiteNumber > 0 If NewSiteNumber <> OldSiteNumber OldSiteNumber = NewSiteNumber Scanned = False !?ListQSites{Prop:Selected} = NewSiteNumber Get(QSites,NewSiteNumber) ! Sit:Number = QSit:Number ! Share(Sites) ! Get(Sites,Sit:IX_Sites_Number) ! !Sit:IX_Sites_URL ! TheFolderNow = Clip(Sit:URL) ! !Do cBulletinCreate2 URL2Go = Clip(QSit:URL) Change(?fePath, URL2Go) ThisViewer2.Load (URL2Go) ThisViewer2.fe_Path = Clip(URL2Go) StillLoading = True End End !End ! If ScreenPrinted = False ! If ScreenPrintTimeOut < Clock() ! ScreenPrinted = True ! Do PrintScreenIE ! End ! End !! If RetrieveFileData = True ! SearchString = '.js' ! !G = 0 ! Loop 1 Times ! G = G + 1 ! If G > 1000 ! StartRetrieveFileData = 0 ! Break ! End ! Get(QTasks,G) ! ! Dos64kFileName = URL2Go ! ! Share(Dos64kFile) ! Set(Dos64kFile) ! ! Clear(ReadData) ! T# = 1 ! S# = Bytes(Dos64kFile) ! Loop ! Next(Dos64kFile) ! If Errorcode() <> 0 ! ef# = True ! End ! ReadData[T# : T# + 64000 -1] = Dos64kPre:Line ! If ef# = True ! break ! End ! T# = T# + 64000 ! If T# + 64000 > Size(ReadData) then break. ! End ! ! QFFiles:QSitesNumber = QSit:Number ! !!!! QFFiles:FileAndPathName = Clip(Left(QFFiles:FileAndPathName)) !! QSit:Number = QFFiles:QSitesNumber !! Get(QSites,+QSit:Number) ! ! ! V# = False ! P = 0 ! l2# = len(clip(ReadData)) ! L = Len(clip(SearchString)) ! Loop ! P = P + 1 ! If P > l2# ! Break ! End ! If Lower(Clip(SearchString)) = Lower(ReadData[P : P + L-1]) ! QFFiles:FileAndPathName = '' ! P2# = P + L - 1 ! Loop ! P2# = P2# - 1 ! If P2# = 0 then break. ! If ReadData[P2#] = '"' Or ReadData[P2#] = '''' Or ReadData[P2#] = '=' ! QFFiles:FileAndPathName = ReadData[P2# +1 : P + L-1] ! Break ! End ! End ! ! ! !!! P2# = Len(Clip(QFFiles:FileAndPathName)) + 1 !!! Loop !!! P2# = P2# - 1 !!! If P2# = 0 !!! Break !!! End !!! If QFFiles:FileAndPathName[P2#] = '/' !!! Break !!! End !!! End !!! !!!! S# = 0 !!!! Loop !!!! S# = S# + 1 !!!! If S# > len(clip(QFFiles:FolderName)) then break. !!!! If Lower(QSit:URL[1 : S#]) <> Lower(QFFiles:FileAndPathName[1 : S#]) !!!! Break !!!! End !!!! End !!!! If S# > 1 !!!! QFFiles:FileAndPathName = QFFiles:FileAndPathName[S# : Size(QFFiles:FileAndPathName)] !!!! End !!! !!! !!! QFFiles:FileName = '' !!! QFFiles:FolderName = '' !!! If P2# > 1 !!! QFFiles:FileName = QFFiles:FileAndPathName[P2# + 1 : Size(QFFiles:FileAndPathName)] !!! QFFiles:FolderName = QFFiles:FileAndPathName[1 : P2# -1] !!! Else !!! QFFiles:FileName = QFFiles:FileAndPathName !!! End !!! !!! QFFiles:QSitesNumber = QTasks:ForumNumber !!!!! QFFiles:FileAndPathName = Clip(Left(QFFiles:FileAndPathName)) !!! QSit:Number = QFFiles:QSitesNumber !!! Get(QSites,+QSit:Number) ! ! ! QFFiles:URL = QSit:URL ! If Lower(QFFiles:URL[1 : 11]) <> 'http://www.' ! If Lower(QFFiles:FileAndPathName[1 : 11]) = 'http://www.' ! QFFiles:FileAndPathName = 'http://' & QFFiles:FileAndPathName[12 : Size(QFFiles:FileAndPathName)] ! End ! End ! If Lower(QFFiles:FileAndPathName[1 : 7]) <> 'http://' ! QFFiles:FileAndPathName = Clip(QSit:URL) & Clip(QFFiles:FileAndPathName) ! End !! If QFFiles:FileAndPathName[1 : 2] = '//' !! QFFiles:FileAndPathName = QFFiles:FileAndPathName[ 2 : Size(QFFiles:FileAndPathName)] !! End ! If QFFiles:FileAndPathName[1] = '/' ! QFFiles:FileAndPathName = QFFiles:FileAndPathName[ 3 : Size(QFFiles:FileAndPathName)] ! End ! If QFFiles:FileAndPathName[1 : 3] = '../' ! QFFiles:FileAndPathName = QFFiles:FileAndPathName[ 4 : Size(QFFiles:FileAndPathName)] ! End ! If QFFiles:FileAndPathName[1 : 2] = '..' ! QFFiles:FileAndPathName = QFFiles:FileAndPathName[ 3 : Size(QFFiles:FileAndPathName)] ! End ! ! ! P# = 8 ! L# = Len(Clip(QFFiles:FileAndPathName)) ! Loop ! P# = P# + 1 ! If (P# + 1) > L# ! break ! End ! If QFFiles:FileAndPathName[P# : P# + 1] = '//' ! QFFiles:FileAndPathName = QFFiles:FileAndPathName[1 : P#] & QFFiles:FileAndPathName[P# + 2 : Size(QFFiles:FileAndPathName)] ! P# = 8 ! End ! End ! ! ! !!! !!! Get(QFFiles,QFFiles:QSitesNumber,QFFiles:FileAndPathName) !!! F# = False !!! If QFFiles:FileAndPathName[1 : 3] = '../' !!! QFFiles:FileAndPathName = Clip(QSit:URL) & Clip(QFFiles:FileAndPathName[4 : Size(QFFiles:FileAndPathName)]) !!! F# = True !!! End !!! If QFFiles:FileAndPathName[1] = '/' !!! QFFiles:FileAndPathName = Clip(QSit:URL) & Clip(QFFiles:FileAndPathName[2 : Size(QFFiles:FileAndPathName)]) !!! F# = True !!! End !!! !!! !!!!!! If F# = False !!!!!! If lower(QFFiles:FileAndPathName[1 : 4]) <> 'http' !!!!!! QFFiles:FileAndPathName = Clip(QSit:URL) & Clip(QFFiles:FileAndPathName[1 : Size(QFFiles:FileAndPathName)]) !!!!!! F# = True !!!!!! End !!!!!! End !!!! If Clip(Lower(QTasks:Folder)) = Lower(QFFiles:FolderName[1 : len(clip(QTasks:Folder))]) !!!! QFFiles:FolderName = QFFiles:FolderName[len(clip(QTasks:Folder)) + 1 : Size(QFFiles:FolderName) ] !!!! End !!! !!! ! S# = 0 ! Loop ! S# = S# + 1 ! If S# > len(clip(QFFiles:FileAndPathName)) then break. ! If Lower(QSit:URL[1 : S#]) <> Lower(QFFiles:FileAndPathName[1 : S#]) ! Break ! End ! End ! If S# > 1 ! QFFiles:FolderName = QFFiles:FileAndPathName[S# : Size(QFFiles:FileAndPathName)] ! End ! ! ! ! ! P2# = Len(Clip(QFFiles:FolderName)) + 1 ! Loop ! P2# = P2# - 1 ! If P2# = 0 ! Break ! End ! If QFFiles:FolderName[P2#] = '/' ! Break ! End ! End ! QFFiles:FileName = '' ! If P2# > 1 ! QFFiles:FileName = QFFiles:FolderName[P2# + 1 : Size(QFFiles:FolderName)] ! QFFiles:FolderName = QFFiles:FolderName[1 : P2# -1] ! Else ! QFFiles:FileName = QFFiles:FolderName ! QFFiles:FolderName = '' ! End ! ! ! L# = Len(Clip(QSit:URL)) ! ! If Lower(QSit:URL[1 : L#]) = Lower(QFFiles:FileAndPathName[1 : L#]) ! Get(QFFiles,QFFiles:QSitesNumber,QFFiles:FileAndPathName) ! If Errorcode() <> 0 ! QFFiles:Number = QFFiles:Number + 1 !! If QFFiles:FileAndPathName[1:4] = 'http' ! QFFiles:URL = QFFiles:FileAndPathName !! Else !! QFFiles:URL = Clip(QSit:URL) & '/' & QFFiles:FileAndPathName !! End ! Add(QFFiles,+QFFiles:QSitesNumber,+QFFiles:FileAndPathName) ! !!!! ForTas:Number = ForTas:NumberMax + 1 !!!! ForTas:Number = ForTas:NumberMax !!!! ForTas:ToDo = True !!!! ForTas:Doing = 0 !!!! ForTas:Done = 0 !!!! ForTas:Failed = 0 !!!! ForTas:Pending = 0 !!!! ForTas:Started = 0 !!!! ForTas:Succeeded = 0 !!!! ForTas:ToTwa = 0 !!!! ForTas:Deployed = 0 !!!! ForTas:IE = 0 !!!! ForTas:IECustom = 0 !!!! ForTas:NW = True !!!! ForTas:NWCustom = 0 !!!! ForTas:ForumNumber = Sit:Number !!!! !!!! ForTas:FileName = QFFiles:FileName !!!! ForTas:PROXYFileName = QFFiles:FileName !!!! !!!!! Clear(InterString512) !!!!! Clear(ForURL) !!!!! !!!!!! ForTas:FileName = 'index.php' !!!!!! ForTas:PROXYFileName = 'index.htm' !!!!! !!!!! Sit:URL = Clip(Sit:URL) !!!!! ForURL = Sit:URL !!!!! !!!!! !!!!! P# = 0 !!!!! TP# = 1 !!!!! Loop Len(Clip(ForURL)) Times !!!!! P# = P# + 1 !!!!! If Val(ForURL[P#]) = 32 !!!!! InterString512[TP#] = Chr(32) !!!!! TP# = TP# + 1 !!!!! Cycle !!!!! End !!!!! If Val(UPPER(ForURL[P#])) >= 65 And Val(UPPER(ForURL[P#])) =< 90 !!!!! InterString512[TP#] = ForURL[P#] !!!!! TP# = TP# + 1 !!!!! Else !!!!! If Val(UPPER(ForURL[P#])) >= 30h And Val(UPPER(ForURL[P#])) =< 39h !!!!! InterString512[TP#] = ForURL[P#] !!!!! TP# = TP# + 1 !!!!! Else !!!!! InterString512[TP#] = '_' !!!!! TP# = TP# + 1 !!!!! End !!!!! End !!!!! End !!!!! N" = Format(ForTas:ForumNumber,@N08) !!!! !!!! ForTas:Folder = QTasks:Folder & '/' & QFFiles:FolderName !!!! ForTas:Parameters = '' !!!! ForTas:FunctionName = 'RetrieveToProxy' !!!! ForTas:PostURL = Clip(Sit:URL) & '/' & QFFiles:FolderName !!!! ForTas:InstructionLine = '' !Clip(ForTas:FunctionName) & '(' & Clip(Sit:URL) & Clip(ForTas:FileName) & ',' & DRIVE & ':\Proxy\' & Clip(ForTas:Folder) & '\' & Clip(ForTas:FileName) & ')' !!!! Add(Forum_Tasks) !!!! Cycle !!!! End !!!! Flush(Forum_Tasks) !!!! Message('done') !!!! !!!! ! ! ! End ! Else ! Cycle ! End ! End ! End ! ! Close(Dos64kFile) ! End ! End ! ! ! End ! If StartRetrieveFileData = True ! SearchString = '.js' ! !G = 0 ! Loop 1 Times ! G = G + 1 ! If G > 1000 ! StartRetrieveFileData = 0 ! Break ! End ! Get(QTasks,G) ! ! Dos64kFileName = DRIVE & ':\Proxy\' & Clip(QTasks:Folder) & '\' & Clip(QTasks:PROXYFileName) ! ! Share(Dos64kFile) ! Set(Dos64kFile) ! ! Clear(ReadData) ! T# = 1 ! S# = Bytes(Dos64kFile) ! Loop ! Next(Dos64kFile) ! If Errorcode() <> 0 ! ef# = True ! End ! ReadData[T# : T# + 64000 -1] = Dos64kPre:Line ! If ef# = True ! break ! End ! T# = T# + 64000 ! If T# + 64000 > Size(ReadData) then break. ! End ! ! QFFiles:QSitesNumber = QTasks:ForumNumber !!! QFFiles:FileAndPathName = Clip(Left(QFFiles:FileAndPathName)) ! QSit:Number = QFFiles:QSitesNumber ! Get(QSites,+QSit:Number) ! ! ! V# = False ! P = 0 ! l2# = len(clip(ReadData)) ! L = Len(clip(SearchString)) ! Loop ! P = P + 1 ! If P > l2# ! Break ! End ! If Lower(Clip(SearchString)) = Lower(ReadData[P : P + L-1]) ! QFFiles:FileAndPathName = '' ! P2# = P + L - 1 ! Loop ! P2# = P2# - 1 ! If P2# = 0 then break. ! If ReadData[P2#] = '"' Or ReadData[P2#] = '''' Or ReadData[P2#] = '=' ! QFFiles:FileAndPathName = ReadData[P2# +1 : P + L-1] ! Break ! End ! End ! !!! P2# = Len(Clip(QFFiles:FileAndPathName)) + 1 !!! Loop !!! P2# = P2# - 1 !!! If P2# = 0 !!! Break !!! End !!! If QFFiles:FileAndPathName[P2#] = '/' !!! Break !!! End !!! End !!! !!!! S# = 0 !!!! Loop !!!! S# = S# + 1 !!!! If S# > len(clip(QFFiles:FolderName)) then break. !!!! If Lower(QSit:URL[1 : S#]) <> Lower(QFFiles:FileAndPathName[1 : S#]) !!!! Break !!!! End !!!! End !!!! If S# > 1 !!!! QFFiles:FileAndPathName = QFFiles:FileAndPathName[S# : Size(QFFiles:FileAndPathName)] !!!! End !!! !!! !!! QFFiles:FileName = '' !!! QFFiles:FolderName = '' !!! If P2# > 1 !!! QFFiles:FileName = QFFiles:FileAndPathName[P2# + 1 : Size(QFFiles:FileAndPathName)] !!! QFFiles:FolderName = QFFiles:FileAndPathName[1 : P2# -1] !!! Else !!! QFFiles:FileName = QFFiles:FileAndPathName !!! End !!! !!! QFFiles:QSitesNumber = QTasks:ForumNumber !!!!! QFFiles:FileAndPathName = Clip(Left(QFFiles:FileAndPathName)) !!! QSit:Number = QFFiles:QSitesNumber !!! Get(QSites,+QSit:Number) ! ! ! QFFiles:URL = QSit:URL ! If Lower(QFFiles:URL[1 : 11]) <> 'http://www.' ! If Lower(QFFiles:FileAndPathName[1 : 11]) = 'http://www.' ! QFFiles:FileAndPathName = 'http://' & QFFiles:FileAndPathName[12 : Size(QFFiles:FileAndPathName)] ! End ! End ! If Lower(QFFiles:FileAndPathName[1 : 7]) <> 'http://' ! QFFiles:FileAndPathName = Clip(QSit:URL) & Clip(QFFiles:FileAndPathName) ! End !! If QFFiles:FileAndPathName[1 : 2] = '//' !! QFFiles:FileAndPathName = QFFiles:FileAndPathName[ 2 : Size(QFFiles:FileAndPathName)] !! End ! If QFFiles:FileAndPathName[1] = '/' ! QFFiles:FileAndPathName = QFFiles:FileAndPathName[ 3 : Size(QFFiles:FileAndPathName)] ! End ! If QFFiles:FileAndPathName[1 : 3] = '../' ! QFFiles:FileAndPathName = QFFiles:FileAndPathName[ 4 : Size(QFFiles:FileAndPathName)] ! End ! If QFFiles:FileAndPathName[1 : 2] = '..' ! QFFiles:FileAndPathName = QFFiles:FileAndPathName[ 3 : Size(QFFiles:FileAndPathName)] ! End ! ! ! P# = 8 ! L# = Len(Clip(QFFiles:FileAndPathName)) ! Loop ! P# = P# + 1 ! If (P# + 1) > L# ! break ! End ! If QFFiles:FileAndPathName[P# : P# + 1] = '//' ! QFFiles:FileAndPathName = QFFiles:FileAndPathName[1 : P#] & QFFiles:FileAndPathName[P# + 2 : Size(QFFiles:FileAndPathName)] ! P# = 8 ! End ! End ! ! ! !!! !!! Get(QFFiles,QFFiles:QSitesNumber,QFFiles:FileAndPathName) !!! F# = False !!! If QFFiles:FileAndPathName[1 : 3] = '../' !!! QFFiles:FileAndPathName = Clip(QSit:URL) & Clip(QFFiles:FileAndPathName[4 : Size(QFFiles:FileAndPathName)]) !!! F# = True !!! End !!! If QFFiles:FileAndPathName[1] = '/' !!! QFFiles:FileAndPathName = Clip(QSit:URL) & Clip(QFFiles:FileAndPathName[2 : Size(QFFiles:FileAndPathName)]) !!! F# = True !!! End !!! !!! !!!!!! If F# = False !!!!!! If lower(QFFiles:FileAndPathName[1 : 4]) <> 'http' !!!!!! QFFiles:FileAndPathName = Clip(QSit:URL) & Clip(QFFiles:FileAndPathName[1 : Size(QFFiles:FileAndPathName)]) !!!!!! F# = True !!!!!! End !!!!!! End !!!! If Clip(Lower(QTasks:Folder)) = Lower(QFFiles:FolderName[1 : len(clip(QTasks:Folder))]) !!!! QFFiles:FolderName = QFFiles:FolderName[len(clip(QTasks:Folder)) + 1 : Size(QFFiles:FolderName) ] !!!! End !!! !!! ! S# = 0 ! Loop ! S# = S# + 1 ! If S# > len(clip(QFFiles:FileAndPathName)) then break. ! If Lower(QSit:URL[1 : S#]) <> Lower(QFFiles:FileAndPathName[1 : S#]) ! Break ! End ! End ! If S# > 1 ! QFFiles:FolderName = QFFiles:FileAndPathName[S# : Size(QFFiles:FileAndPathName)] ! End ! ! ! ! ! P2# = Len(Clip(QFFiles:FolderName)) + 1 ! Loop ! P2# = P2# - 1 ! If P2# = 0 ! Break ! End ! If QFFiles:FolderName[P2#] = '/' ! Break ! End ! End ! QFFiles:FileName = '' ! If P2# > 1 ! QFFiles:FileName = QFFiles:FolderName[P2# + 1 : Size(QFFiles:FolderName)] ! QFFiles:FolderName = QFFiles:FolderName[1 : P2# -1] ! Else ! QFFiles:FileName = QFFiles:FolderName ! QFFiles:FolderName = '' ! End ! ! ! L# = Len(Clip(QSit:URL)) ! ! If Lower(QSit:URL[1 : L#]) = Lower(QFFiles:FileAndPathName[1 : L#]) ! Get(QFFiles,QFFiles:QSitesNumber,QFFiles:FileAndPathName) ! If Errorcode() <> 0 ! QFFiles:Number = QFFiles:Number + 1 !! If QFFiles:FileAndPathName[1:4] = 'http' ! QFFiles:URL = QFFiles:FileAndPathName !! Else !! QFFiles:URL = Clip(QSit:URL) & '/' & QFFiles:FileAndPathName !! End ! Add(QFFiles,+QFFiles:QSitesNumber,+QFFiles:FileAndPathName) ! !!!! ForTas:Number = ForTas:NumberMax + 1 !!!! ForTas:Number = ForTas:NumberMax !!!! ForTas:ToDo = True !!!! ForTas:Doing = 0 !!!! ForTas:Done = 0 !!!! ForTas:Failed = 0 !!!! ForTas:Pending = 0 !!!! ForTas:Started = 0 !!!! ForTas:Succeeded = 0 !!!! ForTas:ToTwa = 0 !!!! ForTas:Deployed = 0 !!!! ForTas:IE = 0 !!!! ForTas:IECustom = 0 !!!! ForTas:NW = True !!!! ForTas:NWCustom = 0 !!!! ForTas:ForumNumber = Sit:Number !!!! !!!! ForTas:FileName = QFFiles:FileName !!!! ForTas:PROXYFileName = QFFiles:FileName !!!! !!!!! Clear(InterString512) !!!!! Clear(ForURL) !!!!! !!!!!! ForTas:FileName = 'index.php' !!!!!! ForTas:PROXYFileName = 'index.htm' !!!!! !!!!! Sit:URL = Clip(Sit:URL) !!!!! ForURL = Sit:URL !!!!! !!!!! !!!!! P# = 0 !!!!! TP# = 1 !!!!! Loop Len(Clip(ForURL)) Times !!!!! P# = P# + 1 !!!!! If Val(ForURL[P#]) = 32 !!!!! InterString512[TP#] = Chr(32) !!!!! TP# = TP# + 1 !!!!! Cycle !!!!! End !!!!! If Val(UPPER(ForURL[P#])) >= 65 And Val(UPPER(ForURL[P#])) =< 90 !!!!! InterString512[TP#] = ForURL[P#] !!!!! TP# = TP# + 1 !!!!! Else !!!!! If Val(UPPER(ForURL[P#])) >= 30h And Val(UPPER(ForURL[P#])) =< 39h !!!!! InterString512[TP#] = ForURL[P#] !!!!! TP# = TP# + 1 !!!!! Else !!!!! InterString512[TP#] = '_' !!!!! TP# = TP# + 1 !!!!! End !!!!! End !!!!! End !!!!! N" = Format(ForTas:ForumNumber,@N08) !!!! !!!! ForTas:Folder = QTasks:Folder & '/' & QFFiles:FolderName !!!! ForTas:Parameters = '' !!!! ForTas:FunctionName = 'RetrieveToProxy' !!!! ForTas:PostURL = Clip(Sit:URL) & '/' & QFFiles:FolderName !!!! ForTas:InstructionLine = '' !Clip(ForTas:FunctionName) & '(' & Clip(Sit:URL) & Clip(ForTas:FileName) & ',' & DRIVE & ':\Proxy\' & Clip(ForTas:Folder) & '\' & Clip(ForTas:FileName) & ')' !!!! Add(Forum_Tasks) !!!! Cycle !!!! End !!!! Flush(Forum_Tasks) !!!! Message('done') !!!! !!!! ! ! ! ! End ! Else ! Cycle ! End ! End ! End ! ! Close(Dos64kFile) ! End ! End ! ! and to save the image to disk SaveDC Routine TBar_DIBitsSize = Int((TBar_BIH.TBar_BIHWidth + 3)/4) * 4 * TBar_BIH.TBar_BIHHeight * 4 TBar_DIBits &= New( String(TBar_DIBitsSize) ) TBar_DIBitsPointer = Address(TBar_DIBits) TBar_BMPSize = Size(TBar_BFH) + Size(TBar_BIH) + TBar_DIBitsSize TBar_BMPFile &= NEW(String(TBar_BMPSize)) TBar_BMPPointer = Address(TBar_BMPFile) R# = GetDIBits(TBar_BkGndDCHnd,TBar_DIBSectionHnd,0,TBar_BIH.TBar_BIHHeight,TBar_DIBitsPointer,Address(TBar_BIH),0) TBar_BMPFile[1 : Size(TBar_BFH)] = TBar_BFH TBar_BMPFile[Size(TBar_BFH) + 1 : Size(TBar_BFH) + Size(TBar_BIH)] = TBar_BIH TBar_BMPFile[Size(TBar_BFH) + 1 + Size(TBar_BIH) : Size(TBar_BFH) + Size(TBar_BIH) + TBar_DIBitsSize] = TBar_DIBits[1 : TBar_DIBitsSize] !?Img2{PROP:ImageBits} = TBar_BMPFile[1 : TBar_BMPSize] TheGlobalFile = DRIVE & ':\' & Clip(QSit:ProxyFolderName) & '\' & Format(QSit:ProxyFoldersNumber,@N08) & '.Bmp' L# = Len(Clip(TheGlobalFile)) P# = 1 Loop L# Times If TheGlobalFile[P#] = '/' TheGlobalFile[P#] = '\' End P# = P# + 1 End Dos64kFileName = Clip(TheGlobalFile) Create(Dos64kFile) Share(Dos64kFile) !Send(Dos64kFile,'FILEBUFFERS=10000') k64s# = Int(((Size(TBar_BMPFile))/64000)) P# = 1 Loop k64s# Times Dos64kPre:Line = TBar_BMPFile[P# : P# + 63999] Add(Dos64kFile) P# = P# + 64000 End Close(Dos64kFile) !TheGlobalFile = 'raar' ! DF1bName = Dos64kFileName ! Share(DF1b) ! Send(DF1b,'FILEBUFFERS=10000') ! T# = (Size(TBar_BMPFile))- k64s# ! P = k64s# * 64000 ! Loop T# Times ! P = P + 1 ! Dos1b:Line = Val(TBar_BMPFile[P]) ! Add(DF1b) ! Cycle ! End ! Close(DF1b) R# = DeleteObject(TBar_LogBrushHnd) R# = DeleteObject(TBar_FontHandle) R# = DeleteObject(TBar_DIBSectionHnd) R# = DeleteDC(TBar_BkGndDCHnd) Dispose(TBar_BMPFile) Dispose(TBar_DIBits)


Today is November 21, 2024, 3:51 am
This article has been viewed 35201 times.
Google search has resulted in 23 hits on this article since January 25, 2004.



Back to article list   Search Articles   Add Comment   Printer friendly

Login

User Name:

Password: