締切済み VBのメモリのアドレス取得 2001/09/13 10:39 C++で作成したDLLをVBから変数を渡して 文字列が格納されているメモリアドレスを取得して、 別のDLLにメモリアドレスを渡したいのですが、 具体的な指定の仕方を教えてください。 みんなの回答 (4) 専門家の回答 みんなの回答 arata ベストアンサー率49% (139/279) 2001/09/15 07:31 回答No.4 Longで定義した変数でうけとって、その変数を渡せばOKです。 質問者 補足 2001/09/18 11:11 ありがとうございます。 VC++のDLL側では何で渡せばいいのでしょうか。 char *str;でアドレスを保持してます。 キャストして代入など行ってるのですが、うまくいきません。 よろしくお願いします。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 zerosix ベストアンサー率31% (47/149) 2001/09/13 13:08 回答No.3 サンプルどうぞ 参考URL: http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/0011/api/ 質問者 お礼 2001/09/18 11:20 ありがとうございました。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 haporun ベストアンサー率40% (230/562) 2001/09/13 12:45 回答No.2 日本語として成り立っていないので、勝手に解釈します。 VBの文字列のアドレスを取得することはできません。 VBが文字列をAPIに渡すとき、必ずBSTR→LPSTRの変換が行われ、実際に渡されるアドレスはその先頭になります。 そして、APIから制御が返ったときに、LPSTR→BSTRの変換をして、元に戻します。 そのために、APIに渡したアドレスを関数が終わった後にストックしておいても、無効なアドレスを参照することになります。 具体的に何が目的なのかが明確になれば、別の方法を提案できると思います。 質問者 お礼 2001/09/18 11:21 ありがとうございました。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 zerosix ベストアンサー率31% (47/149) 2001/09/13 11:06 回答No.1 以下のページでも参照してみればどうですか? どのくらい試したのか書いているともっと具体的にアドバイスが もらえるかと思いますよ。 参考URL: http://www.angel.ne.jp/~mike/vb_dll/ 質問者 お礼 2001/09/18 11:22 ありがとうございました。 質問者 補足 2001/09/13 11:34 以前arataさんに教えていただいたものなんですけど、 Public Declare Sub MemCopy _ Lib "Kernel32" Alias "RtlMoveMemory" _ (hpvDest As Any, _ hpvSource As Any, _ ByVal cbCopy As Long) ↑これのhpvSource As Anyに入れるメモリアドレスは VC++で作成したDLLから取得して、指定したいのですが指定の仕方が わからないので教えてください。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ [技術者向] コンピュータープログラミング・開発Visual Basic 関連するQ&A DLLで格納された値をVBに渡す方法 <VC++で作成したDLLをVBで呼ぶ処理> VBから変数をDLLに渡して値を格納してVBで受け取りたいのですが、 文字列が格納されている先頭アドレスをVBに渡したい場合の 方法を具体的に教えてください。 構造体を使用する方法はできたのですが、使わない方法(引数が変数)を 教えてください。 よろしくお願いします。 アドレスでの参照の仕方 VB初心者です。 Cは、ポインタ変数にアドレスを入れると、 実態を参照してくれますが、 それをVBでは、どうすればいいのでしょうか?? VBでC関数から文字列が格納されているアドレスを受け取って、 実態の文字列を参照したいのですがどうやったら参照できるのでしょうか?? よろしくお願いします。 指定した実行中プロセスの、指定したメモリアドレスの値を読み取るにはどうしたらよいのでしょうか? 指定した実行中プロセスの指定したメモリアドレスの値を読み取るにはどうしたらよいのでしょうか。 例えば(あくまで例えば)グーグルアースの実行中、現在センターに来ている座標をVBで取得したい場合などです。その座標が格納されているメモリアドレスはわかっているのですが、VBからそこへの手の出し方が判らないのです。 できれば一定時間ごとにその値を取得して表示したいと思っているのですが、VBからプロセスを指定したりそのメモリの値を見るなんて方法がさっぱり判らなくて困っています。 ネットワークエンジニアとは?技術職の未来を考える OKWAVE コラム VBでのAPI いつもお世話になっています。 今回初めて、APIを使うVBのプログラミングをしているんですが、サーバからのファイル名取得でつまずいています。 long型変数 = FtpFindFirstFile(セッション番号, ディレクトリパス, str型変数, 0, 0) って感じで、何かしらファイルが存在するかどうかは戻り値で判定できるのですが、ファイル名自体が取得できません。(複数ファイルが存在するときは、どれか一つのファイル名が取得できれば問題ないです) いろんなサイトを調べたのですが、「引数の文字列変数に"情報"が取得される」ようなふうに書かれており、はっきりしません。ちなみに私の作成中のPGでは、引数の文字列変数は何も格納なれない状態です。 どなたか詳しい方、教えてくれませんか? C/C++言語で変数名から変数のアドレスを取得する C/C++言語で変数名から変数のアドレスを取得する方法があれば、ご教示願います。 例えばですが、関数GetProcAddress()は、関数の文字列からエクスポート済みの関数のアドレスを戻り値で返しています。 GetProcAddress()と同じようにアドレスを取得したい変数名の文字列を渡して、変数のアドレスを取得したいです。 よろしくお願いします。 2ギガぐらい扱えるデータ型 C作成のDLLから引数で文字列を返すのですが 呼び出し元はVBで引数String型なので 2ギガまで文字列が格納できるのですが Cの方がそのような大きなデータを扱えず 内部エラーになり困っております。 CのDLLは複数の文字列を連続取得して ひとつの文字列にして返すという仕様です。 できたら今の仕様のままいきたいのですが もし他に代替案がありましたら そちらのほうもアドバイスいただきたいとおもいます。 ウェブサイトのソースを取得したい VBでウェブサイトのソースを文字列変数に格納したいのですが、 そのような事が可能なのでしょうか? 可能ならばご教授ください。 WindowsXP VB6 VBやC#のDLLを作るとき VBやC#のDLLを作るとき特別な作り方があるのでしょうか? 少し前にポインタで文字列ももってき方を教えていただいたのですが、VBやC#に持っていけません C++で特別な作り方があるでしょうか? それともVBやC#で特別な引き込み方があるのでしょうか? 特に文字の場合ポインタがないVBに持っていくとき どういう型で返せばいいのでしょうか? よろしくお願いいたします メモリのアドレスからの値の取得のしかた c言語でメモリのアドレスから値を取得するには、どういうプログラムにしたらいいですか? 例えば、0x1f00から0x2000までの値を取得するには、具体的にどうプログラムしますか? Stringクラスの変数の格納アドレスを知りたい いつもお世話になります。 Javaの文字列クラスのStringは参照型ですが、この変数の値が格納されたアドレスを知るためにはどうすればよいのでしょうか。eclipse上で、文字列の変数に対してtoString()を試してみたところ、格納されている文字列が出力されました。 ※自作したクラス、たとえばtest.MyClassだとすれば、toString()を用いれば「test.MyClass@01234」というような表記で出力されますが、このような情報を取得するにはどうすればよいでしょうか。 宜しくお願いします。 ファイルを読み込んで変数へ VB初心者です。 ファイルの文字列を読み込んで、変数に格納し、SQL文のテーブル名に指定したいのですが、どうすればよいのでしょうか? テキストから文字列を取得するところまではできたのですが、変数にもって、SQL文に組み込むことができません。実行すると「テーブル名が無効です。」とエラーになります。 どうか、皆様ご教授ください。 音声を取得して取得した文字を出力したい タイトルを凄く難しいことをやろうとしているなという印象をうけるかもしれません!! いくつか切り分けて一つずつやっていきたいと思っております。 (1)音声を取得して一時的にデータを格納します。 例えば「まもなく〇〇が〇〇駅に到着します」という音声を一時的に保存します。 (2)音声取得した言葉を文字にして変数に格納します (3)変数に格納した文字を小さな光で表示させます。 イメージ的には会議でプレゼンをするときにあの四角い機械をパソコンにつないで 映像を表示させるあれをもう少しコンパクトにしたものを作りたいです。 どうやら調べていると音声を取得することはC++などでできるようなので現実的には 可能なのかなぁと思ってます。(個人的に作れるかは別としてですが・・・) 細かくにしていくといろいろあるとは思いますが、なんとなくイメージ的には可能かなと 思っております。 まだ、これからやり始めるところなので具体的な案ができておりません。 大体のイメージができているのでこれから勉強の為いろいろ試行錯誤の上を重ねて 作っていきたいと思っております。 言語はVC++??でやろうと思っております。 学校卒業してからはCとかC++は触ってないのでほぼ一から勉強という形となります 音声取得のプログラムをまずは作りたいのでお勧めの書籍や初めてやる人でも これは使えるんじゃねぇというサイトがありましたらご紹介頂けると幸いです。 AIは使う人の年齢や市場にも影響する?人工知能の可能性 OKWAVE コラム WEBサーバーに文字列を送り戻り値取得 WEBサーバーに文字列送信の開発を行っています。 開発環境はVB6(アプリ部分)+VB2005(DLL部分)です。 文字列生成はVB6でしています。 サーバーに文字を送るところは.netでDLLを作っています。 VB6はそのdllを参照し関数をcallしています。 送信した文字列に何か不備等があればサーバーから1から5までのエラー区分が返ってくるのですが、戻り値を取得することができません。 どうすれば取得できるのでしょうか? <<サーバーとの通信方法>> サーバーに文字列を送るのはWebClientのUploadStringAsyncを使用しています。 サーバー側で文字列が送られているのは確認できています。 サーバーの戻り値を取得するのはUploadStringCompletedイベントで取得していますが、 通信が終わりVB6側に戻ってきた時にUploadStringCompletedイベントが起きているらしく戻り値を取得できません。 どなたかご教授いただければと思います。 直接メモリにアドレス割付けで書き込む方法 VB6.0 WindowsXP 掲題の件ですが、初心者なので分かりやすく教えていただければ幸いです。 現在、MSCOMMを用いてシリアル通信はできるようになりました。 これからPCIボードを使って、通信を試みようとしているのですが、 これは指定したアドレスに書き込むと送信してくれるようです。 VBを用いてメモリのアドレスを指定して書き込む方法はAPIを使うらしいというのまでは 分かったのですが、具体的にどのようなコードを記述すればいいのか分かりません。 型宣言時にアドレスを指定してメモリを確保できるのでしょうか。 よろしくお願いいたします。 Cで自作したDLLをへC#から文字配列を渡したい CでDLLを自作したのですが、その引数にchar**型があるのですが、C#から使用するときにどの型の変数を渡せばいいのかわかりません。 色々と調べていくつか同じような事例があったのですが、うまくいきません。 Cで作ったDLLは __declspec(dllexport) int DetectComPorts(LPWORD ComPortTable, int ComPortMax, char **ComPortDesc) です。この中で「char **ComPortDesc」が問題です。 Cで書いたプログラムからはこのDLLが使用できることを確認しています。 Cの場合はchar**型の適当な変数を作ってmallocでメモリ確保してこの関数に渡して実行するとちゃんとアドレスに目的の文字列が格納されて帰ってきます。 よろしくお願いします VB.NET 配列の格納 VB.NET 配列の格納 エクセルから任意の列の値を格納したいのですが・・・ 現在、値の取得は以下のようなFor文ループを書いています。 各値を一時記憶(格納)したいのですが、どう書けばいいのでしょうか。 また、各列内で重複する値があった場合、重複を避けて値を取得したいのですが どう書いていいかわかりません。 初歩的な質問で申し訳ありませんが、宜しくお願いします。 PN()→G列の各セルの値の変数 JN()→H列の各セルの値の変数 の変数GYO→シートの最終行 j = 1 For i = 1 To GYO '【リストのG列から部品番号を取得】 PN(j) = xlSheet.Cells(i, 7).Value '【リストのH列から部品和名を取得】 JN(j) = xlSheet.Cells(i, 8).value Next 構造体→文字列→構造体 をする方法 VB6.0の話です。 不特定の構造体を文字列(String)に格納し、これを最初の構造体に戻す事はできませんか? 具体的には「共有メモリを使い構造体を文字列にして格納>別ウインドウで文字列を取得して構造体に戻す」と言う事をやりたいんです。 共有メモリに不特定の構造体をいれる方法でもいいんですが…VALIANTだとサイズが大きすぎて実用性がありませんし、違う主旨の質問をするのも良くないので回答はあくまで「構造体→文字列→構造体 をする方法」と言う事でお願いします。 VB.netで検索した文字の後の文字列を取得 VB.net(2010)でテキストファイルから特定の文字を検索してその後にある文字列を取得するにはどのようにすれば良いでしょうか。 【具体例】 C:\testフォルダ以下にある複数のtextファイルから"aaa"の文字を検索して、その後にある"xxx"を取得する。(同じ行にある文字列) 【textファイルの中身】 111 aaa xxx 222 ご教示のほど、よろしくお願いします。 VBで動的なメモリの確保 VBでCのmallocのように動的なメモリ確保はどうやってするのでしょうか? 具体的にはstring型をn個用意したいのです。 VB2.0からVB6.0へのアップグレードについて VB2.0で作成したアプリをWindowsXP上で動作するようVB6.0にアップグレードすることになりました。 VBXからOCXへの置き換え、文字列処理のUnicode対応、DLL呼出しの修正など問題点は多いようです。 そこで、これまでにこのような作業をした方がいらしたら手順や注意点などを教えてください。 また、これに関して書かれているHPなどあれば教えてください。 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ [技術者向] コンピューター プログラミング・開発 Microsoft ASPC・C++・C#CGIJavaJavaScriptPerlPHPVisual BasicHTMLXMLCSSFlashAJAXRubySwiftPythonパフォーマンス・チューニングオープンソース開発SEOスマートフォンアプリ開発その他(プログラミング・開発) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など
補足
ありがとうございます。 VC++のDLL側では何で渡せばいいのでしょうか。 char *str;でアドレスを保持してます。 キャストして代入など行ってるのですが、うまくいきません。 よろしくお願いします。