• 締切済み

プログレスバーについて

VBで開発をしているのですが、一つの処理(関数)で時間のかかる処理があって、その経過をプログレスバーで表示させようと思ってるのですが、関数内の処理の進み具合を表示することってできるのでしょうか? ちなみに、関数はDLLです。 何かよい方法がありましたら、教えていただきたいと思っております。よろしくお願いします。

みんなの回答

回答No.2

DLL側が何でできているかがわかりませんが、 VBのActiveXDLLでできているのであれば、DLL側からイベントを発行させればできるじゃないかな?(WithEvents) CのDLLでできているのであれば、Cの中で別スレッドで実行して、VB側が進捗要求を求めてあげればできると思いますよ。 VB側でクリエイトスレッドで別スレッドでやる方法もあると思うけど、安定しないと思います。 手法だけで実現するなら、EXEを分ける方法もあると思います。   A.Exe(メイン)   B.Exe(サブ)   C.DLL(関数) を用意して   A.ExeがB.Exeをキック   B.ExeがC.DLLを実行   C.DLLは進捗をログ出力(メモリに吐いても可)   A.EXEはC.DLLのログを読み取って、進捗をプログレスバーに表示

hiko758
質問者

お礼

ありがとうございます。 DLLはVBのActiveXDLLなのですが、できれば今になってソースを触りたくないので、ログでチャレンジしてみます。 とても参考になりました。ありがとうございました。

  • takasebou
  • ベストアンサー率42% (61/144)
回答No.1

DLLの一つの関数の処理のすすみ具合を実際に判断する事は不可能でしょう。 プログレスバーで表示するとすれば、概算でだいたい処理に掛かる時間を想定しておいて、一定時間おきに値を更新していくしかないと思います。 その後、処理が終わればプログレスバーの値をMAXにすればいいと思います。

hiko758
質問者

お礼

早速お答えいただきありがとうございました。

関連するQ&A