spudw2k Posted November 8, 2008 Share Posted November 8, 2008 Hi!According to the msdn page it's the full path to the file.If you read it you will also see that my documentation is wrong about the return type (1 = directory, 2= file).However I just tested this function and I can't get it to work. I have no idea why. I will check it when I get time. It's not an essential function however so you might wanna think about keeping the info if a file has been added internally.My idea was to build an array first (with the CD Contents) and then, last step before burning, create the FS. I'm just afraid it will be slower than say populating the FS from the gui directly. Thanks for the response. Spoiler Things I've Made: Always On Top Tool ◊ AU History ◊ Deck of Cards ◊ HideIt ◊ ICU ◊ Icon Freezer ◊ Ipod Ejector ◊ Junos Configuration Explorer ◊ Link Downloader ◊ MD5 Folder Enumerator ◊ PassGen ◊ Ping Tool ◊ Quick NIC ◊ Read OCR ◊ RemoteIT ◊ SchTasksGui ◊ SpyCam ◊ System Scan Report Tool ◊ System UpTime ◊ Transparency Machine ◊ VMWare ESX Builder Misc Code Snippets: ADODB Example ◊ CheckHover ◊ Detect SafeMode ◊ DynEnumArray ◊ GetNetStatData ◊ HashArray ◊ IsBetweenDates ◊ Local Admins ◊ Make Choice ◊ Recursive File List ◊ Remove Sizebox Style ◊ Retrieve PNPDeviceID ◊ Retrieve SysListView32 Contents ◊ Set IE Homepage ◊ Tickle Expired Password ◊ Transpose Array Projects: Drive Space Usage GUI ◊ LEDkIT ◊ Plasma_kIt ◊ Scan Engine Builder ◊ SpeeDBurner ◊ SubnetCalc Cool Stuff: AutoItObject UDF ◊ Extract Icon From Proc ◊ GuiCtrlFontRotate ◊ Hex Edit Funcs ◊ Run binary ◊ Service_UDF Link to comment Share on other sites More sharing options...
argumentum Posted January 26, 2009 Share Posted January 26, 2009 ok, I runned this: CODE' This script burns data files to disc in a single session ' using files from a single directory tree. ' Copyright © Microsoft Corp. 2006 Option Explicit ' *** CD/DVD disc file system types Const FsiFileSystemISO9660 = 1 Const FsiFileSystemJoliet = 2 Const FsiFileSystemUDF102 = 4 ' *** IFormat2Data Write Action Enumerations Const IMAPI_FORMAT2_DATA_WRITE_ACTION_VALIDATING_MEDIA = 0 Const IMAPI_FORMAT2_DATA_WRITE_ACTION_FORMATTING_MEDIA = 1 Const IMAPI_FORMAT2_DATA_WRITE_ACTION_INITIALIZING_HARDWARE = 2 Const IMAPI_FORMAT2_DATA_WRITE_ACTION_CALIBRATING_POWER = 3 Const IMAPI_FORMAT2_DATA_WRITE_ACTION_WRITING_DATA = 4 Const IMAPI_FORMAT2_DATA_WRITE_ACTION_FINALIZATION = 5 Const IMAPI_FORMAT2_DATA_WRITE_ACTION_COMPLETED = 6 'Here is a phony progress bar that uses an IE Window dim x set x = createobject("internetexplorer.application") 'in code, the colon acts as a line feed x.navigate2 "about:blank" : x.width = 950 : x.height = 287 : x.toolbar = false : x.menubar = false : x.statusbar = false : x.visible = True x.document.write "<font color=blue>" WScript.Quit(Main) Function Main Dim Index ' Index to recording drive. Dim Recorder ' Recorder object Dim Path ' Directory of files to burn Dim Stream ' Data stream for burning device 'Index = 1 ' Second drive on the system Index = 0 ' First drive on the system Path = "C:\Program Files\Merge eFilm\eFilm\CD\NG\NG" ' Files to transfer to disc ' Create a DiscMaster2 object to connect to CD/DVD drives. Dim g_DiscMaster Set g_DiscMaster = WScript.CreateObject("IMAPI2.MsftDiscMaster2") ' Create a DiscRecorder object for the specified burning device. Dim uniqueId set recorder = WScript.CreateObject("IMAPI2.MsftDiscRecorder2") uniqueId = g_DiscMaster.Item(index) recorder.InitializeDiscRecorder( uniqueId ) ' Create an image stream for a specified directory. Dim FSI 'Disc file system Dim Dir 'Root directory of the disc file system Dim dataWriter ' Create a new file system image and retrieve root directory Set FSI = CreateObject("IMAPI2FS.MsftFileSystemImage") Set Dir = FSI.Root ' Define the new disc format and set the recorder Set dataWriter = CreateObject ("IMAPI2.MsftDiscFormat2Data") dataWriter.recorder = Recorder dataWriter.ClientName = "IMAPIv2 TEST" FSI.FreeMediaBlocks = dataWriter.FreeSectorsOnMedia FSI.FileSystemsToCreate = FsiFileSystemISO9660 ' Add the directory and its contents to the file system Dir.AddTree Path, false ' Create an image from the file system Dim result Set result = FSI.CreateResultImage() Stream = result.ImageStream ' Attach event handler to the data writing object. WScript.ConnectObject dataWriter, "dwBurnEvent_" ' Specify the recorder and write the stream to disc. '~ WScript.Echo "Writing content to disc..." x.document.write "Writing content to disc...<br>" dataWriter.write(Stream) '~ WScript.Echo "----- Finished writing content -----" x.document.write "----- Finished writing content -----<br>" Main = 0 wscript.sleep 1000 x.quit set x = nothing End Function ' Event handler - Progress updates when writing data SUB dwBurnEvent_Update( byRef object, byRef progress ) DIM strTimeStatus strTimeStatus = "Time: " & progress.ElapsedTime & _ " / " & progress.TotalTime SELECT CASE progress.CurrentAction CASE IMAPI_FORMAT2_DATA_WRITE_ACTION_VALIDATING_MEDIA '~ WScript.Echo "Validating media " & strTimeStatus x.document.write "Validating media " & strTimeStatus & "<br>" CASE IMAPI_FORMAT2_DATA_WRITE_ACTION_FORMATTING_MEDIA '~ WScript.Echo "Formatting media " & strTimeStatus x.document.write "Formatting media " & strTimeStatus & "<br>" CASE IMAPI_FORMAT2_DATA_WRITE_ACTION_INITIALIZING_HARDWARE '~ WScript.Echo "Initializing Hardware " & strTimeStatus x.document.write "Initializing Hardware " & strTimeStatus & "<br>" CASE IMAPI_FORMAT2_DATA_WRITE_ACTION_CALIBRATING_POWER '~ WScript.Echo "Calibrating Power (OPC) " & strTimeStatus x.document.write "Calibrating Power (OPC) " & strTimeStatus & "<br>" CASE IMAPI_FORMAT2_DATA_WRITE_ACTION_WRITING_DATA DIM totalSectors, writtenSectors, percentDone totalSectors = progress.SectorCount writtenSectors = progress.LastWrittenLba - progress.StartLba percentDone = FormatPercent(writtenSectors/totalSectors) '~ WScript.Echo "Progress: " & percentDone & " " & strTimeStatus '~ x.document.write "Progress: " & percentDone & " " & strTimeStatus & "<br>" x.document.title = "Progress: " & percentDone & " %" CASE IMAPI_FORMAT2_DATA_WRITE_ACTION_FINALIZATION '~ WScript.Echo "Finishing the writing " & strTimeStatus x.document.write "Finishing the writing " & strTimeStatus & "<br>" CASE IMAPI_FORMAT2_DATA_WRITE_ACTION_COMPLETED '~ WScript.Echo "Completed the burn." x.document.write "Completed the burn." & "<br>" CASE ELSE '~ WScript.Echo "Unknown action: " & progress.CurrentAction x.document.write "Unknown action: " & progress.CurrentAction & "<br>" END SELECT END SUB and translate it to autoit expandcollapse popup;~ ' This script burns data files to disc in a single session ;~ ' using files from a single directory tree. ;~ ' Copyright (C) Microsoft Corp. 2006 ;~ Option Explicit ;~ ' *** CD/DVD disc file system types Const $FsiFileSystemISO9660 = 1 Const $FsiFileSystemJoliet = 2 Const $FsiFileSystemUDF102 = 4 ;~ ' *** IFormat2Data Write Action Enumerations Const $IMAPI_FORMAT2_DATA_WRITE_ACTION_VALIDATING_MEDIA = 0 Const $IMAPI_FORMAT2_DATA_WRITE_ACTION_FORMATTING_MEDIA = 1 Const $IMAPI_FORMAT2_DATA_WRITE_ACTION_INITIALIZING_HARDWARE = 2 Const $IMAPI_FORMAT2_DATA_WRITE_ACTION_CALIBRATING_POWER = 3 Const $IMAPI_FORMAT2_DATA_WRITE_ACTION_WRITING_DATA = 4 Const $IMAPI_FORMAT2_DATA_WRITE_ACTION_FINALIZATION = 5 Const $IMAPI_FORMAT2_DATA_WRITE_ACTION_COMPLETED = 6 Main() Func Main() Global $Index ; ' Index to recording drive. Global $Recorder ; ' Recorder object Global $Path ; ' Directory of files to burn Global $Stream ; ' Data stream for burning device ;~ ' Index = 1 ' Second drive on the system $Index = 0 ; ' First drive on the system $Path = "C:\Program Files\Merge eFilm\eFilm\CD\NG\NG" ; ' Files to transfer to disc ; 'Create a DiscMaster2 object to connect to CD/DVD drives. Global $g_DiscMaster $g_DiscMaster = ObjCreate("IMAPI2.MsftDiscMaster2") ; 'Create a DiscRecorder object for the specified burning device. Global $uniqueId $recorder = ObjCreate("IMAPI2.MsftDiscRecorder2") $uniqueId = $g_DiscMaster.Item($index) $recorder.InitializeDiscRecorder( $uniqueId ) ; 'Create an image stream for a specified directory. Global $FSI ; 'Disc file system Global $Dir ; 'Root directory of the disc file system Global $dataWriter ; 'Create a new file system image and retrieve root directory $FSI = ObjCreate("IMAPI2FS.MsftFileSystemImage") $Dir = $FSI.Root ; 'Define the new disc format and set the recorder $dataWriter = ObjCreate("IMAPI2.MsftDiscFormat2Data") $dataWriter.recorder = $Recorder $dataWriter.ClientName = "IMAPIv2 TEST" $FSI.FreeMediaBlocks = $dataWriter.FreeSectorsOnMedia $FSI.FileSystemsToCreate = $FsiFileSystemISO9660 ; 'Add the directory and its contents to the file system $Dir.AddTree( $Path, false ) ; 'Create an image from the file system Global $oResult,$Stream $oResult = $FSI.CreateResultImage() $Stream = $oResult.ImageStream ; 'Attach event handler to the data writing object. ObjEvent($dataWriter, "dwBurnEvent_") ; 'Specify the recorder and write the stream to disc. ConsoleWrite("-Writing content to disc..."&@CRLF) ProgressOn("Burner", "", "Writing content to disc...") $dataWriter.write($Stream) ConsoleWrite("----- Finished writing content -----"&@CRLF) ProgressSet(100 , "", "----- Finished writing content -----") Return 0 EndFunc ; 'Event handler - Progress updates when writing data Func dwBurnEvent_Update($object, $progress) DIM $strTimeStatus $strTimeStatus = "Time: " & $progress.ElapsedTime & _ " / " & $progress.TotalTime Switch $progress.CurrentAction CASE $IMAPI_FORMAT2_DATA_WRITE_ACTION_VALIDATING_MEDIA ConsoleWrite("+Validating media " & $strTimeStatus &@CRLF) ProgressSet(0 , "", "Validating media") CASE $IMAPI_FORMAT2_DATA_WRITE_ACTION_FORMATTING_MEDIA ConsoleWrite("+Formatting media " & $strTimeStatus &@CRLF) ProgressSet(0 , "", "Formatting media") CASE $IMAPI_FORMAT2_DATA_WRITE_ACTION_INITIALIZING_HARDWARE ConsoleWrite("+Initializing Hardware " & $strTimeStatus &@CRLF) ProgressSet(0 , "", "Initializing Hardware") CASE $IMAPI_FORMAT2_DATA_WRITE_ACTION_CALIBRATING_POWER ConsoleWrite("+Calibrating Power (OPC) " & $strTimeStatus &@CRLF) ProgressSet(0 , "", "Calibrating Power (OPC)") CASE $IMAPI_FORMAT2_DATA_WRITE_ACTION_WRITING_DATA DIM $totalSectors, $writtenSectors, $percentDone $totalSectors = $progress.SectorCount $writtenSectors = $progress.LastWrittenLba - $progress.StartLba $percentDone = Round($writtenSectors/$totalSectors,2) ConsoleWrite("+Progress: " & $percentDone * 100 & " " & $strTimeStatus &@CRLF) ProgressSet($percentDone * 100 , "Progress:", $strTimeStatus) CASE $IMAPI_FORMAT2_DATA_WRITE_ACTION_FINALIZATION ConsoleWrite("+Finishing the writing " & $strTimeStatus &@CRLF) ProgressSet(100 , "", "Finishing the writing") CASE $IMAPI_FORMAT2_DATA_WRITE_ACTION_COMPLETED ConsoleWrite("+Completed the burn." &@CRLF) ProgressSet(100 , "", "Completed the burn.") CASE ELSE ConsoleWrite("+Unknown action: " & $progress.CurrentAction &@CRLF) ProgressSet(0 , "Unknown action:", $progress.CurrentAction) EndSwitch EndFunc ....and it works just like in the VBS but the callback to the update is unresponsive, any workaround ? TIA Follow the link to my code contribution ( and other things too ). FAQ - Please Read Before Posting. Link to comment Share on other sites More sharing options...
qwert Posted March 15, 2009 Share Posted March 15, 2009 This looks like a great way to fashion a one-button backup of all my essential information. Unfortunately I got an error right off the bat when I tried it. Here's the message I got: >Running:(3.3.0.0):\AutoIt3\autoit3.exe "E:\Scripts\CDBurn.au3" E:\Scripts\CDBurnRequest.au3 (13) : ==> Subscript used with non-Array variable.: $drive = _IMAPI2_DriveGetObj($ids[1]) $drive = _IMAPI2_DriveGetObj($ids^ ERROR ->10:55:24 AutoIT3.exe ended.rc:1These seem to be the statements involved: ; Get the unique ids of all the drives on the system $ids = _IMAPI2_DrivesGetID() ; Get the object of the first drive $drive = _IMAPI2_DriveGetObj($ids[1]) Can someone suggest the proper solution? I'm running the latest AU3, but have I missed an include file or something? I'm always reluctant to go changing someone's script, especially since the SyntaxCheck didn't show any problems. Thanks in advance for any help. Link to comment Share on other sites More sharing options...
qwert Posted March 17, 2009 Share Posted March 17, 2009 Can someone suggest the proper solution? Thanks. Link to comment Share on other sites More sharing options...
monoceres Posted March 18, 2009 Author Share Posted March 18, 2009 Are you sure that _IMAPI2_DrivesGetID() actually succeds and returns an array with the index you're trying to use? Broken link? PM me and I'll send you the file! Link to comment Share on other sites More sharing options...
qwert Posted March 19, 2009 Share Posted March 19, 2009 Are you sure that _IMAPI2_DrivesGetID() actually succeds and returns an array with the index you're trying to use?Thanks for your reply. Indeed, the problem seems two-fold. The first is that the statement "$drive = _IMAPI2_DriveGetObj($ids[1])" got the -1 Array Error. Defining Global $ids[20] didn't solve it. However, changing the name to $fids[20] seems to make the variable work in the statement -- but I don't know why $ids shouldn't work. Secondly, using $fids as the variable, IMAPI2 then got the same kind of error (-1 Array) in statement number 274: Return StringLeft ($temp[0], 1). I tried changing it to Return StringLeft($temp, 1) and it executes, but it returns -1. What I need to know is why the array variables aren't working in the first place. I don't like changing scripts when I don't understand why I making the change. I hope you can stick with me on solving this. I do appreciate the help. Link to comment Share on other sites More sharing options...
Spiff59 Posted March 19, 2009 Share Posted March 19, 2009 I think my working example of appending files to an "open" CD that I posted last October in this thread (on page 3.5) is related? If I recall correctly, I may have encountered this same error resulting from "virtual CD drives" created by DaemonTools, Roxio, MagicISO, or a dozen other CD applications. I believe they caused _IMAPI2_DriveGetObj to choke. Do you have any such pseudo-CD drivers installed? I'd added a test to bypass drives reporting as "SCSI" (which is what the phoney CD drivers report) in my example, and that corrected the problem for me. IDE and USB drives performed fine. Link to comment Share on other sites More sharing options...
Spiff59 Posted March 20, 2009 Share Posted March 20, 2009 Can someone suggest the proper solution? Thanks.I dug out the source for the example routine I posted here in October, removed the "scsi" test, and ran it:IMAPI2.au3 (274) : ==> Subscript used with non-Array variable.:So, my previous post IS your problem.Either _IMAPI2_DrivesGetID() needs to be modified to keep virtual drives (with the SCSI string) out of the array (that's the route I went in my October example on page 3), or, code needs to be in place to ensure that the drive selected from the "ids" array, and passed to _IMAPI2_DriveGetObj, is a true IDE, PCIe, or USB-attached CD/DVD drive, and not a pseudo-drive. Link to comment Share on other sites More sharing options...
qwert Posted March 22, 2009 Share Posted March 22, 2009 I'd added a test to bypass drives reporting as "SCSI" (which is what the phoney CD drivers report) in my example, and that corrected the problem for me. IDE and USB drives performed fine.I do believe that is my problem. Thanks for explaining it! Link to comment Share on other sites More sharing options...
Spiff59 Posted March 22, 2009 Share Posted March 22, 2009 (edited) I'm not sure that testing for the "scsi" string is the best way to identify the virtual drives, but it works. I'd suggest that the _IMAPI2_DrivesGetID() function in the UDF be modified to either: Func _IMAPI2_DrivesGetID() Local $oDiscmaster, $iCount $oDiscmaster = ObjCreate("IMAPI2.MsftDiscMaster2") If Not IsObj($oDiscmaster) Then Return -1 $iCount = $oDiscmaster.Count() Local $sArray[$iCount + 1] $sArray[0] = 0 For $i = 1 To $iCount If StringMid($oDiscmaster.Item($i - 1), 5, 4) <> "scsi" Then $sArray[0] += 1 $sArray[$sArray[0]] = $oDiscmaster.Item($i - 1) Endif Next Redim $sArray[$sArray[0] + 1] $oDiscmaster = "" Return $sArray EndFunc ;==>_IMAPI2_DrivesGetIDor Func _IMAPI2_DrivesGetID() Local $oDiscmaster, $iCount $oDiscmaster = ObjCreate("IMAPI2.MsftDiscMaster2") If Not IsObj($oDiscmaster) Then Return -1 $iCount = $oDiscmaster.Count() Local $sArray[$iCount + 1] $sArray[0] = 0 For $i = 1 To $iCount If StringMid($oDiscmaster.Item($i - 1), 5, 4) = "scsi" Then Redim $sArray[$sArray[0] + ($iCount - $i + 1)] Else $sArray[0] += 1 $sArray[$sArray[0]] = $oDiscmaster.Item($i - 1) Endif Next $oDiscmaster = "" Return $sArray EndFunc ;==>_IMAPI2_DrivesGetID The second example with the more complex, but optional, redim might be preferrable if most PC's don't have a virtual drive defined, as no Redim would be executed. If a few clock tics aren't important, or virtual drives are common, then the first example with the simple, but static, redim would be cool. Guess it's up to Monoceres if he wants to update the UDF, with one of these patches, or one of his own. Edit: fixed Redim syntax Edited March 23, 2009 by Spiff59 Link to comment Share on other sites More sharing options...
Gianni2 Posted March 23, 2009 Share Posted March 23, 2009 I'm not sure that testing for the "scsi" string is the best way to identify the virtual drives, but it works. I'd suggest that the _IMAPI2_DrivesGetID() function in the UDF be modified to either: Func _IMAPI2_DrivesGetID() Local $oDiscmaster, $iCount $oDiscmaster = ObjCreate("IMAPI2.MsftDiscMaster2") If Not IsObj($oDiscmaster) Then Return -1 $iCount = $oDiscmaster.Count() Local $sArray[$iCount + 1] $sArray[0] = 0 For $i = 1 To $iCount If StringMid($oDiscmaster.Item($i - 1), 5, 4) <> "scsi" Then $sArray[0] += 1 $sArray[$sArray[0]] = $oDiscmaster.Item($i - 1) Endif Next Redim($sArray, $sArray[0] + 1) $oDiscmaster = "" Return $sArray EndFunc ;==>_IMAPI2_DrivesGetIDor Func _IMAPI2_DrivesGetID() Local $oDiscmaster, $iCount $oDiscmaster = ObjCreate("IMAPI2.MsftDiscMaster2") If Not IsObj($oDiscmaster) Then Return -1 $iCount = $oDiscmaster.Count() Local $sArray[$iCount + 1] $sArray[0] = 0 For $i = 1 To $iCount If StringMid($oDiscmaster.Item($i - 1), 5, 4) = "scsi" Then Redim($sArray, $sArray[0] + ($iCount - $i + 1) Else $sArray[0] += 1 $sArray[$sArray[0]] = $oDiscmaster.Item($i - 1) Endif Next $oDiscmaster = "" Return $sArray EndFunc ;==>_IMAPI2_DrivesGetID The second example with the more complex, but optional, redim might be preferrable if most PC's don't have a virtual drive defined, as no Redim would be executed. If a few clock tics aren't important, or virtual drives are common, then the first example with the simple, but static, redim would be cool. Guess it's up to Monoceres if he wants to update the UDF, with one of these patches, or one of his own. Hello thx for you help, but i have a problem E:\..\..\IMAPI2.au3(95,10) : ERROR: syntax error Redim( can you say me why? greets Link to comment Share on other sites More sharing options...
Spiff59 Posted March 23, 2009 Share Posted March 23, 2009 Yes, shame on me. The Redim statements I typed in on-the-fly (without testing) are not correctly formatted. I changed the prior post to correct that. Thorry. Link to comment Share on other sites More sharing options...
luxactor Posted May 22, 2009 Share Posted May 22, 2009 Great work monoceres! I have a small question: how to burn files (not a folder) to the root dir? I'm using "_IMAPI2_AddFileToFS($fs, "D:\TestSrc\Test.mp3", ""), but it doesn't work. Link to comment Share on other sites More sharing options...
luxactor Posted May 22, 2009 Share Posted May 22, 2009 Ok, I think I have it now: "$sDestinationDir - Foler in the fs where the file is added" is not the Destination "Directory", it's the destination filename/dir on the cd/dvd. "_IMAPI2_AddFileToFS($fs, "D:\TestSrc\Test.mp3", "\Test.mp3") Link to comment Share on other sites More sharing options...
monoceres Posted June 6, 2009 Author Share Posted June 6, 2009 Minor update. Added _IMAPI2_CreateDirectoryInFS() & _IMAPI2_RemoveFileFromFS(). See first post for download. Broken link? PM me and I'll send you the file! Link to comment Share on other sites More sharing options...
Spiff59 Posted June 19, 2009 Share Posted June 19, 2009 Minor update. Added _IMAPI2_CreateDirectoryInFS() & _IMAPI2_RemoveFileFromFS().See first post for download.The function "_IMAPI2_RemoveFileFromFS" is misnamed, and I don't think the reference to "multisession disks" in the "_IMAPI2_BurnFSToDrive" comment is correct? Link to comment Share on other sites More sharing options...
froufrou Posted June 20, 2009 Share Posted June 20, 2009 (edited) @monoceres I still play with these great UDFs and thought i would throw these two minor additions up here just in case someone needed them.I use them to fill in Info on the GUI i made for your UDFs.If you like you can add them to yours or if not ,O.K. ,there kind of useless for most people. Func _IMAPI2_DriveGetVendorId(ByRef $oRecorder) Local $sTemp = $oRecorder.VendorId Return ($sTemp) EndFunc;==>_IMAPI2_DriveGetVendorId Func _IMAPI2_DriveGetProductId(ByRef $oRecorder) Local $sTemp = $oRecorder.ProductId Return ($sTemp) EndFunc;==>_IMAPI2_DriveGetProductId EXAMPLE expandcollapse popup#include<IMAPI2.au3> #include <GUIConstantsEx.au3> $controlGui = GUICreate("ControlGUI", 400,400) $list = GUICtrlCreateList("", 0, 65, 392, 80) GUICtrlSetTip(-1, "List of Drives", "", 1) $Combo1 = GUICtrlCreateCombo("select", 5, 26, 64, 25) GUICtrlSetTip(-1, "Drive Letters ", "", 1) $ids = _IMAPI2_DrivesGetID() If $ids[0] = 0 Then Exit For $i = 1 To $ids[0] $drive = _IMAPI2_DriveGetObj($ids[$i]) If IsObj($drive) = 0 Then ContinueLoop $letters = _IMAPI2_DriveGetLetter($drive) $media = _IMAPI2_DriveGetMedia($drive) $vendor = _IMAPI2_DriveGetVendorId($drive) $product = _IMAPI2_DriveGetProductId($drive) GUICtrlSetData($Combo1, $letters & ": ") GUICtrlSetData($list, $letters & ": "&$vendor & $product) Next GUISetState() While 1 $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Then Exit WEnd ; #FUNCTION# ==================================================================================================== ;================ ; Name...........: _IMAPI2_DriveGetVendorId ; Description ...: Gets the VendorId of a drive using the object for the drive ; Syntax.........: _IMAPI2_DriveGetVendorId(ByRef $oRecorder) ; Parameters ....: $oRecorder - Object of the drive ; Return values .: Success - VendorId ; Author ........: Andreas Karlsson (monoceres) ; Modified.......: FrouFrou ; Remarks .......: ; Related .......: _IMAPI2_DriveGetObj ; Link ..........; ; Example .......; No ; ==================================================================================================== ;=========================== Func _IMAPI2_DriveGetVendorId(ByRef $oRecorder) Local $sTemp = $oRecorder.VendorId Return ($sTemp) EndFunc;==>_IMAPI2_DriveGetVendorId ; #FUNCTION# ==================================================================================================== ;================ ; Name...........: _IMAPI2_DriveProductId ; Description ...: Gets the ProductId of a drive using the object for the drive ; Syntax.........: _IMAPI2_DriveProductId(ByRef $oRecorder) ; Parameters ....: $oRecorder - Object of the drive ; Return values .: Success - ProductId ; Author ........: Andreas Karlsson (monoceres) ; Modified.......: FrouFrou ; Remarks .......: ; Related .......: _IMAPI2_DriveGetObj ; Link ..........; ; Example .......; No ; ==================================================================================================== ;=========================== Func _IMAPI2_DriveGetProductId(ByRef $oRecorder) Local $sTemp = $oRecorder.ProductId Return ($sTemp) EndFunc;==>_IMAPI2_DriveGetProductId Edited June 20, 2009 by froufrou Link to comment Share on other sites More sharing options...
monoceres Posted June 20, 2009 Author Share Posted June 20, 2009 The function "_IMAPI2_RemoveFileFromFS" is misnamed, and I don't think the reference to "multisession disks" in the "_IMAPI2_BurnFSToDrive" comment is correct?Thanks, first post updated.@froufrouProvide the appropriate comment header as well and it's in Broken link? PM me and I'll send you the file! Link to comment Share on other sites More sharing options...
froufrou Posted June 20, 2009 Share Posted June 20, 2009 Something like this? If not just tell me what i need to do. ; #FUNCTION# ===================================================================== ; Name...........: _IMAPI2_DriveGetVendorId ; Description ...: Gets the VendorId of a drive using the object for the drive ; Syntax.........: _IMAPI2_DriveGetVendorId(ByRef $oRecorder) ; Parameters ....: $oRecorder - Object of the drive ; Return values .: Success - VendorId ; Author ........: FrouFrou ; Modified.......: ; Remarks .......: derived from Imapi2 UDFs by Andreas Karlsson (monoceres) ; Related .......: _IMAPI2_DriveGetObj ; Link ..........; ; Example .......; No ; =============================================================================== Func _IMAPI2_DriveGetVendorId(ByRef $oRecorder) Local $sTemp = $oRecorder.VendorId Return ($sTemp) EndFunc ;==>_IMAPI2_DriveGetVendorId ; #FUNCTION# ===================================================================== ; Name...........: _IMAPI2_DriveProductId ; Description ...: Gets the ProductId of a drive using the object for the drive ; Syntax.........: _IMAPI2_DriveProductId(ByRef $oRecorder) ; Parameters ....: $oRecorder - Object of the drive ; Return values .: Success - ProductId ; Author ........: FrouFrou ; Modified.......: ; Remarks .......: derived from Imapi2 UDFs by Andreas Karlsson (monoceres) ; Related .......: _IMAPI2_DriveGetObj ; Link ..........; ; Example .......; No ; ================================================================================ Func _IMAPI2_DriveGetProductId(ByRef $oRecorder) Local $sTemp = $oRecorder.ProductId Return ($sTemp) EndFunc ;==>_IMAPI2_DriveGetProductId Link to comment Share on other sites More sharing options...
monoceres Posted June 20, 2009 Author Share Posted June 20, 2009 Perfect! Updated first post again. Broken link? PM me and I'll send you the file! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now