• ベストアンサー

VBでコピー時間を表示したい。

VB6.0の標準EXEを使って、CD-ROMからローカルディスクに コピーするプログラムを作っています。 エクスプローラなどでコピーする際、残り時間が表示されると思いますが、VBでも残り時間を表示(計算)する方法ってありますか? エクスプローラでも残り時間表示が完全に正しいとは 思っていないのですが、コピーの目安にはなっていると 思います。 やったことがあるとか、こんなコマンドを知っているとか ありましたら、教えてください。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.8

以下を宣言に追加 'ダイアログ・ボックスが表示される場合、自動的に<全てはい>を自動設定する定数 Public Const FOF_NOCONFIRMATION = &H10& 'utdShellOpStructを設定しているところで、   .fFlags = FOF_NOCONFIRMATION を追加

y-kawamura
質問者

お礼

ありがとうございました。 これでかなりの要求をクリアできました。

その他の回答 (7)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.7

さっきの補足です。 さっきのURLは私がアドバイスをして、補足に >上書き保存の場合、表示されてしまうことと、ユーザー側で誤操作も考えられるので却下されてしまいました。 とありますが、フラグの設定で強制上書きモードが使用できます。 よってユーザー側の誤操作云々は考慮しないでもいいです。 ただし、CDを途中で抜かれてしまうと、確かにオペレーションのエラーメッセージがでます。しかし、、、これは、、、オペレーションのコピーコマンドではなく、VBのコピーコマンドを使用しても、同じこと・・・ (on error を使用したら出ないなどの、しょーもない反論は却下) コピー状態の進捗を表すのは、やっぱりVBではAPIがベストと思います。

y-kawamura
質問者

補足

ありがとうございます。 SHFileOperation関数は確かに使えますね。 一つ質問なのですが、SHFileOperation関数での 上書きの指定ってどのようにすればよろしいのでしょうか?

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.6

さらに履歴

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=377627
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

#3の者です。#4のご解答を拝見して、#3ではレコード数をみることしか例に挙げていませんでしたが、バイナリなファイルでは、プログラムのはじめに、ファイルサイズとして全バイト数を捉える指令があれば、途中バイト数を捉えれば、処理割合がつかめますね。 しかし入出力オリエンティドな処理に限りでしょうが。 一度にメモリに全部読みこみ、あと演算に時間がかかるようなものはだめでしょうが。

y-kawamura
質問者

お礼

ファイル(レコード)数よりかは、単純に”残り何分でコピーが終了します”のようなかんじで処理経過を表示したかったのですが、難しそうですね。 なんとか他の方法で検討してみます。

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.4

ああ 残り時間ですね。 転送するサイズと転送したサイズで、それまでにかかった時間から 計算するのが一般的かと思います。

y-kawamura
質問者

お礼

返信ありがとうございます。 やはり残り時間を割り出すのは難しいのですね。 時間を計測できるか処理を見直して見ます。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

素人の呟きと思って、読んでください。 ●1番質問の件を目指しているのは、(1)プログレスバーコントロールでしょう(下記URL)。そのほか(2)テキストボックス内に、文字(四角の記号、や%数字)表示(3)ラベルコントロールのWidthを色を変えたものを広げて行くなど。 別に場所としてはステータスバーに表示などあるようです。 ●進行状況(全体に対する現状)を捉えるのは、どうするのか私は疑問でしたが、結局レコードを読む式のもので無いと掴めないこと思うようになりました。 (1)MoveLastやRecordCount(ファイル全レコード数)的な指令が使えて、全体数を最初に捉えられること。 (2)レコードを読むごとに+1などして、最初からのレコード番号(何番目)が捉えられる指令が組めること。 が必要であること。毎レコードを読む速さは同じと仮定 しているか、無視できるほど小さいことが底にあるわけです。本当は僅かに違うはず。 ●例えば、ソートなど読みこみフェーズ、ソートフェーズ、出力フェーズなどのあるアルゴリズムを使った時は 各フェーズは、文章で「何々を実行中」とでも出してその中での進捗状況を他のフェーズと分けて、出さざるを 得ないでしょう。通しで考え様としても、入出力とメモリ内処理では、雲泥の差があって、上手く統一化できないと思います。 ●本件質問はファイル「コピー」などであり、全レコード数を最初に求め、読みこむ毎にレコード数をカウントし、決めた定数番目(定数割合番目)にくれば、目盛の%をアップしていけば良い。結局実経過時間の長さを考えることからは逃げていますよね。 http://www.asahi-net.or.jp/~ZN3Y-NGI/YNxv9g1810.html ●実時間で「後何分です」などと表示したいとなれば 実際の終了時間を別に測定して、プログラムに組みこむのだろうか。しかしマシンが変るとおかしなことになりそう。この理由からか、この型の表示はあまり見かけませんね。この件の説明に関心があるんですが、見たことがありません。読書範囲が狭いから?世の中初等的な本ばかり? 時間経過はTimerをセットして知れますが。やる前からAPIを使おうがVBだろうが、必要全体時間は判り様がない気がする。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

975あたりのサンプル

参考URL:
http://www.vbvbvb.com/jp/gtips/index0951.html
  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

秒単位でよければ、このやり方で http://coroco.hp.infoseek.co.jp/memo/vb/keika1/ ミリ秒単位ならば、このやり方で http://homepage1.nifty.com/Wan/vbtips/vbt002.htm スタート時の時間を取得し、差で計ります。

