📄 iewia.pas
字号:
// WIA_DPS_VERTICAL_BED_REGISTRATION constants
WIA_TOP_JUSTIFIED = 0;
//WIA_CENTERED =1;
WIA_BOTTOM_JUSTIFIED = 2;
// WIA_DPS_ORIENTATION and WIA_DPS_ROTATION constants
WIA_PORTRAIT = 0;
WIA_LANSCAPE = 1;
WIA_ROT180 = 2;
WIA_ROT270 = 3;
// WIA_DPS_MIRROR flags
WIA_MIRRORED = $01;
// WIA_DPS_DOCUMENT_HANDLING_SELECT flags
WIA_FEEDER = $001;
WIA_FLATBED = $002;
WIA_DUPLEX = $004;
WIA_FRONT_FIRST = $008;
WIA_BACK_FIRST = $010;
WIA_FRONT_ONLY = $020;
WIA_BACK_ONLY = $040;
WIA_NEXT_PAGE = $080;
WIA_PREFEED = $100;
WIA_AUTO_ADVANCE = $200;
// WIA_DPS_TRANSPARENCY flags
WIA_LIGHT_SOURCE_PRESENT_DETECT = $01;
WIA_LIGHT_SOURCE_PRESENT = $02;
WIA_LIGHT_SOURCE_DETECT_READY = $04;
WIA_LIGHT_SOURCE_READY = $08;
// WIA_DPS_TRANSPARENCY_SELECT flags
WIA_LIGHT_SOURCE_SELECT = $001;
// WIA_DPS_SCAN_AHEAD_PAGES constants
WIA_SCAN_AHEAD_ALL = 0;
// WIA_DPS_PAGES constants
WIA_ALL_PAGES = 0;
// WIA_DPS_PREVIEW constants
WIA_FINAL_SCAN = 0;
WIA_PREVIEW_SCAN = 1;
// WIA_DPS_SHOW_PREVIEW_CONTROL constants
WIA_SHOW_PREVIEW_CONTROL = 0;
WIA_DONT_SHOW_PREVIEW_CONTROL = 1;
// Predefined strings for WIA_DPS_ENDORSER_STRING
WIA_ENDORSER_TOK_DATE = '$DATE$';
WIA_ENDORSER_TOK_TIME = '$TIME$';
WIA_ENDORSER_TOK_PAGE_COUNT = '$PAGE_COUNT$';
WIA_ENDORSER_TOK_DAY = '$DAY$';
WIA_ENDORSER_TOK_MONTH = '$MONTH$';
WIA_ENDORSER_TOK_YEAR = '$YEAR$';
// WIA_DPS_PAGE_SIZE constants
WIA_PAGE_A4 = 0;
WIA_PAGE_LETTER = 1;
WIA_PAGE_CUSTOM = 2;
// WIA_IPA_COMPRESSION constants
WIA_COMPRESSION_NONE = 0;
WIA_COMPRESSION_BI_RLE4 = 1;
WIA_COMPRESSION_BI_RLE8 = 2;
WIA_COMPRESSION_G3 = 3;
WIA_COMPRESSION_G4 = 4;
WIA_COMPRESSION_JPEG = 5;
// WIA_IPA_PLANAR constants
WIA_PACKED_PIXEL = 0;
WIA_PLANAR = 1;
// WIA_IPA_DATATYPE constants
WIA_DATA_THRESHOLD = 0;
WIA_DATA_DITHER = 1;
WIA_DATA_GRAYSCALE = 2;
WIA_DATA_COLOR = 3;
WIA_DATA_COLOR_THRESHOLD = 4;
WIA_DATA_COLOR_DITHER = 5;
// WIA_IPA_SUPPRESS_PROPERTY_PAGE flags
WIA_PROPPAGE_SCANNER_ITEM_GENERAL = $00000001;
WIA_PROPPAGE_CAMERA_ITEM_GENERAL = $00000002;
// WIA_IPS_CUR_INTENT flags
//WIA_INTENT_NONE =$00000000;
WIA_INTENT_IMAGE_TYPE_COLOR = $00000001;
WIA_INTENT_IMAGE_TYPE_GRAYSCALE = $00000002;
WIA_INTENT_IMAGE_TYPE_TEXT = $00000004;
WIA_INTENT_IMAGE_TYPE_MASK = $0000000F;
WIA_INTENT_MINIMIZE_SIZE = $00010000;
WIA_INTENT_MAXIMIZE_QUALITY = $00020000;
WIA_INTENT_BEST_PREVIEW = $00040000;
WIA_INTENT_SIZE_MASK = $000F0000;
// WIA_IPS_PHOTOMETRIC_INTERP constants
WIA_PHOTO_WHITE_1 = 0; // default, white is 1, black is 0
WIA_PHOTO_WHITE_0 = 1; // default, white is 0, black is 1
// WIA Extended Property Identifiers
WIA_RANGE_MIN = 0;
WIA_RANGE_NOM = 1;
WIA_RANGE_MAX = 2;
WIA_RANGE_STEP = 3;
WIA_RANGE_NUM_ELEMS = 4;
WIA_LIST_COUNT = 0;
WIA_LIST_NOM = 1;
WIA_LIST_VALUES = 2;
WIA_LIST_NUM_ELEMS = 2;
WIA_FLAG_NOM = 0;
WIA_FLAG_VALUES = 1;
WIA_FLAG_NUM_ELEMS = 2;
WIA_PROP_READ = $01;
WIA_PROP_WRITE = $02;
WIA_PROP_RW = WIA_PROP_READ or WIA_PROP_WRITE;
WIA_PROP_SYNC_REQUIRED = $04;
WIA_PROP_NONE = $08;
WIA_PROP_RANGE = $10;
WIA_PROP_LIST = $20;
WIA_PROP_FLAG = $40;
WIA_PROP_CACHEABLE = $10000;
WIA_ITEM_CAN_BE_DELETED = $80;
WIA_ITEM_READ = WIA_PROP_READ;
WIA_ITEM_WRITE = WIA_PROP_WRITE;
WIA_ITEM_RD = WIA_ITEM_READ or WIA_ITEM_CAN_BE_DELETED;
WIA_ITEM_RWD = WIA_ITEM_READ or WIA_ITEM_WRITE or WIA_ITEM_CAN_BE_DELETED;
// Device connection status
WIA_DEVICE_NOT_CONNECTED = 0;
WIA_DEVICE_CONNECTED = 1;
// WIA_DPS_DOCUMENT_HANDLING_CAPABILITIES flags
WIA_FEED = $01;
WIA_FLAT = $02;
WIA_DUP = $04;
WIA_DETECT_FLAT = $08;
WIA_DETECT_SCAN = $10;
WIA_DETECT_FEED = $20;
WIA_DETECT_DUP = $40;
WIA_DETECT_FEED_AVAIL = $80;
WIA_DETECT_DUP_AVAIL = $100;
// WIA_DPS_DOCUMENT_HANDLING_STATUS flags
WIA_FEED_READY = $01;
WIA_FLAT_READY = $02;
WIA_DUP_READY = $04;
WIA_FLAT_COVER_UP = $08;
WIA_PATH_COVER_UP = $10;
WIA_PAPER_JAM = $20;
type
WIA_DATA_CALLBACK_HEADER = packed record
lSize: integer;
guidFormatID: TGUID;
lBufferSize: integer;
lPageCount: integer;
end;
PWIA_DATA_CALLBACK_HEADER = ^WIA_DATA_CALLBACK_HEADER;
IWiaItem = interface;
TIEWGetPage = function(header: PWIA_DATA_CALLBACK_HEADER; data: pointer; datalen: integer): boolean of object;
IWiaDataCallback = interface(IUnknown)
['{a558a866-a5b0-11d2-a08f-00c04f72dc3c}']
function BandedDataCallback(lMessage: integer; lStatus: integer; lPercentComplete: integer; lOffset: integer; lLength: integer; lReserved: integer; lResLength: integer; pbBuffer: pbyte): HRESULT; stdcall;
end;
WIA_DATA_TRANSFER_INFO = packed record
ulSize: integer;
ulSection: integer;
ulBufferSize: integer;
bDoubleBuffer: longbool;
ulReserved1: integer;
ulReserved2: integer;
ulReserved3: integer;
end;
PWIA_DATA_TRANSFER_INFO = ^WIA_DATA_TRANSFER_INFO;
TIEWiaOnProgress = function(percentage: integer): boolean of object;
TWiaDataCallBack = class(TInterfacedObject, IWiaDataCallBack)
header: WIA_DATA_CALLBACK_HEADER;
data: pbyte;
datalen: integer;
OnGetPage: TIEWGetPage;
OnProgress: TIEWiaOnProgress;
WaitingData: boolean;
function BandedDataCallback(lMessage: integer; lStatus: integer; lPercentComplete: integer; lOffset: integer; lLength: integer; lReserved: integer; lResLength: integer; pbBuffer: pbyte): HRESULT; stdcall;
constructor Create;
destructor Destroy; override;
end;
PWiaDataCallBAck = ^TWiaDataCallBack;
IWiaEventCallback = interface(IUnknown)
['{ae6287b0-0084-11d2-973b-00a0c9068f2e}']
function ImageEventCallback(pEventGUID:pGUID; bstrEventDescription:pwchar; bstrDeviceID:pwchar; bstrDeviceDescription:pwchar; dwDeviceType:dword; bstrFullItemName:pwchar; var pulEventType:DWORD; ulReserved:DWORD):HRESULT; stdcall;
end;
TWiaEventCallBack = class(TInterfacedObject, IWiaEventCallBack)
WIA:TObject; // the TIEWia object
function ImageEventCallback(pEventGUID:pGUID; bstrEventDescription:pwchar; bstrDeviceID:pwchar; bstrDeviceDescription:pwchar; dwDeviceType:dword; bstrFullItemName:pwchar; var pulEventType:DWORD; ulReserved:DWORD):HRESULT; stdcall;
constructor Create(inWIA:TObject);
destructor Destroy; override;
end;
PWiaEventCallBAck = ^TWiaEventCallBack;
IWiaDataTransfer = interface(IUnknown)
['{a6cef998-a5b0-11d2-a08f-00c04f72dc3c}']
function idtGetData: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function idtGetBandedData(pWiaDataTransInfo: PWIA_DATA_TRANSFER_INFO; pIWiaDataCallback: IWiaDataCallback): HRESULT; stdcall;
function idtQueryGetData: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function idtEnumWIA_FORMAT_INFO: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function idtGetExtendedTransferInfo: HRESULT; stdcall; // NOT STILL IMPLEMENTED
end;
IEnumWiaItem = interface(IUnknown)
['{5e8383fc-3391-11d2-9a33-00c04fa36145}']
function Next(celt: integer; out ppIWiaItem: IWiaItem; var pceltFetched: integer): HRESULT; stdcall;
function Skip: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function Reset: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function Clone: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function GetCount: HRESULT; stdcall; // NOT STILL IMPLEMENTED
end;
TIWiaItemArray = array[0..0] of IUnknown; // IUnknown instead IWiaItem because this crashes C++Builder
PIWiaItemArray = ^TIWiaItemArray;
IWiaItem = interface(IUnknown)
['{4db1ad10-3391-11d2-9a33-00c04fa36145}']
function GetItemType(var pItemType: integer): HRESULT; stdcall;
function AnalyzeItem(lFlags: integer): HRESULT; stdcall;
function EnumChildItems(out ppIEnumWiaItem: IEnumWiaItem): HRESULT; stdcall;
function DeleteItem(lFlags:longint): HRESULT; stdcall;
function CreateChildItem: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function EnumRegisterEventInfo: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function FindItemByName: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function DeviceDlg(hwndParent: HWND; lFlags: integer; lIntent: integer; out plItemCount: integer; out ppIWiaItem: PIWiaItemArray): HRESULT; stdcall;
function DeviceCommand(lFlags: integer; pCmdGUID: PGUID; var pIWiaItem: IWiaItem): HRESULT; stdcall;
function GetRootItem: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function EnumDeviceCapabilities: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function DumpItemData: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function DumpDrvItemData: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function DumpTreeItemData: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function Diagnostic: HRESULT; stdcall; // NOT STILL IMPLEMENTED
end;
IWiaPropertyStorage = interface(IUnknown)
['{98B5E8A0-29CC-491a-AAC0-E6DB4FDCCEB6}']
function ReadMultiple(cpspec: integer; rgpspec: pointer; rgpropvar: pointer): HRESULT; stdcall;
function WriteMultiple(cpspec: integer; rgpspec: pointer; rgpropvar: pointer; propidNameFirst: integer): HRESULT; stdcall;
function DeleteMultiple: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function ReadPropertyNames(cpropid: integer; rgpspec: pointer; var name: pchar): HRESULT; stdcall;
function WritePropertyNames: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function DeletePropertyNames: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function Commit: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function Revert: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function Enum: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function SetTimes: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function SetClass: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function Stat: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function GetPropertyAttributes(cpspec: integer; rgpspec: pointer; var rgflags: integer; rgpropvar: pointer): HRESULT; stdcall;
function GetCount: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function GetPropertyStream: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function SetPropertyStream: HRESULT; stdcall; // NOT STILL IMPLEMENTED
end;
IEnumWIA_DEV_INFO = interface(IUnknown)
['{5e38b83c-8cf1-11d1-bf92-0060081ed811}']
function Next(celt: integer; out rgelt: IWiaPropertyStorage; var pceltFetched: integer): HRESULT; stdcall;
function Skip: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function Reset: HRESULT; stdcall;
function Clone: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function GetCount(var celt: integer): HRESULT; stdcall;
end;
PIEnumWIA_DEV_INFO = ^IEnumWIA_DEV_INFO;
PPIEnumWIA_DEV_INFO = ^PIEnumWIA_DEV_INFO;
IWiaDevMgr = interface(IUnknown)
['{5eb2502a-8cf1-11d1-bf92-0060081ed811}']
function EnumDeviceInfo(lFlag: integer; out ppIEnum: IEnumWIA_DEV_INFO): HRESULT; stdcall;
function CreateDevice(bstrDeviceID: pwchar; out ppWiaItemRoot: IWiaItem): HRESULT; stdcall;
function SelectDeviceDlg: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function SelectDeviceDlgID(hwndParent: HWND; lDeviceType: integer; lFlags: integer; var pbstrDeviceID: pwchar): HRESULT; stdcall;
function GetImageDlg: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function RegisterEventCallbackProgram: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function RegisterEventCallbackInterface(lFlags:longint; bstrDeviceID:pwchar; pEventGUID:pGUID; pIWiaEventCallback:IWiaEventCallback; var pEventObject:IUnknown): HRESULT; stdcall;
function RegisterEventCallbackCLSID: HRESULT; stdcall; // NOT STILL IMPLEMENTED
function AddDeviceDlg: HRESULT; stdcall; // NOT STILL IMPLEMENTED
end;
IID_IWiaDevMgr = IWiaDevMgr;
{!!
<FS>TIEWiaDeviceInfo
<FM>Declaration<FC>
}
TIEWiaDeviceInfo = class
Name: string;
ID: string;
DeviceType: (iewScanner, iewDigitalCamera, iewStreamingVideo);
DriverVersion: string;
PortName: string;
ServerName: string;
Vendor: string;
end;
{!!}
{!!
<FS>TIEWiaItemType
<FM>Declaration<FC>
}
TIEWiaItemType = set of (
witFree,
witImage,
witFile,
witFolder,
witRoot,
witAnalyze,
witAudio,
witDevice,
witDeleted,
witDisconnected,
witHPanorama,
witVPanorama,
witBurst,
witStorage,
witTransfer,
witGenerated,
witHasAttachments,
witVideo,
witTwainCapabilityPassThrough,
witRemoved,
witMask
);
{!!}
{!!
<FS>TIEWiaItem
<FM>Declaration<FC>
TIEWiaItem = class
This: IWiaItem;
Children: TList;
ItemType: <A TIEWiaItemType>;
constructor Create;
destructor Destroy; override;
end;
!!}
TIEWiaItem = class
This: IWiaItem;
Children: TList;
ItemType: TIEWiaItemType;
constructor Create;
destructor Destroy; override;
end;
TIEWProcessingInfo = packed record
DPIX: integer;
DPIY: integer;
end;
{!!
<FS>TIEWiaAttrib
<FM>Declaration<FC>
}
TIEWiaAttrib = set of (iewaRead, iewaWrite, iewaSyncRequired, iewaNone, iewaRange, iewaList, iewaFlag, iewaCacheable);
{!!}
variantarray = array[0..MaxInt div 32] of variant;
pvariantarray = ^variantarray;
{!!
<FS>TIEWiaValues
<FM>Declaration<FC>
TIEWiaValues = class
max: variant;
min: variant;
count: integer;
normal: variant;
step: variant;
property values[idx: integer]: variant;
end;
!!}
TIEWiaValues = class
private
fValues: pvariantarray;
function GetValues(idx: integer): variant;
public
max: variant;
min: variant;
count: integer;
normal: variant;
step: variant;
constructor Create;
destructor Destroy; override;
property values[idx: integer]: variant read GetValues;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -