アプリ版:「スタンプのみでお礼する」機能のリリースについて

ReadProcessMemoryは
Declare Function ReadProcessMemory Lib "Kernel32" (hProc&, Addr&, Buf&, BufLen&, Re&) As Boolean
という引数で呼び出しますが、4バイト以上を一度に読み込む方法はあるのでしょうか。

説明サイトではBufをByte, Integer, Long等に設定して読み込んでいるものは見かけます。

しかし、例えばHEAP一つを丸ごと読み込もうと読み込み処理をループさせると、フリーズ気味になってしまいます。かといってDoEventsでトラップしても読み込み速度は遅いままで解決に至りません。

そこでBufを文字列型で宣言し、ReadProcessMemoryを使用した後、
For I& = 1 To BufLen
Tmp$(I) = Right(Left(Buf, I),1)
Next I
としたのですが、予期しないデータが返ってくることを確認しました。
(メモ帳のHEAP領域を16バイト読み込んで確認)

C++で作成した関数を使用することなく、上記を解決する方法はあるのでしょうか、ご存知の方、心当たりのある方、ぜひご教授頂きたく存じます。

A 回答 (2件)

byte型変数の配列の先頭の要素を参照渡ししてください。

    • good
    • 0
この回答へのお礼

御回答ありがとうございます。
まさにその通りでした、ポインタの基礎知識ですね、気づかなかった自分を恥ずかしく思います。

またここで知恵をお借りすることがあるとおもいますが、どうぞこれからもご指導ご鞭撻願えますようよろしくお願いします。
…なんだか堅苦しい言葉になってしまいましたが、本当にありがとうございます。

お礼日時:2005/03/24 18:13

>4バイト以上を一度に読み込む方法はあるのでしょうか


4バイト以上は普通ですよ^^;

どれぐらいのサイズを読み取りたいかわかりませんが、質問を読んで推測から、結構大きそうですね^^;

PCに負担がかからない程度で領域を確保して、サイズを指定したら、そのサイズで読み込んでくるはずです。

メモリは共有メモリを利用したほうが、読み書きが早いと、別のメーリングリストですが、言っておりました。

ReadProcessMemory をどのように利用しているかが気になりますが、履歴があるのでそれを見て、自分との違いを比較してみてはいかがでしょうか?

http://okweb.jp/kotaeru.php3?q=817941
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。
「共有メモリ」は初めて聞く名前でした。
AというアプリとBというアプリが同じメモリ空間を使用して実行できる、という領域を生成できるのでしょうかね。

昔RTLFillMemoryやRTLZeroMemoryなどの関数を学んだ(理解し切れませんでしたが)ことがありますが、これと関係があるのか、先達のソースコードを見て学んでいこうと思います。
ためになる回答をどうもありがとうございました。

お礼日時:2005/03/24 18:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!