XPのCD書き込み機能(「これらのファイルをCDに書き込む」をクリックすることでCD書き込みウィザードを起動させる処理)をVBでプログラミングすることは可能でしょうか?
Form上に作成したボタンクリック
↓
あるファイルをCDドライブにコピー
(ステータスは「CDに書き込む準備ができました」)
↓
書き込みウィザードを起動
過去ログに同様の質問が載っていたのですが、解決策が掲示されていません。
よろしくお願いします!
先月、下記の掲示板で回答しました。参考になれば。
http://www.momo-lab.net/kibidango/cbbs.cgi?mode=all&namber=600&type=0&space=0&no=0
参考ソースありがとうございます。
しかし、何故かVB5.0で開発しなければならないのです。
5.0では無理でしょうか?
> 5.0では無理でしょうか?
うん…? できませんでしたか?
先のサイトで使われている方法は、VB5でも使えると思うのですが。。。
できれば、どこでエラーになっているかを教えて下さい。
手元にVB5+WinXPな環境が無いので、試すことはできませんが、
コーディングに問題があるようであれば、何か指摘できるかも知れません。
もし、本当にVB5からは呼び出せない、という事であっても、
少なくとも、VBScriptから呼び出すことはできますので、
wscript.exe か cscript.exe か msscript.ocx 経由で、
VBScriptを実行してやれば、目的は果たせるでしょう。
あるいは、タイプラリブラリを自作できるだけの知識があるならば、
IDiscMasterインターフェイスについて調べて見てください。
IDiscMasterのRecordDiscメソッドを呼び出す事で、データCDや音楽CDの
書き込み処理を開始を開始することができると思います。(未確認)
できましたっ(嬉)!!
「VB6 or VB.NET」と書いてあったので早とちりしてました。スミマセン。
ありがとうございました!
ちなみに・・・
指定したCD名をセットしてCD書き込む処理を自動的に行う処理も
可能なのでしょうか?
> 「VB6 or VB.NET」と書いてあったので早とちりしてました。スミマセン。
本当は、「VB6以下」と書ければ良かったのでしょうけれど、
あの時は、「以下」を表す英文がわからなかったのです。。。(恥)
> 指定したCD名をセットしてCD書き込む処理を自動的に行う処理も
> 可能なのでしょうか?
正規の手順(IMAPI)で行うなら、IJolietDiscMasterインターフェイスの
SetJolietPropertiesメソッドで、"VolumeName"プロパティを指定してやる事になります。
しかしIMAPIではなく、先のサイトにある方法の場合は、CD名の指定は無理です。
あの方法では、ウィザードを起動する事までしかできないのです。
# 無理にやるなら、APIを使って、ダイアログが起動された時に、テキストやボタン操作を
# エミュレートする事になるでしょうが、それだと面倒でしょうね。。。
もし、書き込みまで行いたいなら、パケットライト系のソフトウェアを購入すると楽ですよ。
CD-Rを、MOやFDなどと同じ操作で処理できるようになりますから。
> 無理にやるなら、APIを使って、ダイアログが起動された時に、
> テキストやボタン操作を
> エミュレートする事になるでしょうが、それだと面倒でしょうね。。。
かなり面倒なのですか?
ソフトウェアの購入が可能かどうか検討してみます。
「MOに保存する」という案も一時出ていたので使用出来れば将来的にはいいかもしれません。
ありがとうございました!!
参考ソースでウィザードが立ち上げるようになったのですが、今度はファイルの名前をvb上で指定したいのです。
デフォルトでは、日付が入るのですが。
「ファイルの名前」というのは、下記画面の『CD名』の事でしょうか。
もしそうなら、↑↑↑2003/09/12(金) 17:37:52 の回答を参照してください。
http://www.ocv.ne.jp/~oratorio/junk/image/burning_wizard.png
返信がおくれてすみません。>仮面弁士さん
結局、CD名は指定しないことにしました。いろいろ有難うございました!
教えていただいたソース
Set oFolder = oShell.NameSpace("フォルダ名")
は、フォルダ毎書き込む仕様ですが、フォルダではなくファイルを指定することは可能なのでしょうか?
単純に"フォルダ名"をファイル名にしたらエラーとなってしまいました。
あと、もう1つ。
ウィザードを立ち上げて、ウィザードの「次へ」ボタンをSendKeyを使用してクリックしようと試みているのですが、その間、マウスやキーボードを使用できないようにする方法をご存知でしょうか?
> フォルダではなくファイルを指定することは可能なのでしょうか?
FolderItemsコレクションオブジェクトから、
Folderオブジェクトを得る事ができます。
先のコードの場合でいえば、oFolderItemsを列挙するか、もしくは、
Itemメソッドでファイル名を指定して呼び出すようにすれば良いかと。
訂正 m(_ _)m
> FolderItemsコレクションオブジェクトから、
> Folderオブジェクトを得る事ができます。
FolderItemsコレクションオブジェクトから、
FolderItemオブジェクトを得る事ができます。
の間違いです。失礼しました。
# ちなみにFolderItemは、フォルダ内にあるオブジェクト
# ——つまり、サブフォルダやファイル——を表すオブジェクトです。
ありがとうございます。
書き込むことができました。
IMAPIを使用したのは今回が初めてでした。
う〜ん、難しいです。検索してもサイトは英語だし…。
日本語のマニュアルもあまりないのでしょうか?
> IMAPIを使用したのは今回が初めてでした。
おぉっ、IMAPI(イメージ マスタリング API)を使用できましたか。
よろしければ、そのソースを見せていただけないでしょうか? m(_ _)m
実の所、私はIMAPIを使いこなせていないので、代替策として、先述の
Shell.Applicationを利用した方法でお茶を濁していたりするのです。(^_^;)
# 一応、C++のソースは見つけたのですが、タイプライブラリの自作が
# 完了していないので、VB化できていないのです。。。
…書き方がよくありませんでした。
IMAPIを使用した=IMAPIに触れた
です。
教えていただいたShell.Applicationでコーディングしました。
ぬか喜びさせてしまって…すみませんっ。。。
すいません、質問させてください。
ファイルの書き込み準備が完全に終わってから
書き込みウィザードを起動させることはできるのでしょうか。
また、すでに同じファイルがCD内にあった場合に上書きの確認をする
ダイアログが出ますが、上書きが完全に終わってから書き込みウィザードを
起動させることはできるのでしょうか?
もしくは確認ダイアログを出さずに強制的にファイルを上書きしてから
書き込みウィザードを表示させることはできますでしょうか。
どなたか良い方法を教えてください、よろしくお願いします。
ツイート | ![]() |