MSInfo.exeのListView(?)上にあるシステム情報を文字列として取り込むには?

解決


むらかみ  2003-06-17 16:49:11  No: 78321  IP: [192.*.*.*]

自アプリケーションに対して、他のアプリケーション(例えばMSInfo.exe)のListView(?)上にあるシステム情報を自アプリケーションからの操作で文字列として取り込むには、どうすればよいのでしょうか?

編集 削除
むらかみ  2003-06-17 17:35:30  No: 78322  IP: [192.*.*.*]

大事なことを忘れてました。私が使っているPCは複数台あって、Windows98, Windows2000, Windows XPの3種類のシステムがあります。

編集 削除
魔界の仮面弁士  2003-06-17 18:11:56  No: 78323  IP: [192.*.*.*]

ListItem.Text の部分だけで良ければ、oleacc.dllの
「IAccessibleインターフェイス」で拾う事ができます。

   strText = objIAccessible.accName(lngLineNumber)


しかし、ListItem.SubItems(n) の値も拾いたい場合は、もう少し複雑です。
この場合は、LVM_GETITEM メッセージを使って取得する事になるのですが、
別EXE間でデータ交換を行う必要があるため、VirtualAllocEx APIで
共有メモリを確保して、そこに対してRead(Write)ProcessMemory APIで
読み書きを行う必要が生じます。

# なお、Win98ではVirtualAllocExが利用できませんので、かわりに
# CreateFileMapping, MapViewOfFileを使うようにしてみてください。

編集 削除
むらかみ  2003-06-17 21:49:51  No: 78324  IP: [192.*.*.*]

魔界の仮面弁士様、早速のご教授、ほんとに有り難う御座います。このページでの2回目の質問にこんなに早く答えが返ってくるとは予想外でした。
さっそく試してみます。

編集 削除
むらかみ  2003-06-20 18:15:51  No: 78325  IP: [192.*.*.*]

魔界の仮面弁士様、有り難う御座いました。私はVBをいじりはじめて1年たらずの若輩です。何かと話の通じにくい点も多々あると思いますが、今後とも宜しくお願い申し上げます。

編集 削除