VBから特定のファイルをCDに書き込みたいのです。
XPにはDirectCDが標準装備ということを聞いたのですが、そんなことできるんでしょうか?
あとDirectCDドライブが存在するかどうかのチェック方法
ハードディスクの容量を取得する方法(これは多分焼くときにエラーが返って来ると予想してます)
流れ的には
1・OSの判断
2・XPだったらDirectCDの有無確認(これもわかりませんが)
3・ファイル(フォルダごととかいけたらフォルダごと)を送る?(わかりません)
4・あとはライティングソフトの処理(途中でエラーがでたら拾う(謎))
ですかね?
ってかVBでできるんですかね。もう嫌。
DirectCDというんですか?あれ?
いちおうXPには簡単に書き込む仕組みはありますけど、
もしエクスプローラーからできる程度のことしかできないのだったら、
DirectCDって、あんまり使えませんよ。
エクスプローラから"書き込む"をクリックしただけで書き込めるのは便利は便利なものの、
勝手にCDを閉じてしまうし、オーディオCDを作るのか、データCDを作るのかわからないしですから。
XPだったらそれを使うようなことはせず、
ライティングソフトとしての機能に絞ったほうがよさそうです。
内部でそれを使っているのかもしれませんけど、
市販のライティングソフト(DragDropCD)も、XPでちゃんと動きますから。
VBはエラー処理の仕方もOn Error Goto... か、On Error Resume nextしかないし、
書き込むとき大失敗して、あとでがたがたになると大変なので、
レイアウトを作るエディタなどをVBで作るのはいいとして、
肝心の書き込む部分は別の言語で作ったほうがいいかもしれません。
ありがとうございます。
ただ現在VBのみでの開発に絞られています。(ほぼ命令)
ライティングソフトしてのソフトというのはちょっとわかりませんが、
「DirectCDに指定したフォルダごと送る」みたいな事はできませんでしょうか?(VB、APIなど)
どんなものを作っているかというと、指定したフォルダ(複数可)の配下(直)の画像を一つのフォルダにまとめてそれをCDへ保存しておく。というものです。
エラー処理に関してはやはり厳しそうですね。
最初にドライブの容量、イメージ作成ドライブの空き容量、イメージの総サイズと
比較して最初にチェックしてしまう事にしました。
あー、VBの限界に挑戦させられてる気がします。
あとあくまでXPに最初っからついてるDirectCD?に絞るそうです。
外付けのCDドライブだったらどうするんでしょうかね?もう嫌。
お仕事なんですか?
"初心者"という名前で書き込まれると、そういうことがわからないので、ずいぶん無駄ができると思いますけど…。
できれば相手をある程度特定できるような名前でお願いします。
職業の名前とか、ハンドルネームとか。
(仕事にかかわるような重要なことは、わたしが答えるべきではないでしょうけど(^^ゞ)
DirectCDですけど、よく知りません。CDに書き込む方法も知りません。
月並みな回答ですけど、検索サイトで探してみると、幾つか見つかりますよ。
("VB DirectCD"など)
研修で作っている程度ですので仕事に関わるまではいかないです。
技術はないほうです。
CDに書き込むのはDirectCDがウィザードでやってくれると思うのですが。
「送る」方法がよくわからないのです。
じゃあちょっと考え方を変えてみます。
Windowsの右クリックにある「送る」イベントをVBで実装するにはどうしたらいいでしょうか?
ちょっと自分でも調べてみます!
> Windowsの右クリックにある「送る」イベントをVBで実装するにはどうしたらいいでしょうか?
これなら答えられます(^^ゞ
送るメニューは、My Documentのひとつ上のフォルダ(多分全部このフォルダだと思いますけど)にある、SendToフォルダの中にあるショートカットが列挙されています。
(多分ショートカット以外でもいいでしょうけど、普通ショートカットしかないです)
WindowsXPHomeでは、なぜか隠しフォルダになってますね。
このフォルダの中に、バッチファイルや実行ファイルのショートカットを入れておけば、
その場で送るメニューに追加されます。
実際にどんなコマンドラインが送られてくるのかはわかりませんけど、
多分送られたファイルのパスでしょう。
exeファイルにドロップされたときと同じようになると思います。
なるほどー。
ありがとうございます。
ちょこっと実験してみます。
でもやっぱりフォルダごと丸々ってのは厳しいみたいですね。
実現できるかどうかわかりませんが、もう少しやってみます。
なんと驚きです。
CDドライブにCD-R入れてFileCopy関数使ったら、書き込んでるんです。
ただしXPでしかみれない・・・。なんでしょうか?この現象。
ソースは
Option Explicit
Dim Filename As String
================================================================
Private Sub Form_Load()
Filename = "C:\WINDOWS\デスクトップ\test.txt"
End Sub
Private Sub Command1_Click()
On Error GoTo cd
FileCopy Filename, "E:\test.txt"
cd:
If Err.Number = 71 Then: MsgBox "err", vbCritical, "Test"
End Sub
===============================================================
EドライブがCDです。これは解決なのでしょうか???
> EドライブがCDです。これは解決なのでしょうか???
うーん、わたしに聞かれても答えられないんですけど…(聞いてないって)。
XPではエクスプローラで、ファイルをCDのフォルダリストにドロップすると、
それだけで書き込み準備になるわけですから、それで大丈夫といわれても説明がつきますね。
うちでは間違えて使わないように、CD書き込み機能を使わないようにしていますけど。
同じ要領でフォルダ単位でもできるんじゃないでしょうか?
もちろん、XPの機能がオンになっている場合だけなんでしょうけど。
ただ、CDを閉じてしまうと、以後そのCDには書き込みできないはずです。
同じCDに別のファイルを書き込もうとしても、多分それだとできないと思います。
DirectCDでCDを閉じずに書き込む方法があれば、それを使うか選択できたほうがいいと思います。
さらにCDの名前(セクションの名前)も決めないといけないはずです。
そうでないと、書き込み時の時間をそのままつなげただけの名前になるはずです。
"とりあえず"書き込みをするぶんにはそれでいいでしょうが、
ちゃんと書き込むには、あればほかの方法を試したほうがいいと思います。
XP持ってないのでアレなんですが
CD-RWメディアを普通のリムーバブルディスクのように
扱えるソフトとかありますよね。
(普通にファイルをコピーして貼り付けたりできる)
DirectCDってそれとはまた違うんでしょうか?
上記のような奴だと対応ソフトが入ってないと中身が見れないので
(フォーマットが確か違って、それ専用のフォーマットだったと思います)
XPでしか見れない、っていう状況やFileCopyでできてしまうのも
納得できそうなんですけど・・・。
どうなんでしょう?>XPユーザーの皆さん
ちょっと気になったんですけど、
「Direct CD」っていうのは、AdaptecのライティングソフトEasy CD Creator
についてくるパケットライトソフトの商品名ではないかと。
XP持ってないのでよくわかりませんが。要はXPにパケットライトさせるってことでしょうか。
みなさんありがとうございます。
どうもこころさんの見解が正しいようです。
XPでDirectCDにファイル(フォルダ)を送る送ると、書き込みウィザードがあがるんですが、VBからあの書き込みウィザードを立ち上げることできないですかね?
理想はこんな処理
Function Write()
'ファイル(フォルダ)を指定
'指定されたファイルの書き込みウィザード起動
End Sub
このウィザードで書き込むと他のOSでも見ることができました。
で、書き込みはウィザードに任せたいのですが・・・。
> XPでDirectCDにファイル(フォルダ)を送る送ると
送る送るってのがよくわかりませんが
基本的にこういう処理ってコマンドライン引数で指定するのが
よくあるケースなんじゃないかと。
なので、Shellか何かでDirectCD、
もしくはウィザード用のアプリを起動させる時に
引数で指定のフォルダを渡してやれば動きそうな気はしますが・・・。
XPもDirectCDも持っていないのでまったく未確認です。
失礼。
送る送る → 送る です。
どうやら書き込みウィザードはエクスプローラーが持っているようです。(推論)
書き込みの準備をしてからエクスプローラーを起動させるといけそうです。
書き込みの準備はXPのステージング領域にフォルダ、ファイルをコピー(移動)するだけでいいようです。
もうすぐ出来そうです。
エクスプローラーのコマンドラインや引数?などを調査してみます。
ツイート | ![]() |