相关疑难解决方法(0)

显示/隐藏C#控制台应用程序的控制台窗口

我搜索了有关如何隐藏自己的控制台窗口的信息.令人惊讶的是,我能找到的唯一解决方案是通过其标题FindWindow()找到控制台窗口 hacky解决方案.我深入挖掘了Windows API,发现有更好更简单的方法,所以我想在这里发布,供其他人查找.

如何隐藏(和显示)与我自己的C#控制台应用程序关联的控制台窗口?

c# console console-application

177
推荐指数
7
解决办法
19万
查看次数

VS2012返回正常的TFS签到窗口?

VS2012似乎删除了VS2010中TFS签到的弹出窗口.它现在似乎接管了我的侧边栏中的团队资源管理器选项卡,并掩盖了重要的事情 - 比如我改变了哪些文件.有没有办法在VS2012中返回正常的弹出窗口进行签到?

tfs visual-studio-2012

85
推荐指数
4
解决办法
2万
查看次数

是否可以静默运行.NET Core控制台应用程序(隐藏控制台窗口)?

我正在尝试为自己自动执行某些任务,并编写了一些.NET Core 1.0控制台应用程序.其中之一是BrowserRouter--一个简单的应用程序,基于url模式,决定在我点击http(s)链接时打开哪个浏览器/浏览器配置文件.

这工作正常,但总会出现控制台窗口,并立即消失.

有没有办法静默运行.NET Core控制台应用程序(隐藏控制台窗口)?

我知道在完整的.NET Framework中,可以将输出类型更改为Windows应用程序,但是对于.NET Core,这是不可用的(但是?).

c# .net-core

36
推荐指数
4
解决办法
1万
查看次数

如何干净地关闭以Process.Start开头的控制台应用程序?

这看起来像是一项不可能的任务.绝对没有我找到的作品.问题是如何干净地关闭以Process.Start启动的控制台应用程序,该控制器应用程序在没有控制台窗口且没有使用shell执行的情况下启动:( ProcessStartInfo.CreateNoWindow = true; ProcessStartInfo.UseShellExecute = false;).

如果它接收到ctrl-c或ctrl-break信号,那么正在启动的应用程序将"干净地"关闭,但似乎没有办法发送一个有效的应用程序(特别是GenerateConsoleCtrlEvent).

  • Process.Kill不起作用.由于突然杀死进程,它会留下损坏的文件.
  • Process.CloseMainWindow不起作用.在这种情况下没有主窗口,因此该函数返回false并且什么都不做.
  • 在进程的所有线程上调用EnumThreadWindows并向每个窗口发送WM_CLOSE都没有做任何事情,并且无论如何都没有任何线程窗口.
  • GenerateConsoleCtrlEvent不起作用.它仅适用于同一组中的进程(.NET无法控制),无论如何都会关闭调用进程产生不必要的副作用.该功能不允许您指定进程ID.

任何能够提供接受"Process"对象的代码的人都将被标记为答案,该代码以上述参数开始,这些对象导致已启动进程的干净关闭而不影响调用进程.使用7z.exe(7-zip归档程序)作为示例控制台应用程序,它开始压缩大文件,如果没有干净地终止,将留下损坏的未完成文件.

直到有人提供了通向功能示例的功能例子或代码,这个问题没有答案.我见过几十个人在网上问这个问题和几十个答案,但都没有..NET似乎不支持干净地关闭控制台应用程序给定其进程ID,考虑到它是从.NET进程对象开始的,这很奇怪.部分问题是无法在新进程组中创建进程,这使得使用GenerateConsoleCtrlEvent无用.必须有一个解决方案.

.net process console-application break

19
推荐指数
2
解决办法
5055
查看次数

如何在没有GUI的情况下创建C#程序?

我知道您可以创建一个Windows窗体应用程序并将其设置为不可见.如果我创建一个控制台应用程序(控制台窗口将打开 - 我对控制台没用),我该如何创建一个根本没有GUI的简单应用程序?

c# user-interface

12
推荐指数
1
解决办法
8060
查看次数

当命令行调用时,Ghostscript会抑制输出窗口

这是我的情景:

我正在将PDF文件转换为通过C#调用Ghostscript的PNG图像.这是我使用的参数字符串:

-dNOPAUSE -dBATCH -dFirstPage=1 -q -r300   -sDEVICE=png256 -sOutputFile=...
Run Code Online (Sandbox Code Playgroud)

但是,通过这种方式,当我调用Ghostscript时,它会显示一个窗口(在我添加之前-q)有输出消息.

我试过添加-dNODISPLAY之后-r300.但是这样Ghostscript不起作用,也不会创建图像.

问题: 我可以通过哪种方式抑制输出窗口?

