0

**編集この問題の解決策を見つけました。createprocess() 関数呼び出しの 2 番目の入力フィールドは、メイン関数で作成されたプロセス 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 つの入力プロンプトを次々と受け取ります。起動されるプロセスの反復ごとに、これらの 2 つの入力プロンプトのそれぞれに 2 つの異なる番号を送信しようとしています。

それで、私が説明したことが可能かどうか疑問に思っていました.それを行うための最良の方法は何でしょうか?

ありがとう!

4

1 に答える 1