「これらのファイルをCDに書き込む」をVBで起動するには?

解決


がっぺい  2003-09-12 23:44:18  No: 108658

XPのCD書き込み機能(「これらのファイルをCDに書き込む」をクリックすることでCD書き込みウィザードを起動させる処理)をVBでプログラミングすることは可能でしょうか?

Form上に作成したボタンクリック

あるファイルをCDドライブにコピー
(ステータスは「CDに書き込む準備ができました」)

書き込みウィザードを起動

過去ログに同様の質問が載っていたのですが、解決策が掲示されていません。
よろしくお願いします!


魔界の仮面弁士  2003-09-13 00:08:20  No: 108659

先月、下記の掲示板で回答しました。参考になれば。

http://www.momo-lab.net/kibidango/cbbs.cgi?mode=all&namber=600&type=0&space=0&no=0


がっぺい  2003-09-13 00:33:33  No: 108660

参考ソースありがとうございます。
しかし、何故かVB5.0で開発しなければならないのです。
5.0では無理でしょうか?


魔界の仮面弁士  2003-09-13 01:22:03  No: 108661

> 5.0では無理でしょうか?
うん…? できませんでしたか?
先のサイトで使われている方法は、VB5でも使えると思うのですが。。。

できれば、どこでエラーになっているかを教えて下さい。
手元にVB5+WinXPな環境が無いので、試すことはできませんが、
コーディングに問題があるようであれば、何か指摘できるかも知れません。

もし、本当にVB5からは呼び出せない、という事であっても、
少なくとも、VBScriptから呼び出すことはできますので、
wscript.exe か cscript.exe か msscript.ocx 経由で、
VBScriptを実行してやれば、目的は果たせるでしょう。

あるいは、タイプラリブラリを自作できるだけの知識があるならば、
IDiscMasterインターフェイスについて調べて見てください。
IDiscMasterのRecordDiscメソッドを呼び出す事で、データCDや音楽CDの
書き込み処理を開始を開始することができると思います。(未確認)


がっぺい  2003-09-13 01:44:40  No: 108662

できましたっ(嬉)!!
「VB6 or VB.NET」と書いてあったので早とちりしてました。スミマセン。
ありがとうございました!

ちなみに・・・
指定したCD名をセットしてCD書き込む処理を自動的に行う処理も
可能なのでしょうか?


魔界の仮面弁士  2003-09-13 02:37:52  No: 108663

> 「VB6 or VB.NET」と書いてあったので早とちりしてました。スミマセン。
本当は、「VB6以下」と書ければ良かったのでしょうけれど、
あの時は、「以下」を表す英文がわからなかったのです。。。(恥)

> 指定したCD名をセットしてCD書き込む処理を自動的に行う処理も
> 可能なのでしょうか?
正規の手順(IMAPI)で行うなら、IJolietDiscMasterインターフェイスの
SetJolietPropertiesメソッドで、"VolumeName"プロパティを指定してやる事になります。

しかしIMAPIではなく、先のサイトにある方法の場合は、CD名の指定は無理です。
あの方法では、ウィザードを起動する事までしかできないのです。
# 無理にやるなら、APIを使って、ダイアログが起動された時に、テキストやボタン操作を
# エミュレートする事になるでしょうが、それだと面倒でしょうね。。。

もし、書き込みまで行いたいなら、パケットライト系のソフトウェアを購入すると楽ですよ。
CD-Rを、MOやFDなどと同じ操作で処理できるようになりますから。


がっぺい  2003-09-13 03:24:40  No: 108664

> 無理にやるなら、APIを使って、ダイアログが起動された時に、
> テキストやボタン操作を
> エミュレートする事になるでしょうが、それだと面倒でしょうね。。。

かなり面倒なのですか?
ソフトウェアの購入が可能かどうか検討してみます。
「MOに保存する」という案も一時出ていたので使用出来れば将来的にはいいかもしれません。
ありがとうございました!!


