• 締切済み

VBのメモリのアドレス取得

C++で作成したDLLをVBから変数を渡して 文字列が格納されているメモリアドレスを取得して、 別のDLLにメモリアドレスを渡したいのですが、 具体的な指定の仕方を教えてください。

みんなの回答

  • arata
  • ベストアンサー率49% (139/279)
回答No.4

Longで定義した変数でうけとって、その変数を渡せばOKです。

gaburi
質問者

補足

ありがとうございます。 VC++のDLL側では何で渡せばいいのでしょうか。 char *str;でアドレスを保持してます。 キャストして代入など行ってるのですが、うまくいきません。 よろしくお願いします。

  • zerosix
  • ベストアンサー率31% (47/149)
回答No.3

サンプルどうぞ

参考URL:
http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/0011/api/
gaburi
質問者

お礼

ありがとうございました。

  • haporun
  • ベストアンサー率40% (230/562)
回答No.2

日本語として成り立っていないので、勝手に解釈します。 VBの文字列のアドレスを取得することはできません。 VBが文字列をAPIに渡すとき、必ずBSTR→LPSTRの変換が行われ、実際に渡されるアドレスはその先頭になります。 そして、APIから制御が返ったときに、LPSTR→BSTRの変換をして、元に戻します。 そのために、APIに渡したアドレスを関数が終わった後にストックしておいても、無効なアドレスを参照することになります。 具体的に何が目的なのかが明確になれば、別の方法を提案できると思います。

gaburi
質問者

お礼

ありがとうございました。

  • zerosix
  • ベストアンサー率31% (47/149)
回答No.1

以下のページでも参照してみればどうですか? どのくらい試したのか書いているともっと具体的にアドバイスが もらえるかと思いますよ。

参考URL:
http://www.angel.ne.jp/~mike/vb_dll/
gaburi
質問者

お礼

ありがとうございました。

gaburi
質問者

補足

以前arataさんに教えていただいたものなんですけど、 Public Declare Sub MemCopy _ Lib "Kernel32" Alias "RtlMoveMemory" _ (hpvDest As Any, _ hpvSource As Any, _ ByVal cbCopy As Long) ↑これのhpvSource As Anyに入れるメモリアドレスは VC++で作成したDLLから取得して、指定したいのですが指定の仕方が わからないので教えてください。

関連するQ&A