09/02/26 22:12:10
別のソフトのリッチエディットコントロールの指定行のテキストを
取得しようと、VirtualAllocExを使ってEM_GETLINEを送信しましたが、
取得できません。
SendMessage前に、事前に以下のようにWriteProcessMemoryにより最初の2Byteに
格納可能サイズは入れてあります。
DWORD dwBytes;
WORD buf_size=512;
WriteProcessMemory(hProcess, pVBuf, &buf_size, sizeof(WORD), &dwBytes);
一方、やけくそで自プロセスで確保したバッファをWPARAMに突っ込んで
SendMessageしたら、あっさりと取得できました…
その後、色々調べてみたら
URLリンク(www.microsoft.com)
の記事を見つけ、これによると(真ん中あたり)
16bit-Windowsとのコンパチ確保のために、一部のコントロール固有メッセージに
ついては、Windowsがうまいことプロセス間のデータの受け渡しをやってくれる
(かなり意訳ですが…)と書いてありました。
まさにEM_GETLINEがこの“一部”にあたるのかなと思ってるんですが、逆に
この“一部”にあたる場合は、VirtualAllocExではやってはいけないもんなんで
しょうか?