【问题标题】:C# compare window titleC#比较窗口标题
【发布时间】:2015-04-24 23:18:01
【问题描述】:

如何比较我的活动应用程序/窗口标题是否等于某个值?例如,我希望我的 WinForms 应用程序仅在某个应用程序处于焦点时才执行其功能。

我尝试使用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”(注意:不是进程名称,只是窗口标题文本),并告诉我它是对还是错。

【问题讨论】:

  • 我似乎无法获得窗口标题。我不知道它试图返回给我什么。
  • 它只是给你一个窗口的IntPtr。您需要将其传递给另一个 Win32 API 调用,以便为您提供实际的标题。
  • 在哪里将 timer1_Tick 事件处理程序连接到 timer1?

标签: c# winforms window


【解决方案1】:

GetForegroundWindow() 只是返回一个IntPtr。这是您的窗口句柄 (hWnd),供其他调用以获取信息。

在这种情况下,要获取窗口文本,您需要使用GetWindowText。实现它并传入你新获得的IntPtr (hWnd)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 2020-09-28
    相关资源
    最近更新 更多