1

C# で現在開いているウィンドウの名前を取得する方法を知りたいです。私は調べてみましたが、私の質問に対する解決策はまだ見つかりませんでした.stackoverflowが役立つことを願っています.

私が次のようなことを考えている例

String currentWindow = Window.Current.toString();

ありがとう。

4

2 に答える 2

3

これは、少し前にSOで著者から得た可能性が非常に高い、望ましい効果を達成するためのスニペットです。したがって、これは重複している可能性があります。しかし、スニペットは次のとおりです。

private static string GetActiveWindowTitle()
{
    const int nChars = 256;
    StringBuilder buff = new StringBuilder(nChars);
    IntPtr handle = GetForegroundWindow();
    return GetWindowText(handle, buff, nChars) > 0 ? buff.ToString() : null;
}

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

使用例:

string activeWindowTitle = GetActiveWindowTitle() ?? "Unknown Window";

現在のフォアグラウンド ウィンドウにハンドルを返すplatform invoke呼び出しに使用します。GetForegroundWindow次に、ハンドルをGetWindowText関数に渡すと、ウィンドウのタイトルが返されます。

于 2013-01-15T20:51:45.223 に答える
1
[ DllImport("user32.dll") ]
static extern int GetWindowText(int hWnd, StringBuilder text, int count);  

それをインポートして、そのように使用します。

int CharacterMap = 256;
StringBuilder StringInput = new StringBuilder(CharacterMap);
IntPtr Window = GetForegroundWindow();
String WindowTitle = GetWindowText(CharactrMap,StringInput,Window) > 0 ? StringInput.ToString() null;

上の投稿に気づきませんでした。おっと!D:

于 2013-01-15T21:09:01.723 に答える