VB5を使ってのCD-RWへファイルコピーするには?

解決


けろりん  2007-06-25 06:07:23  No: 136814

よろしくお願いします。VB5を使って開発しています。
パソコンの環境はWindowsXP(SP2)、データはAccess2003のMDBデータとスキャナで取り込んだ画像ファイルです。
上記2データをCD−RWにバックアップする処理をフォーム上のコマンドボタンを押して実行したいと考えています。
いろいろなサイトなどを探してみてFilecopyやSHFileOperationといったコピーの方法があると知りどちらも試してみたのですが、うまくいきません。間違っている箇所すらわからない状態です。CD−RWにバックアップを取ることは不可能なのでしょうか。また正しい方法が別に存在するのでしょうか。ご指摘、アドバイスをお願いいたします。


特攻隊長まるるう  2007-06-25 17:59:39  No: 136815

具体的な情報が足りません。
参考にしたサイト、コードの情報。
実際に試したコード。うまくいかない内容。
エラー表示があるならエラーメッセージの情報。。。

実際問題、けろりんさんが変数のスペルを1字
間違えただけで『うまくいかない』はずですから、
この説明では何もアドバイスできることがありません。


大吉末吉  2007-06-25 20:09:52  No: 136816

> FilecopyやSHFileOperationといったコピーの方法

CD-RWへの書き込みは、そんなに単純なやり方ではできないんじゃ・・・

「CD-RWにファイルを読み書きさせるには?」
http://madia.world.coocan.jp/vb/vb_bbs/200606/200606_06060042.html
の様に、パケットライト系のソフトをインストールしていれば別ですが・・・


魔界の仮面弁士  2007-06-26 08:41:36  No: 136817

> パケットライト系のソフトをインストールしていれば
それが、(開発者側にとって)一番簡単な解決策ですね。
フロッピーやハードディスクと同様、標準のファイル入出力命令で
処理できますので。

> CD-RWにバックアップを取ることは不可能なのでしょうか。
追加のソフトウェア無しで行うのであれば、
Windows XP の IMAPIv1 (Image Mastering API) を使うことができます。

ただ、これがまた結構面倒な代物で…。(^^;
COM ベースなので、VB5 から制御しようとするとタイプライブラリが
必要になりますし、若干の構造化ストレージの知識も必要だったりと。

とりあえずタイプライブラリなら、下記にあるようですけど。
http://www.vbaccelerator.com/home/VB/Code/Libraries/Writing_CDs/IMAPI/article.asp


けろりん  2007-07-02 05:50:14  No: 136818

すみません。確かに見ていただく情報が足りませんでした。
VB5で下記のようなコードを記述しました。
Private Declare Function SHFileOperation Lib "shell32" (lpFileOp As SHFILEOPSTRUCT) As Long
Private Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAnyOperationsAborted As Long
hNameMappings As Long
lpszProgressTitle As String
End Type
Private Const FO_COPY = &H2
Private Const FO_DELETE = &H3
Private Const FO_MOVE = &H1
Private Const FO_RENAME = &H4
Private Sub Command1_Click()
Dim Ret As Long
Dim sf As SHFILEOPSTRUCT
sf.hwnd = Me.hwnd
sf.wFunc = FO_COPY
sf.pFrom = "D:\data\*"
sf.pTo = "E:\back\"
Ret = SHFileOperation(sf)
If Ret <> 0 Then MsgBox "失敗しました。"
End Sub

これを実行すると、
「○○をコピーできません。このCDのファイルは読み取り専用ですが、この書き込み可能なCDに新しいファイルをコピーすると、ディスクにあるファイルを置き換えることができます」というエラーメッセージが表示され、正しく実行されませんでした。(○○はコピーされるファイル名です。)
実行エラーは表示されませんが、上記のようなエラーが表示されるため実行できていません。よろしくお願いします。


大吉末吉  2007-07-02 15:37:31  No: 136819

このエラーメッセージって・・・

「WindowsXPの標準のライティング機能で、CD-RWのファイルを削除しようとした時」に表示されるメッセージですよね。
#内部処理で、作為所でもやっているんですかね・・・

私や、他の方の返信で、「そんな単純なやり方じゃできない」って言っているのに・・・

とりあえず、「WindowsXPの標準のライティング機能」じゃ無くて、
多分ドライブに付属しているであろう、パケットライティングソフトをインストールしてみては?


大吉末吉  2007-07-02 15:38:53  No: 136820

タイプミスしてました。

> #内部処理で、作為所でもやっているんですかね・・・

は、

> #内部処理で、削除でもやっているんですかね・・・

です。


大吉末吉  2007-07-02 16:05:06  No: 136821

もし、
> パケットライティングソフトをインストールして
も、同じなら、
現在の方法(SHFileOperation 当による方法)はあきらめて、
魔界の仮面弁士さんの「IMAPIv1 (Image Mastering API) 」を試してみたほうが・・・


けろりん  2007-07-08 06:29:07  No: 136822

皆様、いろいろとありがとうございました。
始めに作成したコードを記載していなかったため、皆様の助言を無視したような印象を与えてしまいましたこと、お詫び申し上げます。
自分のパソコンでないために、追加ソフトの購入をせずにする方法を考えておりましたが簡単にはいかないようですね。


大吉末吉  2007-07-08 22:14:18  No: 136823

[解決]がついていますが、
どう『解決』したのでしょうか?

「追加ソフトの購入を考える」ことにした?
「IMAPIv1」を使うことにした??
「しょうがないので諦める」ことにした???

後、
> 追加ソフトの購入をせずにする方法
って事ですが・・・
「CD-RWを書き込めるデバイスが搭載されているPC」又は
「CD-RWを書き込める外付けドライブ」なら、
大抵(廉価なPCやドライブは除くと)パケットライティング用のソフトが付属していると思いますよ。

> 自分のパソコンでない
との事ですが、持ち主(?)に「付属ソフト」を確認してもらっては?


通ってみた  2007-07-09 09:18:14  No: 136824

思うに、CD-Rのライティングソフトがないからつくればいいやと思ったができなかった、ということなのではないかと

単にお金をかけずに済ませたかったのでは?

ドライブに付属していなかったと考えるとバルク品ですかね
というわけで、購入すれば「解決」ってことなんじゃないかと


初心者  2007-07-10 19:32:32  No: 136825

CD-RWというのはドライブですか?デスクですか?
以上の討論はCD-Rデスクに適用ですか?


ななし  2007-07-10 23:23:20  No: 136826

>>デスクですか?

机ですか?

>>以上の討論はCD-Rデスクに適用ですか?

ライティングソフトがあればどっちでも同じでしょうに。
結論が「ライティングソフト使え」だからねえ。


初心者  2007-07-11 22:36:31  No: 136827

>>デスクですか?

>机ですか?

御免  ディスク(disc)です


とおりすがり  2007-08-06 19:09:04  No: 136828

普通に考えて昔ならMOってところをCDRWにバックアップしたいと
クライアントから言われてるんじゃまいか?

自分で使うなら買ったほうが早いし、いろいろできるもんな


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




  


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