関連するQ&A

  • VB6での時間計算について

    VB6での時間計算について VB6で時間計算のプログラムを作成しています。 しかし、行き詰ってしまいました。 どなたかご教授願います。 3時50分から10時20分は何時間分経っているかという計算式で悩んでいます。 時間を打ち込み用にテキストボックスを4つ作ってまして、一つ目に「3」、二つ目に「50」、三つ目に「10」、四つ目に「20」という風に打ち込みコマンドボタンを押すと6.5時間と算出されテキストボックスかラベルに表示されるといったことをするにはどうしたらいいのでしょうか?

  • パソコンでファイルのコピーをする時の残り時間表示

    Windows XPのパソコンを使っています。 ファイルをバックアップのため別ハードディスクにコピーする時なんですが、 コピー中であることを示す小窓が出て、現在コピー中のファイル名と残り時間が表示されますよね。 この残り時間がころころと変化します。 コピーのし始めは大きく数値が変わります。これは何となく理由がわかるのですが、 半分ほどコピーが進んだ状態でも、見ていると、数値が大きく変化してしまいます。いったいあとどれくらいかかるのか目安が付きません! 教えてほしいのは、なぜこうもめまぐるしく数値が変わるのか? 他の作業をしなくても、やはり数値が変化します。 先ほど見たときには、10秒ほどの間に、残り21分から82分に大きく変化しました。 画像はその時の状況をキャプチャしたものです。 推測するに、計算は、 『残りのバイト数/現在の転送レート』だと思うのですが、4倍くらいの開きがあります。 どうせ表示するなら平均値を表示すればだいたい正確な値に近いと思うのですが・・・。

  • htmlファイルをVBに読み込みたい

    友人が困っているので代理で質問させていただきます。 ------------------------------------------------ Web上で公開されているサイトをプログラム上で書き換えて表示させたいと考えています。 手順としては 現在ブラウザ上で表示しているWebページのHTMLファイルを読み込み ↓ ローカルディスク上に保存 ↓ 保存したHTMLファイルを書き換え ↓ 更新したHTMLファイルをブラウザで表示 という風に考えています。 使用するプログラム言語はVB.NETで考えています。 VB.NETでHTMLファイルを読み込んでローカルディスク上に保存する為にはどのようにすればいいのでしょうか?

  • フォルダで共有しているか判断する方法

    VisualBasicで標準EXEで、CD-ROMからファイルを コピーするプログラムを作成しています。 コピー先がフォルダで共有している場合を判断したい のですが、なにかコマンドとかでありますでしょうか? ドライブならば、GetDriveTypeコマンドでできそうなの ですが、フォルダになると・・・ 探し方が悪いのかもしれませんが、教えてください。 宜しくお願いします。

  • VBの参照設定について

    はじめまして、Doryaです。 早速ですが、VBでACTIVEX.DLLを作成してローカルのドライブにおいてEXEプログラムより参照設定しています。 このEXEをコンパイルして、他のPCへ移しましたがプログラムが、起動しませんでした。他のPCも、コンパイルしたPCと同じようにACTIVEX.DLLを、デシトリビューションウイザードで作り登録していました。 どうも、参照設定がうまくできてないような気がします。ためしに、プログラム(EXE)をデシトリビューションウイザードを使ってインストールしましたら、問題なくうごきました。これって、DLLとEXEを別々にコピーして、配布することはできないのでしょうか?

  • ディスクコピーについて

    ある計算ソフトのディスク(CD-ROM)を他の何も入ってないディスク(CD-ROM)に入れたいのですが何か良いコピーソフトはありますか? 教えてください!お願いします!!

  • vb2005で作成したプログラムはどこに?

    vb2005で作成したプログラムはどこに? vb2005で作ったプログラムをビルド後に、 他のPCにsetup(インストール)したとします。 その場合、実行ファイル(.exe?)はどこにあるのでしょうか  また、コマンドプロンプトで実行ファイルを起動することは可能でしょうか

  • USBの外付けMOドライブのコピーの残り時間

    WIN2000でUSBに繋いだMOの大容量記憶装置デバイスで、 400MBくらいのデータをMOから内蔵ディスクへはコピーの残り時間がなくなるとコピーの処理が終了しMOドライブの点滅はなくなります ところが、内蔵ディスクからMOへのコピーは残り時間がなくなり コピーの処理が終わってMO上にファイルは見えますが、 MOドライブの点滅が15分くらい続いたのち消えます。 残り時間が間違ってるのはどうしてですか? ドライバーは標準の大容量装置デバイスです

  • VBのEXEから他のVBのEXEのファンクションを実行したい

    メインルーチンからサブルーチンを呼ぶような イメージで VBののEXE‥(1)(メインプログラム)から 他のVBののEXE‥(2)のファンクションを呼び出して値を返したいのですが どうすればよいでしょうか? (1)はバッチファイルのような感じで コマンドライン引数が○○のとき(2)の××と△△を実行するという内容のもの (2)はマスタを更新するプログラムがマスタごとに いくつかのファンクションにわかれたものです。 説明不足で伝わりにくいかとおもいますが、 よろしくおねがいいたします。

  • VBでActiveXDLL作成に役立つ参考書

    VB6.0でプログラムする仕事をしています。ですが普段は標準のEXEを作ることばかりでActiveXDLLを作るのも使うのも初めてです。 標準のEXEを作るプロジェクトをActiveXDLLに作り変える方法、基本的なActiveXDLLの作り方、ActiveXDLLをEXEなどから呼び出す方法等々、勉強したいと思っています。 良い書籍、参考になるサイトなど教えていただければと思っています。 よろしくお願いします。

専門家に質問してみよう