每次系统调用时,该函数都会构造一组参数并将它们发送到另一个基于控制台的程序。有没有办法可以让每个电话都没有弹出控制台窗口?
我已经完成了搜索,但那些不是链接器问题的搜索工具并不适用于我。例如,我尝试了_execl
来电和System::Diagnostics::Process^ myProcess = gcnew System::Diagnostics::Process;
,但他们没有工作。
_execl
将带来一个控制台窗口,滚动一堆东西(来自我猜的程序),然后关闭我的应用程序,甚至不做它应该做的事情。
System::Diagnostics::Process^ myProcess = gcnew System::Diagnostics::Process;
似乎没有执行我想要的,因为应该包含文件的输出文件夹不包含任何内容。
所以我很开心。
答案 0 :(得分:1)
CreateProcess API为您提供所需的控件。例如:
#include <windows.h>
using namespace System;
int main(array<System::String ^> ^args)
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
TCHAR cmdLine[MAX_PATH] = L"myOtherApp.exe -with -some -args";
::ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
::CreateProcess(NULL, cmdLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
Console::ReadLine();
return 0;
}
如上所述将CreateProcess标志设置为0,辅助应用程序不会打开自己的控制台窗口,并将其输出写入父窗口。要完全静音辅助应用,请查看其他CreateProcess标记,例如CREATE_NO_WINDOW。