📄 routines.bas
字号:
Attribute VB_Name = "Routines"
Option Explicit
'**************************************************************
' Global (Public) Variables
'**************************************************************
'----------------------------------------------------------
' Directory locations: set in frmMain.Form_Load.
'----------------------------------------------------------
Public gstrAppDirectory As String
Public gstrWindowsDirectory As String
Public gstrWindowsTempDirectory As String
'----------------------------------------------------------
' File name, path name, and fully qualified path name.
'----------------------------------------------------------
Public gstrFileName As String
Public gstrPathName As String
Public gstrFullPathFileName As String
'----------------------------------------------------------
' Scan preferences: set in frmPreferences.
'----------------------------------------------------------
Public gintScanSettings As Integer
Public gintDocumentTypeIndex As Integer
Public gblnUseADF As Boolean
Public gstrScanToDirectory As String
'----------------------------------------------------------
' Custom scan settings: set in frmSettings.
'----------------------------------------------------------
Public gintColorIndex As Integer
Public gintHorizontalDPI As Integer
Public gintVerticalDPI As Integer
Public gintPaperSizeIndex As Integer
Public gdblPaperWidth As Double
Public gdblPaperHeight As Double
'----------------------------------------------------------
' Get scan settings: are they supported?
'----------------------------------------------------------
Public gblnGetImageTypesAvailableSupported As Boolean
Public gblnGetMaxHeightSupported As Boolean
Public gblnGetMaxWidthSupported As Boolean
Public gblnGetMinResolutionSupported As Boolean
Public gblnGetMaxResolutionSupported As Boolean
Public gblnGetResolutionStepSupported As Boolean
Public gblnGetMinBrightnessSupported As Boolean
Public gblnGetMaxBrightnessSupported As Boolean
Public gblnGetBrightnessStepSupported As Boolean
Public gblnGetAutoBrightnessSupported As Boolean
Public gblnGetMinContrastSupported As Boolean
Public gblnGetMaxContrastSupported As Boolean
Public gblnGetContrastStepSupported As Boolean
Public gblnGetAutoContrastSupported As Boolean
Public gblnGetADFAvailableSupported As Boolean
Public gblnGetMaxHeightADFSupported As Boolean
'----------------------------------------------------------
' Set scan settings: are they supported?
'----------------------------------------------------------
Public gblnSetImageTypeSupported As Boolean
Public gblnSetResolutionXSupported As Boolean
Public gblnSetResolutionYSupported As Boolean
Public gblnSetBrightnessModeSupported As Boolean
Public gblnSetBrightnessSupported As Boolean
Public gblnSetContrastModeSupported As Boolean
Public gblnSetContrastSupported As Boolean
Public gblnSetImageLayoutSupported As Boolean
Public gblnSetScanModeSupported As Boolean
'----------------------------------------------------------
' Get scan capability ranges.
'----------------------------------------------------------
Public gblnGetCapabilityRangeDone As Boolean
Public gintImageTypesAvailable As Integer
Public gblnImageTypesAvailable(7) As Boolean
Public gstrImageTypeStrings(7) As String
Public gsngMaxHeight As Single
Public gsngMaxWidth As Single
Public glngMinResolution As Long
Public glngMaxResolution As Long
Public gblnResolutionStepArray As Boolean
Public glngResolutionStep As Long
Public gvntResolutionStep As Variant
Public glngMinBrightness As Long
Public glngMaxBrightness As Long
Public gblnBrightnessStepArray As Boolean
Public glngBrightnessStep As Long
Public gvntBrightnessStep As Variant
Public gstrAutoBrightness As String
Public glngMinContrast As Long
Public glngMaxContrast As Long
Public gblnContrastStepArray As Boolean
Public glngContrastStep As Long
Public gvntContrastStep As Variant
Public gstrAutoContrast As String
Public gstrADFAvailable As String
Public gsngMaxHeightADF As Single
'----------------------------------------------------------
' Set scan capabilities.
'----------------------------------------------------------
Public gintSetImageType As Integer
Public glngSetResolutionX As Long
Public glngSetResolutionY As Long
Public gintSetBrightnessMode As Integer
Public glngSetBrightness As Long
Public gintSetContrastMode As Long
Public glngSetContrast As Long
Public gsngSetLeft As Single
Public gsngSetTop As Single
Public gsngSetWidth As Single
Public gsngSetHeight As Single
Public gintSetScanMode As Integer
'----------------------------------------------------------
' ImgScan event switches.
'----------------------------------------------------------
Public gblnTrackImgScanEvent(8) As Boolean
'**************************************************************
' Global (Public) Constants
'**************************************************************
'----------------------------------------------------------
' "Color" constants.
'----------------------------------------------------------
Public Enum Color
clBlackAndWhite = 0
cl16ShadesOfGray = 1
cl256ShadesOfGray = 2
cl256Colors = 3
clTrueColor = 4
End Enum
'----------------------------------------------------------
' "Document Type" constants.
'----------------------------------------------------------
Public Enum DocumentType
dtTextOnly = 0
dtArticle = 1
dtColorArticle = 2
dtPhotograph = 3
dtBusinessCard = 4
dtLineDrawing = 5
dtPoorQuality = 6
dtLegalDocument = 7
dtCustom = 8
End Enum
'----------------------------------------------------------
' "Paper Size" constants.
'----------------------------------------------------------
Public Enum PaperSize
psLetter = 0
psBusinessCard = 1
psPhoto = 2
psLargePhoto = 3
psTabloid = 4
psLedger = 5
psLegal = 6
psStatement = 7
psExecutive = 8
psA3 = 9
psA4 = 10
psA5 = 11
psB4ISO = 12
psB4JIS = 13
psB5ISO = 14
psB5JIS = 15
psFolio = 16
psQuarto = 17
ps10x14 = 18
psCustom = 19
End Enum
'----------------------------------------------------------
' ImgScan tracking event constants.
'----------------------------------------------------------
Public Enum ImgScanEvent
iseFileNameRequest = 0
isePageDone = 1
iseScanDone = 2
iseScanStarted = 3
iseScanUIDone = 4
iseError = 5
iseGetScanCapability = 6
iseSetScanCapability = 7
End Enum
Public Const CAP_SCAN_IMAGE_TYPES_SUPPORTED = 1
Public Const CAP_SCAN_MAX_HEIGHT = 2
Public Const CAP_SCAN_MAX_HEIGHT_ADF = 3
Public Const CAP_SCAN_MAX_WIDTH = 4
Public Const CAP_SCAN_MIN_RESOLUTION = 5
Public Const CAP_SCAN_MAX_RESOLUTION = 6
Public Const CAP_SCAN_STEP_RESOLUTION = 7
Public Const CAP_SCAN_MIN_BRIGHTNESS = 8
Public Const CAP_SCAN_MAX_BRIGHTNESS = 9
Public Const CAP_SCAN_STEP_BRIGHTNESS = 10
Public Const CAP_SCAN_AUTO_BRIGHTNESS = 11
Public Const CAP_SCAN_MIN_CONTRAST = 12
Public Const CAP_SCAN_MAX_CONTRAST = 13
Public Const CAP_SCAN_STEP_CONTRAST = 14
Public Const CAP_SCAN_AUTO_CONTRAST = 15
Public Const CAP_SCAN_ADF_SUPPORTED = 16
Public Const CAP_SCAN_READONLY_CAPS = 16
' save some for future expansion
Public Const CAP_SCAN_IMAGE_TYPE = 100
Public Const CAP_SCAN_RESOLUTION = 101
Public Const CAP_SCAN_BRIGHTNESS_MODE = 102
Public Const CAP_SCAN_BRIGHTNESS = 103
Public Const CAP_SCAN_CONTRAST_MODE = 104
Public Const CAP_SCAN_CONTRAST = 105
Public Const CAP_SCAN_IMAGE_LAYOUT = 106
Public Const CAP_SCAN_MODE = 107
Public Const CAP_SCAN_PAPER_IN_FEEDER = 108
'----------------------------------------------------------
' Message Box constants.
'----------------------------------------------------------
Public Const CANT_ACCESS_DIR = "Cannot access directory "
Public Const BRIGHTNESS_BETWEEN_1 = "Brightness must be between "
Public Const BRIGHTNESS_BETWEEN_2 = "."
Public Const BRIGHTNESS_NUMERIC = "Brightness must be numeric."
Public Const CONTRAST_NUMERIC = "Contrast must be numeric."
Public Const CONTRAST_BETWEEN_1 = "Contrast must be between "
Public Const CONTRAST_BETWEEN_2 = "."
Public Const DELETE_FILES_AND_RESTART = "Are you sure you want to delete the files and restart?"
Public Const GET_CAPABILITIES_FIRST = "You must get the current scanner capabilities before you set them."
Public Const HEIGHT_NUMERIC = "Height must be numeric."
Public Const LEFT_NUMERIC = "Left must be numeric."
Public Const RESOLUTION_BETWEEN_1 = "Resolution must be between "
Public Const RESOLUTION_BETWEEN_2 = " DPI."
Public Const RESOLUTION_NUMERIC = "Resolution must be numeric."
Public Const TOP_NUMERIC = "Top must be numeric."
Public Const WIDTH_NUMERIC = "Width must be numeric."
Public Const WORKFILE_PAGES_UNEQUAL = "The page counts of the 2 workfiles are not equal."
'----------------------------------------------------------
' Registry constants.
'----------------------------------------------------------
Public Const APP_NAME = "ImgScan"
Public Const SCAN_PREF_KEY = "Scan Preferences"
Public Const WINDOW_POS_KEY = "Window Position"
'----------------------------------------------------------
' Miscellaneous constants.
'----------------------------------------------------------
Public Const CANCEL_PRESSED = 32755
'**************************************************************
' Module (Private) Variables
'**************************************************************
Private mstrPMEType As String
Private mstrEventName As String
Private mstrParameters As String
'**************************************************************
' Module (Private) Constants
'**************************************************************
Private Const PROPERTY_LEGEND = "Property: "
Private Const METHOD_LEGEND = "Method: "
Private Const EVENT_LEGEND = "Event: "
Public Function ConvertBytes(lngBytes As Long, strXB As String) As Long
'**************************************************************
' PUBLIC FUNCTION ConvertBytes: Converts a byte count into
' KB, MB, or GB, depending upon the parameter passed in.
'**************************************************************
'----------------------------------------------------------
' Note that when dividing, "\" is used in order to return
' an integer result with no rounding.
'----------------------------------------------------------
If strXB = "KB" Then
ConvertBytes = lngBytes \ 2 ^ 10 '1024
ElseIf strXB = "MB" Then
ConvertBytes = lngBytes \ 2 ^ 20 '1048576
ElseIf strXB = "GB" Then
ConvertBytes = lngBytes \ 2 ^ 30
Else
ConvertBytes = lngBytes
End If
End Function
Public Sub DeleteFile(strWorkFile As String)
'**************************************************************
' PUBLIC SUB DeleteFile: Delete a file.
'**************************************************************
'** Strings
Dim strFileName As String
'----------------------------------------------------------
' If the filename is empty, exit the subroutine.
'----------------------------------------------------------
If strWorkFile = "" Then
Exit Sub
End If
'----------------------------------------------------------
' Make sure the workfile is there. If it is, delete it.
'----------------------------------------------------------
strFileName = Dir(strWorkFile)
If strFileName <> "" Then
DoEvents
Kill strWorkFile
End If
End Sub
Public Function GetImageTypeLegend(intImageType As Integer) As String
'**************************************************************
' PUBLIC FUNCTION GetImageTypeLegend: Returns a legend
' describing the Image Types, depending upon the integer value
' of Image Type passed in.
'**************************************************************
'** Integers
Dim intCounter As Integer
'** Strings
Dim strWorkingLegend As String
If intImageType = 0 Then
GetImageTypeLegend = "Unknown"
Exit Function
End If
If intImageType And 1 Then
strWorkingLegend = "Black and White"
intCounter = intCounter + 1
End If
If intImageType And 2 Then
If intCounter > 0 Then
strWorkingLegend = strWorkingLegend & "; 16 Shades of Gray"
Else
strWorkingLegend = "16 Shades of Gray"
End If
intCounter = intCounter + 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -