source

c#을 사용하여 현재 활성 창의 제목을 가져오려면 어떻게 해야 합니까?

lovecheck 2023. 5. 7. 11:33
반응형

c#을 사용하여 현재 활성 창의 제목을 가져오려면 어떻게 해야 합니까?

C#을 사용하여 현재 활성 창(즉, 포커스가 있는 창)의 Window 제목을 잡는 방법을 알고 싶습니다.

여기에서 전체 소스 코드로 이 작업을 수행하는 방법에 대한 예를 참조하십시오.

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 주석으로 편집되었습니다.

WPF를 말하는 경우 다음을 사용합니다.

 Application.Current.Windows.OfType<Window>().SingleOrDefault(w => w.IsActive);

GetForgroundWindow 함수를 기반으로 함 | 마이크로소프트 문서:

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern IntPtr GetForegroundWindow();

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

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern int GetWindowTextLength(IntPtr hWnd);

private string GetCaptionOfActiveWindow()
{
    var strTitle = string.Empty;
    var handle = GetForegroundWindow();
    // Obtain the length of the text   
    var intLength = GetWindowTextLength(handle) + 1;
    var stringBuilder = new StringBuilder(intLength);
    if (GetWindowText(handle, stringBuilder, intLength) > 0)
    {
        strTitle = stringBuilder.ToString();
    }
    return strTitle;
}

UTF8 문자를 지원합니다.

루프오버Application.Current.Windows[]그리고 있는 사람을 찾습니다.IsActive == true.

윈도우즈 API를 사용합니다.불러GetForegroundWindow().

GetForegroundWindow()손잡이를 제공할 것입니다(이름 지정)hWnd)를 활성 창으로 이동합니다.

설명서:GetForgroundWindow 함수 | Microsoft Docs

MDI 응용프로그램에서 현재 활성 양식이 필요한 경우: (MDI - 다중 문서 인터페이스).

Form activForm;
activForm = Form.ActiveForm.ActiveMdiChild;

프로세스 클래스를 사용할 수 있습니다. 매우 쉽습니다.이 네임스페이스 사용

using System.Diagnostics;

버튼을 눌러 활성화 창을 표시합니다.

private void button1_Click(object sender, EventArgs e)
    {            
       Process currentp = Process.GetCurrentProcess();
       TextBox1.Text = currentp.MainWindowTitle;  //this textbox will be filled with active window.
    }

언급URL : https://stackoverflow.com/questions/115868/how-do-i-get-the-title-of-the-current-active-window-using-c

반응형