将输入发送到在Windows机器上使用C中的createprocess()创建的进程

时间:2013-07-23 21:58:59

标签: c input createprocess

**编辑 我找到了解决这个问题的方法。 createprocess()函数调用中的第二个输入字段可以是一个字符串,该字符串将传递给main函数中创建的进程argv []。

示例:

CreateProcess("M:\\Projects\\Force\\Andrew\\force\\force.exe", "PASSME",NULL,NULL,FALSE, CREATE_NEW_CONSOLE,NULL,NULL,&StartupInfo[i],&ProcessInfo[i]);

这会将“PASSME”作为输入参数发送到正在生成的进程的主函数。

就像标题所说我试图编写一个程序,将信息作为输入发送到其他控制台应用程序。我正在编写的程序启动程序的3次迭代,并向每次迭代发送不同的输入。我到目前为止的代码:

PROCESS_INFORMATION ProcessInfo[3];
STARTUPINFO StartupInfo[3];
for(i=0;i<number;i++)
{
    ZeroMemory(&StartupInfo[i], sizeof(StartupInfo[i]));
    StartupInfo[i].cb = sizeof (StartupInfo[i]) ; //Only compulsory field
    CreateProcess("M:\\Projects\\Force\\Andrew\\force\\force.exe", NULL,NULL,NULL,FALSE, CREATE_NEW_CONSOLE,NULL,NULL,&StartupInfo[i],&ProcessInfo[i]);

}


for(i=0;i<number;i++)
{
    WaitForSingleObject(ProcessInfo[i].hProcess,INFINITE);
    CloseHandle(ProcessInfo[i].hThread);
    CloseHandle(ProcessInfo[i].hProcess);
}

所以force.exe程序一个接一个地输入两个输入提示。我希望在启动过程的每次迭代中向这两个输入提示中的每一个发送2个不同的数字。

所以我想知道我所描述的是否可能,以及最好的方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

**编辑我找到了解决这个问题的方法。 createprocess()函数调用中的第二个输入字段可以是一个字符串,该字符串将传递给main函数中创建的进程argv []。

实施例:     CreateProcess(“M:\ Projects \ Force \ Andrew \ force \ force.exe”,“PASSME”,NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL,&amp; StartupInfo [i],&amp; ProcessInfo [i]);

这会将“PASSME”作为输入参数发送到正在生成的进程的主要功能