- C#如何隐藏控制台程序cmd窗口

- C#如何隐藏控制台程序cmd窗口,第1张

下面代码实现隐藏C#控制台程序打开的cmd窗口 public static string Execute(string exe, string args) { string output = ""if (exe != null &&exe != "") { Process process = new Process()//创建进程对象 ProcessStartInfo startinfo = new ProcessStartInfo()//创建进程时使用的一组值,如下面的属性 startinfo.FileName = exe//设定需要执行的命令程序 //以下是隐藏cmd窗口的方法 startinfo.Arguments = args//设定参数,要输入到命令程序的字符 startinfo.UseShellExecute = false//不使用系统外壳程序启动 startinfo.RedirectStandardInput = false//不重定向输入 startinfo.RedirectStandardOutput = true//重定向输出,而不是默认的显示在dos控制台上 startinfo.CreateNoWindow = true//不创建窗口 process.StartInfo = startinfotry { if (process.Start())//开始进程 { output = process.StandardOutput.ReadToEnd()//读取进程的输出 } } finally { if (process != null) { process.Close()} } } return output} 下面代码通过win32API来实现,注意导入DllImport所在名字空间 using System.Runtime.InteropServices[DllImport("user32.dll", EntryPoint = "ShowWindow", SetLastError = true)] static extern bool ShowWindow(IntPtr hWnd, uint nCmdShow)[DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName)Console.Title = "WAHAHA"//为控制台窗体指定一个标题 IntPtr intptr = FindWindow("ConsoleWindowClass", "WAHAHA")if (intptr != IntPtr.Zero) { ShowWindow(intptr, 0)//隐藏这个窗口 }

Java。IO里面的FILE好象没有类似功能,我查了一下,eclipse的core.resources里面的IFILE有这个功能,重要代码示例如下:

IFile f = new org.eclipse.core.internal.resources.File(XX,XX)

f.getResourceAttributes().setHidden(true)

但是这段代码在ECLIPSE工作区内比较方便,如果不是ECLIPSE环境而是纯JAVA应用的话,就显得太麻烦了。

所以我估计要完成这个功能,需要一个本地调用才能解决问题。

可以考虑调用Windows系统API的SetFileAttributes 函数


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11370142.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存