CreateProcess创建的子进程的命令行参数

原创 2004年08月22日 23:27:00

用CreateProcess创建的子进程所获得的命令行参数有以下几种情况:

1.子进程中,WinMain函数的第三个参数lpCmdLine表示的命令行参数中除去应用程序路径、文件名以及与参数相隔的空格等字符串后的内容。比如

父进程:

CreateProcess(NULL, “c://test.exe -p“, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);

子进程中,lpCmdLine参数为-p,注意没有双引号

 

2.如果通过lpCmdLine参数查看命令行参数,那么父进程创建子进程的时候,需要在子程序和参数中加上空格号。比如:

父进程:

CreateProcess(“c://test.exe”,“ -p“, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);

子进程中,lpCmdLine参数为-p,没有空格了。

 

3.如果想获得子进程的完整命令行参数,调用GetCommandLine函数。通常通过GetCommandLine函数获得的命令行参数,是父进程调用时的完整参数。

CreateProcess(NULL, “c://test.exe -p“, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);

子进程中,GetCommandLine返回的参数为c://test.exe -p,注意没有双引号

 

以下情况都是调用GetCommandLine函数获得命令行参数

4.CreateProcess第一个参数是NULL,第二个参数指定子应用程序和命令行参数,那么子进程的命令行参数是第二个参数,不带双引号。比如:

父进程:

CreateProcess(NULL, “c://test.exe -p“, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);

子进程中,GetCommandLine获得的命令行参数为c://test.exe -p

 

5.CreateProcess第一个参数指定子应用程序路径和文件名,第二个参数为NULL,那么子进程的命令行参数是第一个参数,带双引号。比如:

父进程:

CreateProcess(“c://test.exe“, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);

子进程中,GetCommandLine获得的命令行参数为”c://test.exe“

 

6.CreateProcess第一个参数指定子应用程序路径和文件名,第二个参数为传递给子进程的参数,那么子进程的命令行参数是第二个参数,不带双引号。比如:

父进程:

CreateProcess(“c://test.exe“, ”-p“, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);

子进程中,GetCommandLine获得的命令行参数为-p。

此处注意同第二点比较,如果用lpCmdLine查看命令行参数,没什么都没有。但是将”-p”改成” -p”,用可以看到参数是-p,是不是很混乱?

CreateProcess的命令行参数

最近使用CreateProcess创建rundll32.exe进程,发现并没有正常加载DLL,后来才发现是命令行参数传错了,CreateProcess并不是我想象的那样,网上找了一下,发现还有许多东西...
  • qingrenufo
  • qingrenufo
  • 2015-09-21 20:43:29
  • 1360

Windows核心编程 进程--CreateProcess函数 终止进程和子进程 进程的权限

CreateProcess函数 使用CreateProcess函数来创建一个进程 BOOL CreateProcess( LPCTSTR pszApplicationName,// na...
  • fztfztfzt
  • fztfztfzt
  • 2015-04-27 16:32:17
  • 1758

CreateProcess主进程与子进程管道通信的封装

本类简单的封装了进程的创建,以及管道的读取,主要的用途是用c++调用php与python脚本时进行通信。 从管道读取内容的时候,必须预定规则,比如读取一行,行尾的标识符是'\n'还是'\t'之类的,...
  • wyansai
  • wyansai
  • 2017-12-15 10:23:10
  • 249

CreateProcess创建新的进程

CreateProcess创建新的进程 标签: attributeswindowsnullsecurityclass扩展 2010-03-16 10:37 3472人阅读 评论(0) 收藏...
  • boshuzhang
  • boshuzhang
  • 2016-07-29 19:58:32
  • 3611

createprocess创建进程并隐藏新进程的窗口

方法很简单,在createprocess调用时修改一下STARTUPINFO的参数,使其隐藏即可。下面是代码示例:PROCESS_INFORMATION pi;STARTUPINFO si;     ...
  • highyyy
  • highyyy
  • 2011-01-11 19:48:00
  • 5953

调用CreateProcess()之后,如何等待子进程初始化完毕。

因为CreateProcess()是在创建线程之后立刻返回的,所以可能并没有等到进程开始执行。 使用WaitForInputIdle函数,就可以等待到进程等待输入的时候返回。...
  • tianzhi0549
  • tianzhi0549
  • 2014-02-18 20:03:12
  • 866

windows下创建进程,CreateProcess()详解及用法

CreateProcess() 函数原型如下: [C++] 纯文本查看 复制代码 ? 01 02 03 04 05 06 ...
  • bzhxuexi
  • bzhxuexi
  • 2014-04-17 18:04:46
  • 22395

创建子进程成功却未执行到main

今天写了一个小程序,调用CreateProcess创建一个子进程。CreateProcess返回了TRUE,但是子进程很快就退出了,连main函数都没有执行到。后来发现是,不小心 设置了父进程的Inp...
  • j2ee_ren
  • j2ee_ren
  • 2013-03-07 20:41:08
  • 796

等待CreateProcess进程退出

STARTUPINFO si; //启动信息memset(&si, 0, sizeof(STARTUPINFO));si.cb = sizeof(STARTUPINFO);si.dwFlags = S...
  • SysProgram
  • SysProgram
  • 2011-03-21 12:06:00
  • 4501

解决CreateProcess()的等待时间问题

解决CreateProcess()的等待时间问题 一、引言: Windows下的API接口函数CreateProcess()可以用来创建一个进程和主线程。新进程执行指定的可执行文件(一般为.exe文...
  • wojiushiwo987
  • wojiushiwo987
  • 2014-01-19 18:44:47
  • 4994
收藏助手
不良信息举报
您举报文章:CreateProcess创建的子进程的命令行参数
举报原因:
原因补充:

(最多只允许输入30个字)