C# Console 运行时可否隐藏

来源:百度知道 编辑:UC知道 时间:2024/05/07 11:01:17
在winform中(windows程序),我已经知道编译的时候改变工程设置可以让本程序拥有一个对应的控制台界面,那么,这个窗口能否在运行时由代码控制进行显示或者隐藏?别说是点那个控制台右上角的叉,那我就无语了
例子描述: 点击button1显示控制台,再点击则隐藏
真的每人回?分不够?还是无解?
我觉得描述清楚了啊: 显示或隐藏控制台窗口,并不是win窗口...
明确点吧:类似Console.Visible=true/false;的代码来动态显示/隐藏控制台,可否?
win程序可以开启一个与之对应的控制台窗口,可以进行输出的,那个窗口在改变工程设置之后编译出的程序无论如何都会有一个控制台(随着窗口一起)显示出来,不能隐藏?
另起的控制台控制IO岂不是很麻烦?原来的Console.Write/Read岂不是没用了?新开的CMD窗口还要去捕捉输入输出?!
winform编译为控制台程序,运行时和win窗口一起弹出的控制台的引用怎么取呢?

我研究过 的确无解
你自己写一个CONSOLE吧
READ WRITE也不难写的

你也可以另写一个CONSOLE程序做界面
然后WINFORM和CONSOLE用WINDOWS MESSAGE或者WIN SOKET通信
这样就能控制CONSOLE的显示了
麻烦就麻烦在CONSOLE不是标准WINFORM 没有VISIBLE这样的属性
WIN API也没见过类似的功能

[DllImport("user32.dll", EntryPoint = "ShowWindow", CharSet = CharSet.Auto)]
public static extern int ShowWindow(IntPtr hwnd, int nCmdShow);

private void button1_Click(object sender, EventArgs e)
{
IntPtr ptr = this.Process.MainWindowHandle;
if (ShowFlag)
{
ShowWindow(ptr, 0);
}
else
{
ShowWindow(ptr, 1);
}
ShowFlag = !ShowFlag;
}

其中,Process是 当前窗体类的一个属性,值是我在构造函数里起的一个cmd的Process。我这里的做法就是先通过Process拿到IntPtr,然后调API给隐掉就OK,跟你的是不是一样就不知道了
ShowFlag是一个bool型标志位。标志窗口当前是隐藏还是显示的
---------------------------