` Printed Icetips Article

Icetips Article



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)



Printed May 6, 2024, 12:02 pm
This article has been viewed/printed 35113 times.
Google search has resulted in 23 hits on this article since January 25, 2004.