c# command-line ghostscript

7
推荐指数
1
解决办法
3138
查看次数

控制台应用程序与Windows服务

我创建了一个小型C#程序,它与Web服务联系并检索和处理数据集.经过一些头脑刮擦和探索stackOverflow之后没有问题 - 感谢所有贡献者.

我通常在Linux世界工作,所以这是对Windows环境的罕见尝试.我需要做的就是设置它以便TaskScheduler运行这个应用程序.没有控制台显示或交互,所有内容都写入日志文件.

在Linux中我只使用CRONTASK,但在Windows中有些不同.这是吗?对吗?这样做的方法,因为它将每天运行一次?我考虑过一个Windows服务,但有一定程度的复杂性,我不确定是否合理.

思考?

c# windows service

5
推荐指数
1
解决办法
1869
查看次数

如何在没有控制台的情况下通过cmd.exe启动分离进程?

我想从C#启动一个外部程序来完全分离.我通过pinvoke使用CreateProcess,因为Process.Start不允许我使用DETACHED_PROCESS.此外,我希望此应用程序将其输出重定向到某个文件.

这是示例代码:

            var processInformation = new ProcessUtility.PROCESS_INFORMATION();
            var securityInfo = new ProcessUtility.STARTUPINFO();
            var sa = new ProcessUtility.SECURITY_ATTRIBUTES();
            sa.Length = Marshal.SizeOf(sa); 

            // Create process with no window and totally detached
            var result = ProcessUtility.CreateProcess(Path.Combine(Environment.SystemDirectory, "cmd.exe"), commandLineArguments, ref sa, ref sa, false,
                ProcessUtility.DETACHED_PROCESS, IntPtr.Zero, null, ref securityInfo, out processInformation);
Run Code Online (Sandbox Code Playgroud)
  1. CommandLineArguments是这样的:"/ c Foo.bat> Foo.log 2>&1"一切正常,Foo.bat填充Foo.log.没有其他控制台窗口可见.完善.

  2. CommandLineArguments是这样的:"/ c Foo.exe> Foo.log 2>&1"Foo.exe是.NET控制台应用程序.未填充Foo.log并在可见控制台窗口中启动Foo.exe.奇怪.为什么行为与1不同?

  3. 仅供参考.CommandLineArguments是这样的:"/ c Foo.exe> Foo.log 2>&1"Foo.exe是.NET Windows应用程序.一切正常,但当我从命令提示符启动此应用程序时,我看不到输出,因为没有分配控制台.

我想2.工作与1.相同为什么有区别?

更新:我不想为自己编写Foo.log,因为启动应用程序将被终止.

更新:好的,我编写了一些代码来指定只有一个句柄被继承但是当使用EXTENDED_STARTUPINFO_PRESENT调用时,CreateProcess会给出错误87(即使它存在且为空).

你能帮帮我吗?

public class ProcessUtility
{
    // Process creation flags
    const uint ZERO_FLAG = 0x00000000; …
Run Code Online (Sandbox Code Playgroud)

c# windows cmd batch-file console-application

5
推荐指数
1
解决办法
4213
查看次数

使用.NET从启动的命令行应用程序中取消命令窗口

我有一个模块需要运行一个小的.Net命令行程序来检查更新.一切都很好,但是我无法抑制显示命令提示输出.

该应用程序拥有自己的Windows窗体,如果它检测到更新,它会弹出.更新需要作为单独的应用程序运行,因为它需要与启动它的DLL不同的执行上下文.

string path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\" + AUTO_UPDATE_EXENAME;

updater.StartInfo.FileName = path;
updater.StartInfo.Arguments = AUTO_UPDATE_PARAMETERS;
updater.StartInfo.CreateNoWindow = false;
updater.StartInfo.UseShellExecute = false;
updater.StartInfo.RedirectStandardOutput = true;
updater.StartInfo.WorkingDirectory = path;

updater.Start();
Run Code Online (Sandbox Code Playgroud)

我曾经最尝试了所有的不同工作组合CreateNoWindow,UseShellExecuteRedirectStandardOutput他们每个人在这恼人的黑盒子结果弹出.该应用程序写入stdout但我只使用它进行调试,用户不应该真正看到它生成的文本.

据说CreateNoWindow和/或RedirectStandardOutput应该防止弹出框,但无论我如何设置这些变量都是如此.

.net c# process command-prompt

4
推荐指数
1
解决办法
3516
查看次数

在c#中执行控制台应用程序?

可能重复:
如何在隐藏控制台的情况下运行C#控制台应用程序.

通过类库如何在后台运行控制台应用程序来执行任务,然后告诉我的方法完成处理?

c# console class-library class console-application

4
推荐指数
1
解决办法
1947
查看次数