Advertisement
ASP_Volume3 Windows API Call/ Explanation #46134

EnumerationX

This is an upgrade of my EnumerationX program that enumerates the parent windows and child windows inside them. You can minimize,maximize, or restore, close, hide , show any parent window by right clicking on its handle. You can see the text written on any child window, also the text behind ******* password fields. It can spy and fetch the 'menus' of any application and captures there menus in a tree view, when you click there menu items inside EnumerationX actual menus of the application gets accessed. See the readme file inside it before spying on menus.

AI

สรุปโดย AI: This codebase represents a historical implementation of the logic described in the metadata. Our preservation engine analyzes the structure to provide context for modern developers.

ซอร์สโค้ด
original-source
Upload
============================================================
STEP 1: SAVE THE FOLLOWING CODE AS cAspImage.asp:
============================================================

<%
'============================================================
' MODULE:  cAspImage.asp
' AUTHOR:  © www.u229.no
' CREATED: May 2005
'============================================================
' COMMENT:
' Read Image Properties from BMP, GIF, PNG and JPG files.
' Requirements: Microsoft Data Access Components installed on Web Server.
' PLEASE NOTE: Some JPEG files contain Thumbnails. In those cases this code will fail because
' it will think that the thumbnail's width/height are the "real" values.
' If this is a concern see more info on line 151.
'============================================================
' TODO:
'============================================================
' ROUTINES:
' - Private Sub Class_Initialize()
' - Private Sub Class_Terminate()
' - Public Function ReadImage(sFullPath)
' - Private Function ReadByteArray(sFullPath)
' - Private Sub EmptyVariables()
'============================================================

Class cAspImage
'// MODULE VARIABLES
Private m_arrBytes        '// Byte array holding the image file
Private m_lWidth          '// Width in pixels
Private m_lHeight         '// Height in pixels
Private m_iColorDepth      '// Color Depth (BitsPerPixel)
Private m_lImageSize      '// # Bytes in image
Private m_sDateCreated    '// Date Created
Private m_sLastModified     '// Date last saved
Private m_sImageType     '// PNG, JPG, GIF87a/GIF89a, BMP
Private m_sErrorMsg       '// Error message: Check this if ReadImage returns false
'// PROPERTIES
Public Property Get Width()
  Width = m_lWidth
End Property
Public Property Get Height()
  Height = m_lHeight
End Property
Public Property Get ColorDepth()
  ColorDepth = m_iColorDepth
End Property
Public Property Get ImageSize()
  ImageSize = m_lImageSize
End Property
Public Property Get DateCreated()
  DateCreated = m_sDateCreated
End Property
Public Property Get DateLastModified()
  DateLastModified = m_sLastModified
End Property
Public Property Get ImageType()
  ImageType = m_sImageType
End Property
Public Property Get ErrorMessage()
  ErrorMessage = m_sErrorMsg
End Property
'------------------------------------------------------------------------------------------------------------
' Comment: Init module variables.
'------------------------------------------------------------------------------------------------------------
Private Sub Class_Initialize()
  On Error Resume Next
  Call EmptyVariables
End Sub
'------------------------------------------------------------------------------------------------------------
' Comment: Clean up.
'------------------------------------------------------------------------------------------------------------
Private Sub Class_Terminate()
End Sub
'------------------------------------------------------------------------------------------------------------
' Comment: Main routine returning the image properties.
'------------------------------------------------------------------------------------------------------------
Public Function ReadImage(sFullPath)
'  On Error Resume Next
  Dim oFSO
  Dim oFile
  Dim i
  Dim bStop
	Dim lTmpHeight
	Dim lTmpWidth
	Dim iTmpDepth
  '// These 3 are created to speed up the looping.
  Dim i4
  Dim byteTmp
  Dim lSafeSize
  Call EmptyVariables
  bStop = False
  If IsEmpty(oFSO) Then Set oFSO = Server.CreateObject("Scripting.FileSystemObject")
  If oFSO.FileExists(sFullPath) Then
    Set oFile = oFSO.GetFile(sFullPath)
    m_lImageSize = oFile.Size
    m_sDateCreated = FormatDateTime(oFile.DateCreated, 2)
    m_sLastModified = FormatDateTime(oFile.DateLastModified, 2)
    If Not ReadByteArray(sFullPath) Then m_sErrorMsg = "Error Reading Image File"
