VBでフォルダーをコピーするプログラムをつくりましたが、フォルダのコピー中は他のプログラムでの表示の更新処理などができません。うまく他のプログラムにも制御がいくような良い方法はないでしょうか?

コピーはFileSystemObject.CopyFolder で実行しています。

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

SHFileOperationはどうでしょう?


エクスプローラのコピペと同じように、"コピーしています"の画面が表示されます。
呼出側が真っ白になることはないようです。

参考URL:http://www.vbvbvb.com/jp/gtips/0951/gSHFileOpera …

この回答への補足

参考URLをみるのを忘れてました。ありがとうございます。

補足日時:2002/03/04 19:06
    • good
    • 0
この回答へのお礼

さっそくSHFileOperationなるものをMSDNでみてみました。
なんと英語!自分の力で使いこなせるかな?
ありがとうございます。

お礼日時:2002/03/04 19:01

さらに、こちらから質問です。



>大量データコピー中に他の処理をさせたい
他の処理とは主にどのようなことですか?
ただ、進捗状況を表示したいだけですか?

僕の経験上、大量データ処理最中に、別プロセスを極力働かさないように設計することが多いのですが・・・
同時に行いたい処理が何なのかが知りたいです。
    • good
    • 0
この回答へのお礼

度々ありがとうございます。
やりたいのはA.EXEでメニュー画面を表示。
メニュー画面には・データコピー・データグラフ表示等のボタンがある。
データコピークリック時にはB.EXEでデータをコピーする。
コピー中でもA.EXEのメニューからデータグラフ表示を行う。といったかんじです。
AutoRedraw=falseだったのでtrueにしてもだめでした。

お礼日時:2002/03/04 18:51

「現在コピー中です」と表示させているのは、どちらのEXEですか?



メインのEXEを「A.EXE」
コピーを実際に行っているEXEを「B.EXE」
としたとき、どちらのEXEでしょうか?


もしA.EXEなら、フォームのプロパティ[AutoRedraw]はTrueになってますか?
もし、B.EXEならプロセス監視が必要かも?
どちらも未検証です。
    • good
    • 0

CopyFolderはコピーを終了するまで、次の処理を行うのは不可能です。


CreateThreadで本来は行うべきなのでしょうが、VBはシングルスレッド言語なので、たぶん落ちまくるでしょう。

別プロセスにしてみてはいかがでしょう?
簡単にいうと別のEXEです。コピーをするだけの単機能EXEを用意して
Call Shell("hogehoge.exe c:\Program Files\hoge\/c:\hoge\")
などとして[hogehoge.exe]呼び出し、その[hogehoge.exe]でCommand関数で
"c:\Program Files\hoge\/c:\hoge\"
部分を認識させて、コピーを行うだけの処理をさせたらよいのでは?
    • good
    • 0
この回答へのお礼

さっそくのご教示ありがとうございました。さっそく別EXEでやってみましたら、なんとか少し(さくさくは動きません)はうごいているのですが「現在コピー中です」と表示しているウィンドウの上にエクスプローラなどを表示し、最小化すると下にあった「現在コピー中です」の文字や色が消えて真っ白になってしまいます。とほほ・・
これはもうあきらめでしょうか?度々恐縮ですが、もし良い方法をご存知でしたらお教えください。

お礼日時:2002/03/04 15:12

このQ&Aに関連する人気のQ&A

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


人気Q&Aランキング