アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (8件)

以下を宣言に追加


'ダイアログ・ボックスが表示される場合、自動的に<全てはい>を自動設定する定数
Public Const FOF_NOCONFIRMATION = &H10&


'utdShellOpStructを設定しているところで、
  .fFlags = FOF_NOCONFIRMATION
を追加
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/12/10 16:45

さっきの補足です。



さっきのURLは私がアドバイスをして、補足に
>上書き保存の場合、表示されてしまうことと、ユーザー側で誤操作も考えられるので却下されてしまいました。

とありますが、フラグの設定で強制上書きモードが使用できます。
よってユーザー側の誤操作云々は考慮しないでもいいです。
ただし、CDを途中で抜かれてしまうと、確かにオペレーションのエラーメッセージがでます。しかし、、、これは、、、オペレーションのコピーコマンドではなく、VBのコピーコマンドを使用しても、同じこと・・・
(on error を使用したら出ないなどの、しょーもない反論は却下)

コピー状態の進捗を表すのは、やっぱりVBではAPIがベストと思います。

この回答への補足

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

補足日時:2002/12/10 13:00
    • good
    • 0
    • good
    • 0

#3の者です。

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

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

お礼日時:2002/12/09 14:37

ああ 残り時間ですね。


転送するサイズと転送したサイズで、それまでにかかった時間から
計算するのが一般的かと思います。
    • good
    • 0
この回答へのお礼

返信ありがとうございます。
やはり残り時間を割り出すのは難しいのですね。

時間を計測できるか処理を見直して見ます。

お礼日時:2002/12/09 14:34

素人の呟きと思って、読んでください。


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

975あたりのサンプル



参考URL:http://www.vbvbvb.com/jp/gtips/index0951.html
    • good
    • 0

秒単位でよければ、このやり方で


http://coroco.hp.infoseek.co.jp/memo/vb/keika1/

ミリ秒単位ならば、このやり方で
http://homepage1.nifty.com/Wan/vbtips/vbt002.htm
スタート時の時間を取得し、差で計ります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!