• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【C#】FindWindowExの使い方を教えてください)

【C#】FindWindowExの使い方を教えてください

このQ&Aのポイント
  • C#.NET初心者のため、FindWindowExの使い方を教えてください。
  • アプリAのウィンドウハンドルを取得することはできましたが、TextBox1のハンドルをうまく取得できません。
  • アプリAのテキストボックスのクラス名が不変なのかどうか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

FindWindowExの中でGetWidnowTextを呼び出しているため失敗するのだと思いますよ GetWidnowTextはプロセスを超えては取得できないようです 取得できたとしても間違ったデータを返す場合があるようです MSDNなどの GetWindowTextを確認してみてください プロセスを超えて子コントロールのテキストを取得する場合は WM_GETTEXTを直接コントロールにSendMessageで送って取得するようにしないといけないようです Spy++は GetWindowで子コントロールのハンドルを取得してタイトルの取得にはWM_GETTEXTをSendMessageで送っているのではないかと思われます VB.NETのAppAのテキストボックスのデータを書き換えても起動時に設定してあったデータで無いと失敗するようです

Take-bon
質問者

お礼

ご回答有り難うございます。 redfox63さんのご回答をヒントに色々調べてみた結果、Zオーダーと言うものの存在を知り、VB.NETのAppAのテキストボックスのZオーダーをVisual Studio 2005のレイアウトツールバーで最前面にして、念のためTextBox1.BringToFront()を記述して(^^;、C#ではGetWindow(hWnd, GW_CHILD); で目的のテキストボックスのクラスを取得することが出来ました。 お陰でこれからは作業がはかどりそうです。 また、調べているうちに色々と勉強することも出来ました。 本当に助かりました。 有り難うございました。

関連するQ&A