如何在C#中正确访问返回bool值?

时间:2013-06-07 00:16:52

标签: c# boolean return

更新完整代码

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

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());

我得到true或false,而不是函数假设返回的GetForegroundWindow值

4 个答案:

答案 0 :(得分:4)

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

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

请参阅static (C# Reference)

答案 1 :(得分:2)

让MyWindow变为非静态,并且:

textbox1.Text =esma.MyWindow();

或:

textbox1.Text=ApplicationExecution.MyWindow();

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

删除你的漏洞MyWindow()方法并将其替换为私有字符串GetActiveWindowTitle()方法,该方法可以在适用的答案中找到here

然后写:

textbox1.Text=esma.GetActiveWindowTitle();

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

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

class ApplicationExecution
{
    public static int MyWindow()
    {
        ....

        return activeProcId;
    }

    ....
}

您可能还希望在进行此更改后将方法重命名为MyProcessId,但我知道您说这只是您尝试的示例。