【问题标题】:How to execute external programm in the parent C++ programm in Windows?如何在 Windows 的父 C++ 程序中执行外部程序?
【发布时间】:2015-11-11 12:13:06
【问题描述】:
int system(const char *str);
    declared in stdlib.h

据我所知,此代码将生成一个不在父进程内的新进程,并且在任务管理器中将有两个进程 - 父进程和子进程。

如何在父进程中生成子进程?即在任务管理器中必须只有一个-父-进程。

【问题讨论】:

    标签: c++ exec


    【解决方案1】:
    #include <windows.h>
    #include <stdio.h>
    #include <tchar.h>
    
    void _tmain( int argc, TCHAR *argv[] )
    {
        STARTUPINFO si;
        PROCESS_INFORMATION pi;
    
        ZeroMemory( &si, sizeof(si) );
        si.cb = sizeof(si);
        ZeroMemory( &pi, sizeof(pi) );
    
        if( argc != 2 )
        {
            printf("Usage: %s [cmdline]\n", argv[0]);
            return;
        }
    
        // Start the child process. 
        if( !CreateProcess( NULL,   // No module name (use command line)
            argv[1],        // Command line
            NULL,           // Process handle not inheritable
            NULL,           // Thread handle not inheritable
            FALSE,          // Set handle inheritance to FALSE
            0,              // No creation flags
            NULL,           // Use parent's environment block
            NULL,           // Use parent's starting directory 
            &si,            // Pointer to STARTUPINFO structure
            &pi )           // Pointer to PROCESS_INFORMATION structure
        ) 
        {
            printf( "CreateProcess failed (%d).\n", GetLastError() );
            return;
        }
    
        // Wait until child process exits.
        WaitForSingleObject( pi.hProcess, INFINITE );
    
        // Close process and thread handles. 
        CloseHandle( pi.hProcess );
        CloseHandle( pi.hThread );
    }
    

    来源:MSDN

    【讨论】:

    • 你好。 This code is opening new proc, that could be seen in Task Manager, and not only process of the parent programm: Имя ИД процесса Состояние Имя пользователя ЦП Память (частный рабочий набор) Командная строка Описание TOTALCMD.EXE 6616 Выполняется ArtUrlWWW 00 3 400 К c:\\Art\Apps\\totalcmd_new\\TOTALCMD.EXE Total Commander 32 位 | Имя ИД процесса Состояние Имя пользователя ЦП Память (частный рабочий набор) Командная строка Описание ExecExternalProgramm.exe 6308 Выполняется ArtUrlWWW 00 348 К ExecExternalProgramm.exe c:\\Art\Apps\\totalcmd_new\\TOTALCMD.EXE ExecExternalProgramm
    • 一般你不能在任务管理器中隐藏进程,我认为这很好。但是有一些方法可以隐藏您的进程,例如 DLL 注入或DKOM
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 2011-08-12
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多