Internet explorer 如何隐藏cmd.exe控制台?

Internet explorer 如何隐藏cmd.exe控制台?,internet-explorer,cmd,Internet Explorer,Cmd,我将下面的代码放入Internet Explorer的*.dll中 FILE *child = _popen("java -jar c:\\simmetrics.jar c:\\chtml.txt c:\\thtml.txt > c:\\output.txt", "r"); fclose(child); 我的问题是,当我运行Internet Explorer时,也会打开cmd.exe控制台。我不希望在运行浏览器时控制台突然出现。我如何避免或隐藏它,或根本不执行它) 更新: 如何从代码

我将下面的代码放入Internet Explorer的*.dll中

FILE  *child = _popen("java -jar c:\\simmetrics.jar c:\\chtml.txt c:\\thtml.txt > c:\\output.txt", "r");

fclose(child);
我的问题是,当我运行Internet Explorer时,也会打开cmd.exe控制台。我不希望在运行浏览器时控制台突然出现。我如何避免或隐藏它,或根本不执行它)

更新:

如何从代码中正确调用javaw?它仍然会弹出控制台窗口:(

更新:


还有其他方法吗?每当我在程序中运行这行代码时,控制台窗口仍会被调用。

尝试改用
javaw.exe
。它与
java.exe
相同,只是它是Windows图形程序,而不是控制台程序,因此不会打开命令控制台。(作为一种副作用,如果不将stdout和stderr重定向到日志文件,您将无法看到它们。)

尝试改用
javaw.exe
。它与
java.exe
相同,只是它是Windows图形程序,而不是控制台程序,因此不会打开命令控制台。(作为一个副作用,如果不将stdout和stderr重定向到日志文件,您将无法看到它们。)

您可以使用而不是
\u popen
。这有点麻烦,但您可以将该标志作为
dwCreationFlags
参数的一部分传递,以防止出现控制台窗口

如果需要捕获所创建流程的输出,可以使用
CreatePipe
/
ReadFile
来完成。MSDN提供了一个完整的示例。可以使用
而不是
\u popen
。这有点麻烦,但可以将标志作为
dwCreationFlags
参数的一部分传递给prev阻止控制台窗口出现


如果您需要捕获所创建流程的输出,可以使用
CreatePipe
/
ReadFile
来实现。MSDN有一个完整的例子来实现这一点。

正如另一个答案所指出的,我们可以使用CreateProcess函数和CREATE\u NO\u窗口标志。下面是一个工作示例。它有很多额外的功能此处未显示。这只是替换system()或_spawn()系列所需的最小值


正如另一个答案所指出的,我们可以使用带有CREATE\u NO\u WINDOW标志的CreateProcess函数。下面是一个工作示例。它有很多额外的功能,这里没有显示。这只是替换system()或_spawn()系列所需的最小值


当我在cmd控制台中键入javaw并按ENTER键时,似乎没有显示帮助手册。我可以知道为什么以及如何解决此问题吗?是否有其他方法。它仍然会弹出cmd控制台。当我在cmd控制台中键入javaw并按ENTER键时,似乎没有显示帮助手册。我可以知道为什么以及如何解决此问题吗?是否有其他方法。它仍然会弹出让我们打开cmd控制台。
FILE  *child = _popen("javaw -jar c:\\simmetrics.jar c:\\chtml.txt c:\\thtml.txt > c:\\output.txt", "r");
STARTUPINFO si;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);

PROCESS_INFORMATION pi;
ZeroMemory( &pi, sizeof(pi) );

// Spawn creates a cmd.exe window.  CreateProcess doesn't.
//if ( _spawnl( _P_WAIT, szFileNameBAT, szFileNameBAT, NULL ) ) {  
if ( !CreateProcess( szFileNameBAT, szFileNameBAT, NULL, NULL, false,
                     CREATE_NO_WINDOW, NULL, NULL, &si, &pi  ) ) {
  MyErrorFunc( "CreateProcess( \"%s\" ): %d", szFileNameBAT, GetLastError() );
  goto MyErrorHandling;
}

WaitForSingleObject( pi.hProcess, INFINITE );

CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );