问题标签 [windows-console]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
winapi - 第二次调用 GetStdHandle 返回一个“无效”句柄
我正在尝试将控制台的文本颜色设置为给定颜色,打印一行(或更多行),然后将配色方案更改回原来的颜色。这是我所拥有的:
这在第一次通话时效果很好。更改控制台上新输出的文本颜色并返回以前的属性。但是,当我第二次调用它来重置属性时,GetStdHandle
返回的句柄与前一次调用相同,但现在无效(因为我关闭了它。)
当然,当我尝试使用句柄时,这会导致错误。如果我创建conHandle
一个静态变量并且仅在等于零时调用GetStdHandle
(conHandle
RealBasic 中新数字变量的默认值),它可以正常工作。
我总是被告知要自己清理。我应该让这个把手打开吗?
c++ - C++ SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c) 2 个参数
如何使用
当我没有 1 个“c”参数而是 2 个(例如 2 3)时的函数?
也许有人知道比 SetConsoleCursorPosition 更好的功能,gotoxy() 在 Visual Studio 中不起作用:(
c - 控制台wineevents的正确用法是什么?
在多台机器上“部署”这个问题的解决方案时,我注意到一些单核机器的结果很糟糕(例如,解决方案在英特尔原子上失败了)。
这里发生的事情如下。我打电话SetWinEventHook(...)
来获取控制台更改的回调。由于超出上下文的通知,事件处理和控制台上的进一步更改之间没有同步,所以虽然多核机器做得很好(顺便说一句不是完美的),但单核机器却把这弄得一团糟。
所以我继续打开 In-Context 通知,因为根据 msdn 这应该是同步的。在 c# 中,这就像要求无限不可能驱动器,所以我在 C 中创建了一个简单的 dll,它可以完成肮脏的工作,并与 c# 中的 dll 对话。到目前为止,一切都很好。
事实证明,回调发生在 conhost.exe 中,而不是拥有控制台的进程。现在这提出了一个问题,因为在回调中我找不到在conhost.exe 的上下文中访问控制台输出缓冲区的方法。或者更准确地说,我似乎无法找到处理它的方法。以下是可用的:控制台窗口的句柄、控制台应用程序和 conhost.exe 的进程 ID 以及控制台应用程序的管道。
这是我到目前为止所尝试的:
- 使用
GetStdHandle(...)
, 导致无效句柄(在 conhost.exe 的上下文中有意义) - 使用
CreateFile("CONOUT$"...)
_ - 使用管道让控制台应用程序从输出缓冲区读取,会导致死锁。我怀疑一种用于防止在写入时读取的锁定机制,这是有道理的。
- 复制输出缓冲区句柄并通过管道传递它。没有乐趣,因为控制台句柄不能复制到外部进程。
- 将 conhost.exe 进程附加到它所服务的控制台进程的控制台,然后执行 CreateFile 操作。好的,这是我最喜欢的一个,但它也不起作用,因为
AttachConsole(...)
块,类似于 3。
有人对接下来要尝试什么有任何想法吗?我的 c/c++/winapi 技能充其量是中等水平,所以我很可能忽略了一些东西。好吧,一个明显的做法是将整个事情扔到一边,然后轮询输出缓冲区以进行更改,但我认为这是最后的选择。我假设 MS 足够聪明,可以确保 In Context 或 Out of Context 事件实际上是可用的,因此我必须遗漏一些东西。
command-line - 如何阻止 Windows 批处理文件提前退出?
我有一个类似于以下内容的 Windows 批处理文件:
我遇到的问题是 DoStuff.cmd 执行一个 java 程序,一旦完成退出批处理运行回到命令提示符。2号线永远不会被击中。
我尝试了以下方法来在新窗口中执行命令:
上面发生的情况是,新的命令窗口产生了 cmd 文件运行并退出到等待的命令提示符,并且窗口永远不会关闭,让第一个命令窗口等待,第二个命令窗口在完成第一步后什么也不做。
我如何在不以某种方式控制批处理运行的情况下执行第一个命令?
提前谢谢了
c# - Console.WriteLine multithreaded output is empty with .NET, x64
There is a sample on MSDN for .NET ThreadPool. If I run this code, the output is completely erratic, sometimes, I get a completely empty output on the Console.
If I add a Thread.Sleep()
call, even just for a few ms, the output is fine.
AFAIK Console.WriteLine()
is thread-safe, so the output should always be there. But its not, at least not on my i7 2600 x64
compiled version. Obviously, if I add a breakpoint everything is fine, but it drives me mad.
I added a ConcurrentBag to make sure stuff is there, but even printing the elements of that is empty. Again, if I add a breakpoint everything is fine.
}
c# - 在调度程序中如何在自定义时间激活项目
使用C# VS2010控制台应用程序。我的解决方案包含三个项目。我将此解决方案 exe 设置在窗口时间表上,每天早上调度程序都会连续激活我的解决方案项目,它们工作得很好,但是每天早上我想在上午 9 点激活 Project1,在上午 10 点激活 Project2,在上午 11 点激活 Project3,如何在不同时间激活它们他们都在一个解决方案中。是否知道如何在自定义时间激活项目。
如果有任何疑问请询问,谢谢
python - 如何停止运行没有 GUI 窗口的 Python .pyw 脚本?
我在 python 中创建了一个脚本并将其保存为.pyw
文件,这样我就不需要控制台来执行脚本。我想知道如何在运行后停止执行。我现在正在做的是打开 IDLE 并关闭它,它似乎工作。我确信有更好的方法来做到这一点。有人可以建议我吗?
.net - 使用 Visual Basic 在 Windows 窗体中嵌入 DOS 控制台
我设法从其他问题中找到了一些数据,这些数据可以让我实现下一个代码:
我的问题是我无法找到 DOS 控制台窗口。
windows - 如何在 Perl 脚本中的 Windows 控制台上询问密码?
我尝试了以下代码
它确实要求输入密码并且不会回显答案,但随后会跳过其后面的 <STDIN>。我想这是 Term::ReadPassword::Win32 中的一个错误,所以我想知道是否还有另一个模块在 Windows 上运行良好?
c# - 如何在控制台的当前行写入?
我正在编写一个控制台应用程序,我需要知道如何在当前行中通过换行写入。我尝试在下一个示例中解释这一点:让它控制台行及其编号和内容以及光标位置。
- 你好!
- 这是我的命令外壳。
- 请写点东西:_
当我调用我在控制台文本“lalala”中写入的方法时,我想看到:
- 你好!
- 这是我的命令外壳。
- 拉拉拉
- 请写点东西:_
如果我使用 Console.WriteLine 方法,我会看到下一个:
- 你好!
- 这是我的命令外壳。
- 请写点东西:lalala
- _
请帮我实现这个功能。