Virtual CD 10 Import (Windows only)
Verfasst: 17.04.2010 02:34
Nur für diejenigen, die Virtual CD 10 (keine Freeware!) nutzen interessant!
http://www.virtualcd.de/
Dieser Code stellt die gesamte API zur Verfügung. x86 und x64 werden unterstützt.
Da die API kein Unicode unterstützt werden alle Ein- und Ausgaben autom. umgewandelt,
so das eine Nutzung mit allen Compilereinstellungen möglich ist.
Die Doku zur API findet ihr in eurer Installation, so das ich hierzu nichts mehr sagen muß
VCD_Import.pbi:
Gruß
Thomas
http://www.virtualcd.de/
Dieser Code stellt die gesamte API zur Verfügung. x86 und x64 werden unterstützt.
Da die API kein Unicode unterstützt werden alle Ein- und Ausgaben autom. umgewandelt,
so das eine Nutzung mit allen Compilereinstellungen möglich ist.
Die Doku zur API findet ihr in eurer Installation, so das ich hierzu nichts mehr sagen muß

VCD_Import.pbi:
Code: Alles auswählen
; *******************************************************************
; * DESCRIPTION: Virtual CD API v10
; * Copyright (c) 2002-2009 by H+H Software GmbH
; *******************************************************************
; angepaßt zur Nutzung mit PB 4.30 und höher
; Thomas (ts-soft) Schulz
; ***************************************************************************
; Error code constants
; ***************************************************************************
Enumeration
#VCD_ERROR_NONE
#VCD_ERROR_NOSUCHFILE
#VCD_ERROR_PATHNOTFOUND
#VCD_ERROR_TOOMANYOPENEDFILES
#VCD_ERROR_FILEUNSPECIFIC
#VCD_ERROR_ACCESSDENIED
#VCD_ERROR_NOVCDIMAGE
#VCD_ERROR_HEADERCRC
#VCD_ERROR_INVALIDPASSWORD
#VCD_ERROR_OPENTRACKFILES
#VCD_ERROR_IMAGECORRUPT
#VCD_ERROR_DEMOEXPIRED
#VCD_ERROR_UNKNOWN
#VCD_ERROR_RESOURCES
#VCD_ERROR_INVALIDDRIVE
#VCD_ERROR_INVALIDUNIT
#VCD_ERROR_DRIVELOCKED
#VCD_ERROR_COMMUNICATION
#VCD_ERROR_ARGUMENT
#VCD_ERROR_INUSE
#VCD_ERROR_EJECTFAILED
#VCD_ERROR_NOADMIN
#VCD_ERROR_NOPLAYER
#VCD_ERROR_NOLICENSE
#VCD_ERROR_CONNECTION
#VCD_ERROR_INVALIDVERSION
#VCD_ERROR_INVALIDDECPWD
#VCD_ERROR_INVALIDDECINFO
#VCD_ERROR_UNKNOWNIMAGE
#VCD_ERROR_FORMATNOTSUPP
#VCD_ERROR_AGFSSYNC
#VCD_ERROR_SHARING_VIOLATION
#VCD_ERROR_NOTIMPLEMENTED
#VCD_ERROR_NOFULLLIC
#VCD_ERROR_NOBURNER
#VCD_ERROR_BURNINGNOW
#VCD_ERROR_ANALOGAUDIO
#VCD_ERROR_MUSICMODE
#VCD_ERROR_INVALIDPROPERTY = 100
#VCD_ERROR_REGISTRY
#VCD_ERROR_REBOOTREQUIRED
#VCD_ERROR_NOPERMISSION
#VCD_ERROR_INVALIDINDEX = 1000
#VCD_ERROR_LICVIOLATION = 1050
#VCD_ERROR_NOTLOGGEDON
#VCD_ERROR_NOFREELICENSE
#VCD_ERROR_NOFREESLOT
#VCD_ERROR_NOOPLICENSE
#VCD_ERROR_NOOPCONNECT
#VCD_ERROR_LINKCREATE
EndEnumeration
; ***************************************************************************
; Constants For all properties which can be set/get For a virtual CD
; ***************************************************************************
Enumeration 1
#VCD_PROPERTY_DEFAULTDRIVE
#VCD_PROPERTY_DESCRIPTION
#VCD_PROPERTY_PROGRAM
#VCD_PROPERTY_WORKINGDIR
#VCD_PROPERTY_COMMENT
#VCD_PROPERTY_HOTKEY
#VCD_PROPERTY_EJECTONEND
#VCD_PROPERTY_SUPPRESSAUTORUN
#VCD_PROPERTY_ACTIVESESSION
#VCD_PROPERTY_CDTYPE
EndEnumeration
; ***************************************************************************
; Configuration position flags
; ***************************************************************************
Enumeration
#VCD_LOCATION_BOTH
#VCD_LOCATION_LOCAL
#VCD_LOCATION_GLOBAL
EndEnumeration
; ***************************************************************************
; 'VCDApiInsertEx' constants
; ***************************************************************************
; Password check for images which have one
#VCD_INSFLG_CHECKPWDS = $01
; Do not add the image to the VCD system
#VCD_INSFLG_NOADD = $08
; Try to supress CD autorun
#VCD_INSFLG_NOAUTORUN = $10
; ***************************************************************************
; Possible CD type constants.
; ***************************************************************************
Enumeration
#VCD_CDTYPE_UNKNOWN ; Unknown
#VCD_CDTYPE_CDROM ; CD-ROM
#VCD_CDTYPE_DVDROM ; DVD-ROM
#VCD_CDTYPE_DVDRAM ; DVD-RAM
#VCD_CDTYPE_INCOMPLETE ; Incomplete
#VCD_CDTYPE_CDR ; CD-R
#VCD_CDTYPE_DVDMIN ; DVD-R
#VCD_CDTYPE_DVDPLUS ; DVD+R
#VCD_CDTYPE_DVDPLDL ; DVD+R DL
#VCD_CDTYPE_MIXED ; Mixed Mode CD
#VCD_CDTYPE_CDDA ; Audio-CD
#VCD_CDTYPE_CDI ; CD-I
#VCD_CDTYPE_CDEXTRA ; CD-Extra
#VCD_CDTYPE_CDTEXT ; CD-Text (Audio-CD)
#VCD_CDTYPE_PHOTOCD ; Photo-CD
#VCD_CDTYPE_SVIDEO ; SuperVideoCD
#VCD_CDTYPE_BDROM ; Blu-Ray
#VCD_CDTYPE_HDROM ; HD-DVD
#VCD_CDTYPE_BLANK_CDRW ; CD-RW
#VCD_CDTYPE_BLANK_BDR ; BD-R
#VCD_CDTYPE_BLANK_BDRE ; BD-RE
#VCD_CDTYPE_BLANK_BDR_DL ; BD-R DL
#VCD_CDTYPE_BLANK_BDRE_DL ; BD-RE DL
#VCD_CDTYPE_BLANK_HDR ; HD-DVD-R
#VCD_CDTYPE_BLANK_HDR_DL ; HD-DVD-R DL
#VCD_CDTYPE_BLANK_DVDMINDL ; DVD-R DL
#VCD_CDTYPE_BLANK_DVDPLRW ; DVD+RW
#VCD_CDTYPE_BLANK_DVDMINRW ; DVD-RW
EndEnumeration
; ***************************************************************************
; 'VCDApiGetVCDPath and VCDApiSetVCDPath Constants
; ***************************************************************************
Enumeration
#VCD_PATHID_HOME = 1
#VCD_PATHID_TEMP = 4
#VCD_PATHID_VQC
#VCD_PATHID_SCRIPT
#VCD_PATHID_CDDB
#VCD_PATHID_NEWIMAGES
#VCD_PATHID_PRESETS
#VCD_PATHID_CATALOG
#VCD_PATHID_VCX
#VCD_PATHID_LOG
#VCD_PATHID_LOCALCONFIG
#VCD_PATHID_GLOBALCONFIG = 18
#VCD_PATHID_MUSICFILES
EndEnumeration
; ***************************************************************************
; Flags used with VCDApiSetDDAEnabled and VCDApiSetDDAFlags
; ***************************************************************************
; Change the value for the current session but doesn't save it to disk
#VALUE_CHANGE_UNTIL_RESTART = 1
; Save the value but doesn't change it before restarting the session
#VALUE_SAVE_TO_DISK = 2
; ***************************************************************************
; VCDApiSetDDAEnabled - enable or disable desktop icons
; ***************************************************************************
#DDA_OFF = #False
#DDA_ON = #True
; ***************************************************************************
; VCDApiSetDDAFlags - Desktop icons device flags
; ***************************************************************************
#DDA_DRIVE_NONE = $0 ; no devices
#DDA_DRIVE_FIXED = $1 ; hard disks
#DDA_DRIVE_REMOTE = $2 ; network drives
#DDA_DRIVE_CDROM = $4 ; physical CD drives
#DDA_DRIVE_RAMDISK = $8 ; RAM drives
#DDA_DRIVE_REMOVABLE = $10 ; Removable media
#DDA_DRIVE_VCDS = $20 ; Virtual CD drives
#DDA_DRIVE_USE_VCD_INFO = $1000 ; Use Virtual CD Data
#DDA_DRIVE_CHECK_BY_VCD = $2000 ; Update drive information continuously
#DDA_DRIVE_SHOW_VCD_ALWAYS = $4000 ; Show icons For empty virtual drives
; ***************************************************************************
; VCDApiImageDelete
; ***************************************************************************
; No special flgs
#VCDDEL_DEFAULT = $0
; Do show any output except the eject question - See 'VCDDEL_AUTOEJECT'
#VCDDEL_QUIET = $2
; Auto Eject image - No question
#VCDDEL_AUTOEJECT = $100
; Only remove the image from Virtual CD but doesn't delete physical
#VCDDEL_REMOVE_FROM_VCD_ONLY = $10000
; ***************************************************************************
; declaration
; ***************************************************************************
CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
#VCD_ImportLib$ = "vc10api64.lib"
CompilerElse
#VCD_ImportLib$ = "vc10api.lib"
CompilerEndIf
Import #VCD_ImportLib$
VCDApiEject(szDriveOrFileName.p-Ascii)
VCDApiGetImagePropertiesLong(szFileName.p-Ascii, nProperty)
VCDApiGetLastError()
VCDApiGetMountDrive(szFileName.p-Ascii)
VCDApiInsert(cDrive.c, szFileName.p-Ascii, szPassword.p-Ascii)
VCDApiInsertEx(cDrive.c, szFileName.p-Ascii, szPassword.p-Ascii, dwFlags)
VCDApiSetDebug(bDebug)
VCDApiSetDriveLetters(szDriveLetters.p-Ascii)
VCDApiSetImagePropertiesLong(szFileName.p-Ascii, nProperty, lNewVal)
VCDApiSetImagePropertiesString(szFileName.p-Ascii, nProperty, szNewValue.p-Ascii)
VCDApiLockVCDDrive(cDrive.c)
VCDApiUnLockVCDDrive(cDrive.c)
VCDApiIsVCDDriveLocked(cDrive.c)
VCDApiIsProperlyInstalled()
VCDApiGetNumberOfVCDDevices()
VCDApiGetImageCount(nFromWhere)
VCDApiLaunchAndWait(szCmdLine.p-Ascii, szWorkDir.p-Ascii, nShowCmd, *lExitCode, bWait)
VCDApiGetFirstPhysicalDrive()
VCDApiIsDVDRAMWriteProtected(strFile.p-Ascii)
VCDApiSetDVDRAMWriteProtected(strFile.p-Ascii, bProtect)
VCDApiIsDVDRAMDriveWriteProtected(cDrive.c)
VCDApiSetDVDRAMDriveWriteProtected(cDrive.c, bProtect)
VCDApiSetVCDPath(dwPathID, lpPath.p-Ascii)
VCDApiLaunchAndWaitEx(szApp.p-Ascii, szParams.p-Ascii, szWorkDir.p-Ascii, nShowCmd, *lExitCode, dwFlags)
VCDApiInitMusicFileMode(cDrive.c)
VCDApiSetDDAEnabled(bNew, dwFlags)
VCDApiSetDDAFlags(dwDDAFlags, dwFlags)
VCDApiImageDelete(szImage.p-Ascii, dwFlags)
VCDApiCreateEmptyImage(dwCDType, dwSectors, szImage.p-Ascii, szDesc.p-Ascii, szPW.p-Ascii, bAES, bISO, bCompatibility)
VCDApiGetMusicDrive()
VCDApiVDlgAskDriveForImage(szImage.p-Ascii)
VCDApiGetFilesCountImage(szImage.p-Ascii)
CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
VCDApiGetImagePropertiesString_(szFileName.p-Ascii, nProperty, *lpResult, nResultLen) As "VCDApiGetImagePropertiesString"
VCDApiGetVCDDriveLetters_(*lpResult, nResultLen) As "VCDApiGetVCDDriveLetters"
VCDApiGetMountedFileFromDrive_(cDrive.c, *lpResult, nResultLen) As "VCDApiGetMountedFileFromDrive"
VCDApiGetImageAt_(nFromWhere, nPosition, *lpResult, nResultLen) As "VCDApiGetImageAt"
VCDApiGetVCDBurnerDriveLetters_(*lpResult, nResultLen) As "VCDApiGetVCDBurnerDriveLetters"
VCDApiGetVCDPath_(dwPathID, *lpResult, nResultLen) As "VCDApiGetVCDPath"
VCDApiGetFileAtImage_(szImage.p-Ascii, dwIndex, *szBuffer, buffLen) As "VCDApiGetFileAtImage"
VCDApiGetKnownDrives_(*szBuffer, buffLen) As "VCDApiGetKnownDrives"
CompilerElse
VCDApiGetImagePropertiesString_(szFileName.p-Ascii, nProperty, *lpResult, nResultLen) As "_VCDApiGetImagePropertiesString@16"
VCDApiGetVCDDriveLetters_(*lpResult, nResultLen) As "_VCDApiGetVCDDriveLetters@8"
VCDApiGetMountedFileFromDrive_(cDrive.c, *lpResult, nResultLen) As "_VCDApiGetMountedFileFromDrive@12"
VCDApiGetImageAt_(nFromWhere, nPosition, *lpResult, nResultLen) As "_VCDApiGetImageAt@16"
VCDApiGetVCDBurnerDriveLetters_(*lpResult, nResultLen) As "_VCDApiGetVCDBurnerDriveLetters@8"
VCDApiGetVCDPath_(dwPathID, *lpResult, nResultLen) As "_VCDApiGetVCDPath@12"
VCDApiGetFileAtImage_(szImage.p-Ascii, dwIndex, *szBuffer, buffLen) As "_VCDApiGetFileAtImage@16"
VCDApiGetKnownDrives_(*szBuffer, buffLen) As "_VCDApiGetKnownDrives@8"
CompilerEndIf
EndImport
Macro VCDApiGetImagePropertiesString(szFileName, nProperty, lpResult, nResultLen)
VCDApiGetImagePropertiesString_(szFileName, nProperty, lpResult, nResultLen)
PokeS(lpResult, PeekS(lpResult, -1, #PB_Ascii))
EndMacro
Macro VCDApiGetVCDDriveLetters(lpResult, nResultLen = 27)
VCDApiGetVCDDriveLetters_(lpResult, nResultLen)
PokeS(lpResult, PeekS(lpResult, -1, #PB_Ascii))
EndMacro
Macro VCDApiGetMountedFileFromDrive(cDrive, lpResult, nResultLen = #MAX_PATH)
VCDApiGetMountedFileFromDrive_(cDrive, lpResult, nResultLen)
PokeS(lpResult, PeekS(lpResult, -1, #PB_Ascii))
EndMacro
Macro VCDApiGetImageAt(nFromWhere, nPosition, lpResult, nResultLen = #MAX_PATH)
VCDApiGetImageAt_(nFromWhere, nPosition, lpResult, nResultLen)
PokeS(lpResult, PeekS(lpResult, -1, #PB_Ascii))
EndMacro
Macro VCDApiGetVCDBurnerDriveLetters(lpResult, nResultLen = 27)
VCDApiGetVCDBurnerDriveLetters_(lpResult, nResultLen)
PokeS(lpResult, PeekS(lpResult, -1, #PB_Ascii))
EndMacro
Macro VCDApiGetVCDPath(dwPathID, lpResult, nResultLen = #MAX_PATH)
VCDApiGetVCDPath_(dwPathID, lpResult, nResultLen)
PokeS(lpResult, PeekS(lpResult, -1, #PB_Ascii))
EndMacro
Macro VCDApiGetFileAtImage(szImage, index, szBuffer, buffLen = #MAX_PATH)
VCDApiGetFileAtImage_(szImage, index, szBuffer, buffLen)
PokeS(szBuffer, PeekS(szBuffer, -1, #PB_Ascii))
EndMacro
Macro VCDApiGetKnownDrives(szBuffer, buffLen = 27)
VCDApiGetKnownDrives_(szBuffer, buffLen)
PokeS(szBuffer, PeekS(szBuffer, -1, #PB_Ascii))
EndMacro
Thomas