EnumChildWindowsで子ウィンドウを列挙するプログラムを作っています。
EnumChildProcでエディットコントロールだけ取り出したいのですが、ウィンドウハンド
ルから特定のクラスを割り出すことってできますか?
例えば、エディットクラスだとわかれば、そのウィンドウにWM_GETTEXTを送って、そこ
に記入されている文字列を読み取ることもできるかなと・・(もちろんプロセス間での
メモリ読み取りについては、ReadProcessMemoryなどでひと工夫いるとは思いますが。
GetClassName()なんてのがあるようです。
他のプロセスが登録したウィンドウクラス名を取れるかは、試していないのでなんとも。
おそらく取れるとは思いますが。
>瀬戸っぷさん
できました。
他プロセスのクラス名でも大丈夫でした。
ウィンドウクラスって、大文字小文字の区別は無いのかと思っていましたが、
GetClassName(hTarget, szBuffer, MAX_PATH);
if(lstrcmp(szBuffer, TEXT(Edit)) == 0) //←これだと、エディットコントロールだ
と、きちんと認識してくれますが、
if(lstrcmp(szBuffer, TEXT(EDIT)) == 0) //←これだと、ダメでした。
自分は
if((ATOM)GetClassLong(hTarget, GCW_ATOM) == FindAtom(TEXT(Edit)))
というやり方でもいけそうかな、と思ったんですがコレもダメでした・・・
それから
GetClassInfo(NULL, (LPCTSTR)GetClassLong(hTarget, GCW_ATOM), &wndclass);
if(lstrcmp(wndclass.lpszClassName, TEXT(Edit)) == 0)・・・・
というのも、プログラムが落ちてしまいうまく行かなかったです。
いろいろやり方はありそうなんですが・・・詰まってしまって
教えていただいた方法で、完璧に動作しました。
ありがとうございました。