VC常用代码之创建进程

来源:互联网 发布:ubuntu 17.10 ntfs 编辑:程序博客网 时间:2024/06/15 03:19

作者:朱金灿

来源:http://blog.csdn.net/clever101

 

           创建进程是编程开发的常用操作。Windows中的创建进程采用API函数CreateProcess实现。下面是一个使用例子:

#include <Windows.h>#include <string>int _tmain(int argc, _TCHAR* argv[]){STARTUPINFO si;PROCESS_INFORMATION pi;ZeroMemory( &si, sizeof(si) );si.cb = sizeof(si);ZeroMemory( &pi, sizeof(pi) );std::string strCmdLine = "ping www.baidu.com"; // Start the child process. if( !CreateProcess( NULL,   // No module name (use command line)(LPSTR)strCmdLine.c_str(),        // Command lineNULL,           // Process handle not inheritableNULL,           // Thread handle not inheritableFALSE,          // Set handle inheritance to FALSE0,              // No creation flagsNULL,           // Use parent's environment blockNULL,           // Use parent's starting directory &si,            // Pointer to STARTUPINFO structure&pi)           // Pointer to PROCESS_INFORMATION structure) {printf( "CreateProcess failed (%d)\n", GetLastError() );return 1;}// Wait until child process exits.WaitForSingleObject( pi.hProcess, INFINITE );// Close process and thread handles. CloseHandle( pi.hProcess );CloseHandle( pi.hThread );   getchar();   return 0;}

        使用上面的方式创建进程会出现一个控制台界面。要隐藏这个控制台界面,只需要将CreateProcess函数的第六个参数设为CREATE_NO_WINDOW,比如上面对应的代码应改为:

if( !CreateProcess( NULL,   // No module name (use command line)(LPSTR)strCmdLine.c_str(),        // Command lineNULL,           // Process handle not inheritableNULL,           // Thread handle not inheritableFALSE,          // Set handle inheritance to FALSECREATE_NO_WINDOW,              // No creation flagsNULL,           // Use parent's environment blockNULL,           // Use parent's starting directory &si,            // Pointer to STARTUPINFO structure&pi)           // Pointer to PROCESS_INFORMATION structure) {printf( "CreateProcess failed (%d)\n", GetLastError() );return 1;}
0 4
原创粉丝点击