VBでCD/DVDを焼くには?


Hirobo-Macros  URL  2007-11-27 22:04:32  No: 99830

こんにちはVB6でCD/DVDを焼くことは可能でしょうか?


ささき  2007-11-27 22:25:43  No: 99831

こんにちは、

こちらの過去ログが参考になるかと思います。
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200706/07060054.txt


Hirobo-Macros  2007-11-27 22:36:56  No: 99832

<ささきさん
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200706/07060054.txt
の過去ログを見たのですが、ここではVB6でCD/DVDを焼く事にあきらめているように思えます。
Image Mastering API (IMAPI)を使用しできるようなのですが、VB6で作成されたライティングツールのサンプル(vbp)は、ないのでしょうか?


魔界の仮面弁士  2007-11-27 23:04:17  No: 99833

VB6 用の IMAPI ライブラリです。
http://www.vbaccelerator.com/home/vb/Code/Libraries/Writing_CDs/IMAPI/article.asp


Hirobo-Macros  2007-11-28 22:03:09  No: 99834

IMAPIライブラリを見ましたが、正直よくわかりません。

最終的にファンクション化して手軽に使えるようにしたいのですが、
vbで作成されてえあるCD/DVDの書き込みのサンプルさえあればそれを
ファンクション化できるのですが。。。

Public Function WriteCD_DVD(Files() As String,Drive As String)


魔界の仮面弁士  2007-11-29 03:37:03  No: 99835

# 面白そうなのでサンプルを書きたいけれど、年末進行でそこまでの余裕が無い…。

> 正直よくわかりません。
サンプルだけでなく、IMAPI の SDK も読まないと、理解できないと思いますよ。
IMAPI で処理するなら、『Joliet』形式のデータ生成のために、
IStorage の構築も必要になってくると思いますし。

> vbで作成されてえあるCD/DVDの書き込みのサンプルさえあれば
VB6 によるリッピングのサンプルや、VB.NET によるレッドブックの書き込み、
VB 以外の IMAPI 書き込みサンプルなどは、たまに見かけるのですけれどね。

で、XP の CD書き込みウィザードを起動させる程度でもよければ、
Shell オブジェクト経由で処理できますし、ICDBurn での書き込みでも
良いならば、先の URL 内からリンクされているかと思います。

手軽なのは、OS のライティング機能を使うことではなく、
パケットライト系のドライバを導入することかと思います。そうすれば、
FileCopy ステートメントや Print # / Put # ステートメントなどで
ファイルを書き込むことができますので、複雑なコーディングも不要かと。


Hirobo-Macros  2007-12-03 21:35:12  No: 99836

お〜  fileCopyでできるならいいですねー
ウィザードを起動させてそれを自動化させればいいですねー

今やりたいことは、あらかじめバックアップ用DVDをドライブに入れておき、集計元ファイル群から集計して元ファイルと集計したデータファイル群をDVDに自動でバックアップしたいです。
集計に時間がかかる為、人の手が入るのはDVD入れてボタンを押すのみにしたいです。
##########################################################
DVD挿入(人の手)

処理スタートボタンを押す(人の手)

集計処理

集計完了

書き込みウィザードを開く処理 又は DVDの名前設定

書き込みウィザード設定処理(自動化できるのか?) 又は  FileCopyでの書き込み処理

書き込み

処理完了
##########################################################


魔界の仮面弁士  2007-12-03 22:12:23  No: 99837

そういう目的であれば、とりあえずは、ライブ ファイル システム形式を試してみてはいかがでしょう。
http://www.tku.ac.jp/~densan/local/cd-drive-vista/vista-cd.html


Hirobo-Macros  2007-12-03 23:23:01  No: 99838

マスタ形式は追記のみ可能と思っていましたが違う!?
もしかして追記もできないのですか?(一度に焼く事しかできない?)

filecopyでの方法でつくってみましたが、CDの名前の付け方がわかりません。今、試せないのが残念ですが・・・(会社のPCなので)
ちなみにMediaPlayerでCDを作成したときも名前がつけられません。(どーでもいいか)

Public Function WriteCD_DVD(TitleName As String, Files() As String, Drive As String) As Boolean
On Error GoTo Err
Dim FSO As Object
Dim cnt As String
Set FSO = CreateObject("Scripting.FileSystemObject")
cnt = 0
If Right(Drive, 1) <> "\" Then Drive = Drive & "\"
'元ファイルの有無確認
Do
    DoEvents
    If FSO.FileExists(Files(cnt)) = False Then GoTo Err
    cnt = cnt + 1
