我有我的主要应用,从我的主要应用程序,我将调用另一个 模块(第三方)在我的主要应用程序进行小手术,当我打电话说module..it过程特定时间说5 sec.while其等待处理它显示了条命令窗口中的过程与一些information..now我主要应用程序等待,直到被叫模块完成其process.Now我的问题is..how做我隐藏该命令窗口,不干扰其process..I试图用CreateProcess的,但它似乎没有工作...

例如:我的主要应用是父进程和被叫应用是子process..Parent过程应该独立于儿童的process..check以下

我的例子
int main()
{
  execl("c:\\users\\rakesh\\Desktop\\calledapplication.exe","c:\\users\\rakesh\\Desktop    \\calledapplication.exe",0);


}

code in calledapplication
int main
{
  printf("Rakesh");
}

现在考虑以上,如果你运行的第一个程序...输出将出现在同 命令窗口(它不应该是这样的)......我想主要的应用程序创建的过程,但它不应该由子进程的影响。

有帮助吗?

解决方案

CREATE_NO_WINDOWdwCreationFlagsCreateProcess参数。

其他提示

您谈到了一个“命令窗口”,所以我相信,孩子是一个控制台应用程序。 在这种情况下,你可以在一个单独的conole创建过程和可选迫使新的控制台被图标化或隐藏。 下面的代码启动子的过程,解释一个批处理文件(mytest.bat)。 我希望它可以帮助。问候。

#include <windows.h>
#include <stdio.h>

int main(int argc, char **argv)
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
BOOL rv = FALSE;
WCHAR cmdline[] = TEXT("cmd.exe /c mytest.bat");

    memset(&si,0,sizeof(si));
    si.cb = sizeof(si);
// Add this if you want to hide or minimize the console
    si.dwFlags = STARTF_USESHOWWINDOW;
    si.wShowWindow = SW_HIDE; //or SW_MINIMIZE
///////////////////////////////////////////////////////
    memset(&pi,0,sizeof(pi));
    rv = CreateProcess(NULL, cmdline, NULL, NULL,
                           FALSE, CREATE_NEW_CONSOLE,
                           NULL, NULL, &si, &pi);
    if (rv) {
        WaitForSingleObject(pi.hProcess, INFINITE);
                printf("Done! :)\n");
    }
        else {
                printf("Failed :(\n");

    }

        return rv ? 0 : 1;
}

这听起来像你希望子进程的输出到一个单独的窗口中显示出来。如果是这样,你要调用CreateProcess,并将它传递的CREATE_NEW_CONSOLE标志,而不是使用exec*

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top