• ベストアンサー

コールバック関数

VB6.0でコールバック関数みたいなのを呼び出して 別のプロシージャを作成する事ってできないでしょうか? 並列処理をさせたいのですが、あるdllを呼び出しくる際 戻り値が返ってくるのを待ってしまいその部分でラグが発生してしまいます。 そのdllに関してのみ別のプロシージャに投げて戻り値が返ってくるのを待たず、 戻り値をパブリック変数に順次格納していきたいのですがVB6.0 or .netで可能でしょうか? VB6.0SP3 Windows2k

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

ActiveX EXEによる非同期処理の実装はこちらをどうぞ。 http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/0008/com/ あと、.netであれば、VB.NETでもスレッドが使用可能なので、同一プロセス内で非同期処理が可能です。

参考URL:
http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/0008/com/
sha-girl
質問者

お礼

大変参考になります。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

EnumWindowsのような関数にVB6からコールバック関数を渡すあれば可能です。 VB側はこんな感じ http://vbvbvb.com/jp/gtips/0751/gEnumWindows.html DLL側(VC6ですか?)の方法は分かりません。

sha-girl
質問者

お礼

ご回答ありがとうございます。 DLL側はVC6.0でコンパイルされたものかと思いますが ソースはありません。

すると、全ての回答が全文表示されます。
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

VBではマルチスレッドは基本的に不可能なので、ActiveX EXEを作成して別プロセスにし、イベントで結果を受け取るようにすることで実現可能と思われます。

sha-girl
質問者

お礼

ご回答ありがとうございます。 ActiveX EXEについて全くといっていいほど知らないのですが 変数の受け渡しをする際 普通のEXEファイルの場合は 共有メモリか、ウインドウメッセージを使うのが一般的かと思いますが ActiveX EXEの場合だと どのようにイベントを発生させ元のVBのプロセスに伝えるのでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A