2016-04-23 20 views
1

C#とWPFの学習を始めました。ウィンドウの種類を取得する方法はありますか?例えば、私は、Window上のテキストを取得するには、これを使用しています:読み込み可能な形式のウィンドウのタイプを取得

[DllImport("user32.dll")] 
static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count); 

これが返されます:「質問する - スタックオーバーフロー - Google Chromeを」

私は唯一の「Google Chromeを」取得したいです。試しました

[DllImport("User32.Dll")] 
public static extern int GetClassName (IntPtr hwnd, StringBuilder lpClassName, int nMaxCount); 

「Chrome_WidgetWin_1」が返されます。私が逃しているより良いアプローチはありますか?

答えて

1

あなたがウィンドウに割り当てられているような "タイプ"はありません。一番近いのは、すでに検索したクラス名です。

タイトルテキストを解析することはできますが、すべてのウィンドウが「some text」 - 「whatever」 - 「Google Chrome」という同じタイトルテキストパターンに従うと、最後の値を抽出することができます。ダッシュの回数または任意のは、限り、あなたは何のタイトルテキストが存在しない場合、これは「Google Chromeを」返却またはnullになるように

string windowTypeName = string.Split('-').LastOrDefault(); 

として、それを抽出することができ、「Google Chromeの」の前にダッシュがあるとは関係ありません。またはタイトルテキストにダッシュを入れます。

編集

私はそれだと仮定し、また、ウィンドウに関連付けられているプロセス名を取得する可能性があり、それはchrome.exeだならば、あなただけのウィンドウタイプは、いや「Google Chromeの」

+0

であると仮定することができます最良の方法 – user3918985

関連する問題