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 函数创建进程(调用外部程序)算是很常用的操作了,最近在工作中却遇到一个少见的怪现象,经常使用的一段代码(调用外部程序并等待其结束,主要就使用了 CreateProce...
  • JPEXE
  • JPEXE
  • 2015年11月05日 14:54
  • 4458

CreateProcess时不显示或者不创建窗口 (或用虚拟桌面实现后台调用外部程序)

最近接触一个项目,vc中主窗口调用某个存在的EXE可执行文件在DOS(或者后台)执行,但是不想让用户看到这个执行文件,也就是不显示或者不创建窗口。从网上搜了很多总结了三种方法,希望对大家有用: 网上...
  • rongwenbin
  • rongwenbin
  • 2014年04月24日 16:47
  • 2283

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

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

CreateProcess 隐藏窗口的坑!

最近自己要写一个程序能够创建进程隐藏
  • XiaoZuoay
  • XiaoZuoay
  • 2014年09月10日 19:00
  • 2322

CreateProcess创建新的进程

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

C语言中使用CreateProcess创建进程(或执行win命令行)

转载请注明出处: 实际上用system()函数就可以执行windows命令行,不过略显简陋,下面介绍更复杂的CreateProcess() WIN32API函数CreateProcess用来创...
  • jeakon
  • jeakon
  • 2013年01月26日 17:28
  • 4877

遇到的CreateProcess 创建进程注入DLL遇到的问题

今天搞了一天~写自动登录游戏注入DLL~
  • q304929130
  • q304929130
  • 2014年07月16日 23:06
  • 1203

C/C++使用WinAPI CreateProcess函数调用外部程序

CreateProcess函数原型:函数原型: BOOL WINAPI CreateProcess( In_opt LPCTSTR lpApplicationName, Inou...
  • lhyhr
  • lhyhr
  • 2015年03月19日 13:43
  • 2750

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

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

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

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

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