今C#の勉強がてら別アプリケーションのキャプションを取得したりする物を作っています
現在の処理の流れとしては
Process.GetProcessesByNameでプロセス取得
↓
取得したプロセス.Threadsをforeachでまわして
Win32APIのEnumThreadWindowsを使ってウィンドハンドル取得
↓
EnumThreadWindowsの中でEnumChildWindowsを使って全部の子ウィンドを取得
↓
GetWindowTextを使用してキャプション取得

こんな感じで処理してます。ここで質問なのですが
1.他のアプリケーションウィンドウのキャプション取得するのって
Win32APIを使う以外に処理する方法ってありますか?

2.特定のウィンドウのキャプションが変更された時に
何らかのメソッドを実行したいのですができますか?