如何正确访问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值
您已将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,但我知道您说过这只是您正在尝试的一个示例。