'---------------------------- GIF
    If AscB(MidB(m_arrBytes, 1, 1)) = 71 And AscB(MidB(m_arrBytes, 2, 1)) = 73 And AscB(MidB( _
            m_arrBytes, 3, 1)) = 70 Then
      m_sImageType = "GIF89a"
      If AscB(MidB(m_arrBytes, 5, 1)) = 55 Then m_sImageType = "GIF87a"
      m_lWidth = CLng(AscB(MidB(m_arrBytes, 7, 1)) + (AscB(MidB(m_arrBytes, 8, 1)) * 256))
      m_lHeight = CLng(AscB(MidB(m_arrBytes, 9, 1)) + (AscB(MidB(m_arrBytes, 10, 1)) * 256))
      m_iColorDepth = 2 ^ ((Asc(CStr(AscB(MidB(m_arrBytes, 11, 1)))) And 7) + 1)
      bStop = True
    End If
'---------------------------- JPG
		If Not bStop Then
			If AscB(MidB(m_arrBytes, 1, 1)) = 255 And AscB(MidB(m_arrBytes, 2, 1)) = 216 And AscB(MidB( _
							m_arrBytes, 3, 1)) = 255 And AscB(MidB(m_arrBytes, 4, 1)) = 224 Then
				m_sImageType = "JPG"
				lSafeSize = (m_lImageSize - 1)
				For i = 5 To lSafeSize
					If AscB(MidB(m_arrBytes, i, 1)) = 255 Then
						byteTmp = AscB(MidB(m_arrBytes, i + 1, 1))
						If (byteTmp > 191) And (byteTmp < 208) Then
						
						  i4 = AscB(MidB(m_arrBytes, i + 4, 1))
'=============================================================================================
'// Some JPEG files contain Thumbnails. In those cases this code will fail because it will think that the thumbnail's width/height are the "real" values.
'// If you care about the "thumbnail problem" you may comment existing code/uncomment the other lines below.
'// Be aware that this will dramatically slow down the looping time because we then will have to loop through the whole file(s)
							m_lHeight = CLng(AscB(MidB(m_arrBytes, i + 6, 1)) + (AscB(MidB(m_arrBytes, i + 5, 1)) * 256))
							m_lWidth = CLng(AscB(MidB(m_arrBytes, i + 8, 1)) + (AscB(MidB(m_arrBytes, i + 7, 1)) * 256))
							m_iColorDepth = CInt(i4) * CInt(AscB(MidB(m_arrBytes, i + 9, 1)))
'							lTmpHeight = CLng(AscB(MidB(m_arrBytes, i + 6, 1)) + (AscB(MidB(m_arrBytes, i + 5, 1)) * 256))
'							lTmpWidth = CLng(AscB(MidB(m_arrBytes, i + 8, 1)) + (AscB(MidB(m_arrBytes, i + 7, 1)) * 256))
'							iTmpDepth = CInt(i4) * CInt(AscB(MidB(m_arrBytes, i + 9, 1)))
'
							If m_iColorDepth > 0 And (i4 > 1 And i4 < 17) Then
'							If iTmpDepth > 0 And (i4 > 1 And i4 < 17) Then
'								If (lTmpHeight > m_lHeight) Or (lTmpWidth > m_lWidth) Then
'									m_lHeight = lTmpHeight
'									m_lWidth = lTmpWidth
'									m_iColorDepth = iTmpDepth
                                    Exit For
'								End If
							End If
'=============================================================================================
						End If
					End If
				Next
				bStop = True
			End If
		End If
