如何正确访问C#中的返回布尔值

本文关键字:返回 布尔值 何正确 访问 | 更新日期: 2023-09-27 18:17:22

更新完整代码

我正在尝试一个简单的代码示例,它返回聚焦窗口的窗口句柄,但似乎无法返回文本框中的值。

class ApplicationExecution
{
    public static bool MyWindow()
    {
        var activatedHandle = GetForegroundWindow();
        if (activatedHandle == IntPtr.Zero)
        {
            return false;       // No window is currently activated
        }
        var procId = Process.GetCurrentProcess().Id;
        int activeProcId;
        GetWindowThreadProcessId(activatedHandle, out activeProcId);

        return activeProcId == procId;
    }

    [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
    private static extern IntPtr GetForegroundWindow();
    [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    private static extern int GetWindowThreadProcessId(IntPtr handle, out int processId);
}

我试着像一样访问它

ApplicationExecution esma = new ApplicationExecution();
textbox1.text = esma;

以及

 textBox1.Text = Convert.ToString(ApplicationsWPF.ApplicationExecution.MyWindow());

I获取true或false,而不是函数应返回的GetForegroundWindow值

如何正确访问C#中的返回布尔值

您已将MyWindow定义为static方法,因此需要通过类访问它

textbox1.Text = ApplicationExecution.MyWindow().ToString();

参见静态(C#参考(。

要么使MyWindow非静态,要么:

textbox1.Text =esma.MyWindow();

或:

textbox1.Text=ApplicationExecution.MyWindow();

但正如您现在所解释的,您需要具有Window名称的字符串。

删除你的洞MyWindow((方法,并用私有字符串GetActiveWindowTitle((方法替换它,该方法可以在这里的中找到

然后写:

textbox1.Text=esma.GetActiveWindowTitle();

因为您已经将该方法标记为static。您不需要创建实例。

textbox1.Text = ApplicationExecution.MyWindow().ToString();

如果更新了原始问题,您只需更改MyWindow的签名即可返回int,然后返回activeProcId:的值

class ApplicationExecution
{
    public static int MyWindow()
    {
        ....
        return activeProcId;
    }
    ....
}

为了清楚起见,您可能还想在进行此更改后将该方法重命名为MyProcessId,但我知道您说过这只是您正在尝试的一个示例。