Login
`
Templates, Tools and Utilities
|
||
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.
|
|