'---------------------------- PNG
    If Not bStop Then
      If AscB(MidB(m_arrBytes, 1, 1)) = 137 And AscB(MidB(m_arrBytes, 2, 1)) = 80 And AscB( _
              MidB(m_arrBytes, 3, 1)) = 78 And AscB(MidB(m_arrBytes, 4, 1)) = 71 _
              And AscB(MidB(m_arrBytes, 5, 1)) = 13 And AscB(MidB(m_arrBytes, 6, _
              1)) = 10 And AscB(MidB(m_arrBytes, 7, 1)) = 26 And AscB(MidB(m_arrBytes, 8, 1)) = 10 Then
        m_sImageType = "PNG"
        m_lWidth = CLng(AscB(MidB(m_arrBytes, 20, 1)) + (AscB(MidB(m_arrBytes, 19, 1)) * 256))
        m_lHeight = CLng(AscB(MidB(m_arrBytes, 24, 1)) + (AscB(MidB(m_arrBytes, 23, 1)) * 256))
        Select Case CInt(AscB(MidB(m_arrBytes, 26, 1)))                 '// Get Bit Depth
          Case 0
            m_iColorDepth = CInt(AscB(MidB(m_arrBytes, 25, 1)))         '// Grayscale
            
          Case 2
            m_iColorDepth = CInt(AscB(MidB(m_arrBytes, 25, 1))) * 3      '// RGB encoded
            
          Case 3
            m_iColorDepth = 8                                   '// Palette based, 8 bpp
            
            Case 4
            m_iColorDepth = CInt(AscB(MidB(m_arrBytes, 25, 1))) * 2      '// greyscale with alpha
            
          Case 6
            m_iColorDepth = CInt(AscB(MidB(m_arrBytes, 25, 1))) * 4      '// RGB encoded with alpha
            
          Case Else
        End Select
        bStop = True
      End If
    End If
'---------------------------- BMP
    If Not bStop Then
      If AscB(MidB(m_arrBytes, 1, 1)) = 66 And AscB(MidB(m_arrBytes, 2, 1)) = 77 Then
        m_sImageType = "BMP"
        m_lWidth = CLng(AscB(MidB(m_arrBytes, 19, 1)) + (AscB(MidB(m_arrBytes, 20, 1)) * 256))
        m_lHeight = CLng(AscB(MidB(m_arrBytes, 23, 1)) + (AscB(MidB(m_arrBytes, 24, 1)) * 256))
        m_iColorDepth = CInt(AscB(MidB(m_arrBytes, 29, 1)))
        bStop = True
      End If
    End If
'----------------------------
  Else
    m_sErrorMsg = "Error in File Path: " & sFullPath
  End If
  
  Set oFile = Nothing
  Set oFSO = Nothing
  ReadImage = (Err.Number = 0)
End Function
'------------------------------------------------------------------------------------------------------------
' Comment: Read image into byte array.
'------------------------------------------------------------------------------------------------------------
Private Function ReadByteArray(sFullPath)
  On Error Resume Next
  Dim oStream
  If IsEmpty(oStream) Then Set oStream = Server.CreateObject("ADODB.Stream")
  With oStream
    .Type = 1           '// adTypeBinary
    .Open
    .LoadFromFile sFullPath
    m_arrBytes = .Read
  End With
  oStream.Close
  Set oStream = Nothing
  ReadByteArray = (Err.Number = 0)
End Function
'------------------------------------------------------------------------------------------------------------
' Comment: Set module variables empty.
'------------------------------------------------------------------------------------------------------------
Private Sub EmptyVariables()
  On Error Resume Next
  m_lWidth = 0
  m_lHeight = 0
  m_iColorDepth = 0
  m_lImageSize = 0
  m_sDateCreated = ""
  m_sLastModified = ""
  m_sImageType = "Unknown"
  m_sErrorMsg = ""
End Sub

End Class
%>

===========================================
STEP 2: SAVE THE FOLLOWING AS start.asp IN THE SAME FOLDER AS ABOVE.
ALSO PUT A GIF FILE INTO THE SAME FOLDER AND NAME IT test.gif.
THEN POINT YOUR BROWSER TO start.asp.
===========================================
<% @Language="VBScript" %>
<%
Option Explicit
'On Error Resume Next
%>
<!--#include file="cAspImage.asp"-->
<%
'// HOW TO USE THIS CODE:
Dim oAspImg
Set oAspImg = New cAspImage
With oAspImg
  .ReadImage(Server.MapPath("test.gif"))
	Response.Write "ImageSize: " & .ImageSize & "<br />"
	Response.Write "Date Created: " & .DateCreated & "<br />"
	Response.Write "Date Last Modified: " & .DateLastModified & "<br />"
	Response.Write "ColorDepth: " & .ColorDepth & "<br />"
	Response.Write "Width: " & .Width & "<br />"
	Response.Write "Height: " & .Height & "<br />"
	Response.Write "ImageType: " & .ImageType & "<br />"
	Response.Write "Error Message: " & .ErrorMessage & "<br />"
End With
Set oAspImg = Nothing
%>
ความคิดเห็นดั้งเดิม (3)
กู้คืนจาก Wayback Machine