2

我需要将控制台从 C# 表单/控制台应用程序带到前面。我得到以下代码,它将控制台窗口置于前面:在 c# 中将控制台窗口置于前面

但是,为什么此代码示例也打印为 true,我该如何禁用它?

public static void ToFront()
{
    string originalTitle = Console.Title;
    string uniqueTitle = Guid.NewGuid().ToString();
    Console.Title = uniqueTitle;
    Thread.Sleep(50);
    IntPtr handle = FindWindowByCaption(IntPtr.Zero, uniqueTitle);
    Console.Title = originalTitle;
    Console.WriteLine(SetForegroundWindow(handle));
}
4

5 回答 5

4

改变你的最后一行

Console.WriteLine(SetForegroundWindow(handle));

SetForegroundWindow(handle);

您所拥有的是执行函数并打印结果值。

于 2013-04-09T14:10:40.317 回答
1

这条线是罪魁祸首:

Console.WriteLine(SetForegroundWindow(handle));

SetForeGroundWindow返回一个布尔值,由 WriteLine 自动转换为字符串,并打印出来。

将其替换为:

SetForegroundWindow(handle);
于 2013-04-09T14:10:53.897 回答
0

您正在打印 SetForgroundWindow 的返回,它在成功时返回 true。只需将类删除到 console.writeline

Console.Title = originalTitle;
SetForegroundWindow(handle);
于 2013-04-09T14:10:33.690 回答
0

您可以使用;

SetForegroundWindow(handle);

不是

Console.WriteLine(SetForegroundWindow(handle));
于 2013-04-09T14:11:33.240 回答
0

鉴于标题在桌面中是唯一的,添加对 Microsoft.VisualBasic 的引用,然后:

using Microsoft.VisualBasic;
....
Interaction.AppActivate(Console.Title);

编辑:对不起,我没有完全阅读这个问题,但如果 VB 导入不会冒犯你,这是一种将应用程序置于前台的简单方法。

于 2013-04-09T14:18:25.080 回答