Как я получаю заголовок текущего активного окна с помощью c#?

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

107
задан Shimmy 20 February 2011 в 13:28
поделиться

4 ответа

Посмотрите пример о том, как можно сделать это с полным исходным кодом здесь:

http://www.csharphelp.com/2006/08/get-current-window-handle-and-caption-with-windows-api-in-c/

[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();

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

private string GetActiveWindowTitle()
{
    const int nChars = 256;
    StringBuilder Buff = new StringBuilder(nChars);
    IntPtr handle = GetForegroundWindow();

    if (GetWindowText(handle, Buff, nChars) > 0)
    {
        return Buff.ToString();
    }
    return null;
}
<час>

Отредактированный с @Doug McClean комментирует для лучшей правильности.

162
ответ дан Răzvan Flavius Panda 24 November 2019 в 03:41
поделиться

Используйте Windows API. Звоните GetForegroundWindow().

GetForegroundWindow() даст Вам дескриптор (названный hWnd) к активному окну.

Документация: GetForegroundWindow функционируют | Microsoft Docs

4
ответ дан shA.t 24 November 2019 в 03:41
поделиться

Переберите Application.Current.Windows [] и найдите тот, у которого IsActive == true .

4
ответ дан 24 November 2019 в 03:41
поделиться

Если вы говорили о WPF, используйте:

 Application.Current.Windows.OfType<Window>().SingleOrDefault(w => w.IsActive);
17
ответ дан 24 November 2019 в 03:41
поделиться