OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

大量データコピー中に他の処理をさせたい

  • すぐに回答を!
  • 質問No.227216
  • 閲覧数141
  • ありがとう数3
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 83% (5/6)

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

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

よろしくお願いします。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.4
レベル13

ベストアンサー率 59% (729/1235)

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

お礼率 83% (5/6)

参考URLをみるのを忘れてました。ありがとうございます。
投稿日時 - 2002-03-04 19:06:49
お礼コメント
lala123

お礼率 83% (5/6)

さっそくSHFileOperationなるものをMSDNでみてみました。
なんと英語!自分の力で使いこなせるかな?
ありがとうございます。
投稿日時 - 2002-03-04 19:01:06
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1
レベル12

ベストアンサー率 65% (276/422)

CopyFolderはコピーを終了するまで、次の処理を行うのは不可能です。 CreateThreadで本来は行うべきなのでしょうが、VBはシングルスレッド言語なので、たぶん落ちまくるでしょう。 別プロセスにしてみてはいかがでしょう? 簡単にいうと別のEXEです。コピーをするだけの単機能EXEを用意して Call Shell("hogehoge.exe c:\Program Files ...続きを読む
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\"
部分を認識させて、コピーを行うだけの処理をさせたらよいのでは?
お礼コメント
lala123

お礼率 83% (5/6)

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

ベストアンサー率 65% (276/422)

「現在コピー中です」と表示させているのは、どちらのEXEですか? メインのEXEを「A.EXE」 コピーを実際に行っているEXEを「B.EXE」 としたとき、どちらのEXEでしょうか? もしA.EXEなら、フォームのプロパティ[AutoRedraw]はTrueになってますか? もし、B.EXEならプロセス監視が必要かも? どちらも未検証です。
「現在コピー中です」と表示させているのは、どちらのEXEですか?

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


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

ベストアンサー率 65% (276/422)

さらに、こちらから質問です。 >大量データコピー中に他の処理をさせたい 他の処理とは主にどのようなことですか? ただ、進捗状況を表示したいだけですか? 僕の経験上、大量データ処理最中に、別プロセスを極力働かさないように設計することが多いのですが・・・ 同時に行いたい処理が何なのかが知りたいです。 ...続きを読む
さらに、こちらから質問です。

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

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

お礼率 83% (5/6)

度々ありがとうございます。
やりたいのはA.EXEでメニュー画面を表示。
メニュー画面には・データコピー・データグラフ表示等のボタンがある。
データコピークリック時にはB.EXEでデータをコピーする。
コピー中でもA.EXEのメニューからデータグラフ表示を行う。といったかんじです。
AutoRedraw=falseだったのでtrueにしてもだめでした。
投稿日時 - 2002-03-04 18:51:27
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