반응형
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
반응형
'source' 카테고리의 다른 글
Excel Interop - 효율성 및 성능 (0) | 2023.05.07 |
---|---|
mac OS X에서 mongodb 서비스를 시작하는 방법은 무엇입니까? (0) | 2023.05.07 |
각도에서 양식 그룹에 동적으로 컨트롤 추가 (0) | 2023.05.07 |
Visual Studio 및 App 서비스에서 웹 배포에 문제가 있는 것은 무엇입니까? (0) | 2023.05.02 |
PuTTYgen(Windows)을 사용하여 생성된 SSH 키 쌍을 ssh-agent 및 Keychain(Linux)에서 사용되는 키 쌍으로 변환하는 방법 (0) | 2023.05.02 |