2015-04-24 4 views
1

Как я могу сравнить, если мое активное имя приложения/окна равно чем-то? Например, я хочу, чтобы приложение WinForms выполняло только его функции, когда определенное приложение находится в фокусе.C# сравнить название окна

Я пробовал использовать GetForegroundWindow(), но он не работает.

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

public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     timer1.Start(); 
    } 

    private void timer1_Tick(object sender, EventArgs e) 
    { 
     if (GetForegroundWindow().ToString() == "Test123") 
     { 
      MessageBox.Show("right"); 
     } 
     else 
      MessageBox.Show("wrong"); 
    } 

Так что мой таймер будет проверить, если заголовок текущего окна называется «test123» (примечание: имя процесса, только заголовок окна текста), и скажите мне, если это правильно или неправильно.

+0

Что пошло не так? – DWright

+0

Я не могу получить название окна. Я не знаю, что он пытается вернуть мне. – aliazik

+0

Это просто возвращает вам окно «IntPtr». Вам нужно передать это на другой вызов API Win32, чтобы дать вам фактический заголовок. – TyCobb

ответ

2

GetForegroundWindow() просто возвращает вас IntPtr. Это ваш дескриптор окна (hWnd) для других звонков для получения информации.

В этом случае, чтобы получить текст окна, вам необходимо использовать GetWindowText. Внесите это и передайте вновь приобретенному IntPtr (hWnd).

Смежные вопросы