がっぺい  2003-09-17 19:54:13  No: 108665

参考ソースでウィザードが立ち上げるようになったのですが、今度はファイルの名前をvb上で指定したいのです。

デフォルトでは、日付が入るのですが。


魔界の仮面弁士  2003-09-17 22:02:22  No: 108666

「ファイルの名前」というのは、下記画面の『CD名』の事でしょうか。
もしそうなら、↑↑↑2003/09/12(金) 17:37:52 の回答を参照してください。
http://www.ocv.ne.jp/~oratorio/junk/image/burning_wizard.png


がっぺい  2003-09-26 05:01:37  No: 108667

返信がおくれてすみません。>仮面弁士さん
結局、CD名は指定しないことにしました。いろいろ有難うございました!

教えていただいたソース
Set oFolder = oShell.NameSpace("フォルダ名")
は、フォルダ毎書き込む仕様ですが、フォルダではなくファイルを指定することは可能なのでしょうか?
単純に"フォルダ名"をファイル名にしたらエラーとなってしまいました。

あと、もう1つ。
ウィザードを立ち上げて、ウィザードの「次へ」ボタンをSendKeyを使用してクリックしようと試みているのですが、その間、マウスやキーボードを使用できないようにする方法をご存知でしょうか?


魔界の仮面弁士  2003-09-26 05:57:15  No: 108668

> フォルダではなくファイルを指定することは可能なのでしょうか?

FolderItemsコレクションオブジェクトから、
Folderオブジェクトを得る事ができます。

先のコードの場合でいえば、oFolderItemsを列挙するか、もしくは、
Itemメソッドでファイル名を指定して呼び出すようにすれば良いかと。


魔界の仮面弁士  2003-09-26 06:00:11  No: 108669

訂正 m(_ _)m

> FolderItemsコレクションオブジェクトから、
> Folderオブジェクトを得る事ができます。

  FolderItemsコレクションオブジェクトから、
  FolderItemオブジェクトを得る事ができます。

の間違いです。失礼しました。

# ちなみにFolderItemは、フォルダ内にあるオブジェクト
# ——つまり、サブフォルダやファイル——を表すオブジェクトです。


がっぺい  2003-09-26 20:28:58  No: 108670

ありがとうございます。
書き込むことができました。

IMAPIを使用したのは今回が初めてでした。
う〜ん、難しいです。検索してもサイトは英語だし…。
日本語のマニュアルもあまりないのでしょうか?


魔界の仮面弁士  2003-09-26 20:42:11  No: 108671

> IMAPIを使用したのは今回が初めてでした。

おぉっ、IMAPI(イメージ マスタリング API)を使用できましたか。
よろしければ、そのソースを見せていただけないでしょうか? m(_ _)m

実の所、私はIMAPIを使いこなせていないので、代替策として、先述の
Shell.Applicationを利用した方法でお茶を濁していたりするのです。(^_^;)

# 一応、C++のソースは見つけたのですが、タイプライブラリの自作が
# 完了していないので、VB化できていないのです。。。


がっぺい  2003-09-26 22:14:58  No: 108672

…書き方がよくありませんでした。

IMAPIを使用した=IMAPIに触れた

です。
教えていただいたShell.Applicationでコーディングしました。

ぬか喜びさせてしまって…すみませんっ。。。


さかけん  2003-12-26 06:58:44  No: 108673

すいません、質問させてください。

ファイルの書き込み準備が完全に終わってから
書き込みウィザードを起動させることはできるのでしょうか。
また、すでに同じファイルがCD内にあった場合に上書きの確認をする
ダイアログが出ますが、上書きが完全に終わってから書き込みウィザードを
起動させることはできるのでしょうか?
もしくは確認ダイアログを出さずに強制的にファイルを上書きしてから
書き込みウィザードを表示させることはできますでしょうか。

どなたか良い方法を教えてください、よろしくお願いします。


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

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






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