- 締切済み
VBのメモリのアドレス取得
C++で作成したDLLをVBから変数を渡して 文字列が格納されているメモリアドレスを取得して、 別のDLLにメモリアドレスを渡したいのですが、 具体的な指定の仕方を教えてください。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- arata
- ベストアンサー率49% (139/279)
回答No.4
Longで定義した変数でうけとって、その変数を渡せばOKです。
- zerosix
- ベストアンサー率31% (47/149)
回答No.3
- haporun
- ベストアンサー率40% (230/562)
回答No.2
日本語として成り立っていないので、勝手に解釈します。 VBの文字列のアドレスを取得することはできません。 VBが文字列をAPIに渡すとき、必ずBSTR→LPSTRの変換が行われ、実際に渡されるアドレスはその先頭になります。 そして、APIから制御が返ったときに、LPSTR→BSTRの変換をして、元に戻します。 そのために、APIに渡したアドレスを関数が終わった後にストックしておいても、無効なアドレスを参照することになります。 具体的に何が目的なのかが明確になれば、別の方法を提案できると思います。
質問者
お礼
ありがとうございました。
- zerosix
- ベストアンサー率31% (47/149)
回答No.1
以下のページでも参照してみればどうですか? どのくらい試したのか書いているともっと具体的にアドバイスが もらえるかと思いますよ。
質問者
お礼
ありがとうございました。
質問者
補足
以前arataさんに教えていただいたものなんですけど、 Public Declare Sub MemCopy _ Lib "Kernel32" Alias "RtlMoveMemory" _ (hpvDest As Any, _ hpvSource As Any, _ ByVal cbCopy As Long) ↑これのhpvSource As Anyに入れるメモリアドレスは VC++で作成したDLLから取得して、指定したいのですが指定の仕方が わからないので教えてください。
補足
ありがとうございます。 VC++のDLL側では何で渡せばいいのでしょうか。 char *str;でアドレスを保持してます。 キャストして代入など行ってるのですが、うまくいきません。 よろしくお願いします。