Loop Until file(cnt) = ""
'書き込み
cnt = 0
Do
    DoEvents
    Call FSO.CopyFile(Files(cnt), Drive & Dir(Files(cnt)))
    Files(cnt) = Drive & Dir(Files(cnt))
    cnt = cnt + 1
Loop Until Files(cnt) = ""
'書き込み先ファイルの有無確認
cnt = 0
Do
    DoEvents
    If FSO.FileExists(Files(cnt)) = False Then GoTo Err
    cnt = cnt + 1
Loop Until file(cnt) = ""

WriteCD_DVD = True
Exit Function
Err:
    WriteCD_DVD = False
End Function


Hirobo-Macros  2007-12-03 23:27:48  No: 99839

ahh  今  気が付いたのですが

CD/DVDを挿入しまずフォーマットを決めてフォーマットしなければならないですね  
その時、名前が付けれるのか・・・・


ruru  2007-12-08 05:05:23  No: 99840

以前コマンドラインで実行してCDが焼けるツール(cdrtools)を
wshから起動する形で作ったことがあります。

http://cdrecord.berlios.de/old/private/cdrecord.html
http://mouneru.web.fc2.com/cdrecord_fe/

これなら焼く処理を自分で実装する必要はありません。


hirobo-macros  2007-12-17 18:53:55  No: 99841

ruruさん  こんにちは
ツール紹介ありがとうございます。
[CDRecord Direct]
確認です。コマンドは下記のものでしょうか?
イメージファイルに
CDRecord 書込み
sourcedir,構築元ディレクトリ
volumelabel,ボリュームID
outisoimage,イメージファイル保存先
burnimage,イメージファイル(開く)
readimage-save,:イメージファイル(保存)
readimage-open,:イメージファイル(開く)
device-only,使用するデバイス
device-speed,使用するデバイスと速度


ruru  2007-12-18 06:15:10  No: 99842

CDRecord Direct? CDRecordフロントエンド?
どちらを使ったか覚えていませんが
GUI上で選択した値に応じて実際に叩くコマンドを
オプション付きでGUI上で表示が出来たと思います。

またGNUの有名ツールなのでググればコマンドラインオプションは
そこそこ出てきます。

実際に自分でDOS窓から何度もコマンドを叩いてみて
オプションや設定値などは検討してみてください。

私の場合以下のような指定でDVDでなくCDを焼いていました。

cdrecord.exe -scanbus の実行結果をファイルに取り込んでデバイス名を取得した後、

(1) CDからのISOイメージ作成
    readcd.exe dev=##DEVICE_NAME## speed=256 retries=0 f='##ISO_IMAGE##'

(2) HDD上のファイルからISOイメージ作成
    mkisofs -iso-level 4 -J -ucs-level 2 -allow-lowercase -V "##VOLUME_LABEL##" -o "##ISO_IMAGE##" "##SRC_DIR##"

(3) ISOイメージからのCD焼きこみ
    cdrecord.exe dev=ASPI: dev=##DEVICE_NAME## -v gracetime=3 speed=8 -data driveropts=burnfree -eject '##ISO_IMAGE##'

(4) ドライブのEJECT
    cdrecord.exe dev=##DEVICE_NAME## -eject

INIファイルに上記の各コマンドを書いておいて
##ほげほげ##で括っている部分を環境に合わせてReplaceして
Wshに送り込みました。

ただ途中で焼きに失敗したりエラーが出た場合、
詳細なコードがわからないので
コマンドを実行した際のログから判断するなどの工夫も必要です。


ruru  2007-12-18 07:25:43  No: 99843

↑はコマンドの例って事でお願いします。

実際にWshに送り込む場合は "CMD /C" をつけたり
ツールのパス名を短くしたりコマンドをダブルクォートで括ったりと
それなりのお作法は必要だったと思います。


熊谷隆史  2008-02-02 19:21:38  No: 99844

環境が分からないのでXP以降なら
IMAPIv2.0(XPなら追加インストール)とか。

仮にXPとして、標準のIMAPIv1(CDのみ)でも
こちらの魔界の仮面弁士さんのDispCallFuncを
使ったコードを活用されるとか。

http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200310/03100017.txt

後はこちらが参考になるかと。

http://blog90.fc2.com/j/junktxt/file/imapiv1_02.html


川内  2008-02-06 09:08:37  No: 99845

以前、似たようなことで悩んだことがありました。
外部のフリーソフトを使用するのが可能なら、呉葉のAPIとかを
使うのも手かも知れません。

http://wing.zero.ad.jp/hir/black/program/kurehaapi.pdf


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加