少し変わった (難しい?) 質問です。開いているブラウザーのタブに外部アプリケーションからプログラムでアクセスすることは可能ですか? 漠然とした質問だと思いますが、聞いてください。
私が作成しようとしているのは、応答のないチャット メッセージが存在する場合に Windows システム トレイに通知アイコンを点滅させる「Gmail Chat Notifier」アプリケーションです。現在、私が知る限り、組み込みの Gmail チャット通知は次の 2 つだけです。
- サウンドを有効にする (私は好まない)
- ウィンドウ/タブ/ページのタイトルで、"Gmail" / "Blah said..." というメッセージが交互に点滅していることに注意してください。
#2 の問題点: ブラウザ ウィンドウが最小化されていて、Gmail タブがブラウザのアクティブなタブではない場合、ウィンドウのタイトルが変わらず、新しいチャット メッセージに気付かない。
そこで、タブのタイトルを監視するアプリケーションを作成したいと思います。(アクティブなタブ タイトルのみであるウィンドウ タイトルだけでなく、すべてのタブ タイトル。) アクティブな Windows プロセスを列挙し、点滅する "Blahウィンドウのタイトルに次のように表示されます:
Process[] procs = Process.GetProcesses();
IntPtr hWnd;
foreach (Process proc in procs)
if ((hWnd = proc.MainWindowHandle) != IntPtr.Zero)
if (proc.MainWindowTitle.IndexOf(" says… ") >= 0)
...
しかし、これに関する明らかな問題は、Gmail タブがアクティブ/フォーカスされたタブでない場合には機能しないことです (ウィンドウのタイトルしか見ていないため)。そこで、より深く掘り下げてタブのタイトルを確認できるものが必要です。
私は何に対してもオープンです。私がうまくいくかもしれないと思っていたのは、ブラウザのタブを何らかの形で列挙する方法を見つけることです(MDI子ウィンドウ?*指が交差しました*)が、おそらくそれは可能に近いものでさえありません:)たとえば、Firefox プラグインなどを使用してこれを行う方法 (ただし、ブラウザのサンドボックスに存在するだけでなく、Windows システム トレイと統合するとよいでしょう)。
誰でも私が始めるのを手伝ってくれますか? よろしくお願いします。