如何在createprocess结束后从exe返回参数

how to return argument from the exe after createprocess ends?

本文关键字:exe 返回 参数 结束 createprocess      更新时间:2023-10-16

我在vc++中使用创建过程打开了一个exe文件,并通过它传递了参数,我只是想知道如何在exe关闭后从exe到vc++程序获得参数。

我的创建过程代码

    STARTUPINFO si;     
    PROCESS_INFORMATION pi;
   ZeroMemory( &si, sizeof(si) );
   si.cb = sizeof(si);
   ZeroMemory( &pi, sizeof(pi) );
   char  strcrt[256];
    char * str = path;
    char buf[256] = "buffer ";
    strcat (buf, str);
    LPTSTR cmdArgs = TEXT(buf);
  if (
    CreateProcess
            (
            TEXT("C:\MatrixPlugin\AdobePlugin.exe"),
            cmdArgs,NULL,NULL,FALSE,
            CREATE_NEW_CONSOLE,
            NULL,NULL,
            &si,
            &pi
            )
            )
        {
            WaitForSingleObject(pi.hProcess, INFINITE);
        }
    CloseHandle( pi.hProcess );
    CloseHandle( pi.hThread );
    }

此代码启动一个vb.net WPF代码名为AdobePlugin,此代码为

Private Sub App_Startup(ByVal sender As Object, ByVal e As StartupEventArgs)
    If (e.Args.Length <> 0) Then
        MsgBox(e.Args(0))
    Else
        MsgBox("Please open a PDF document first.")
    End If
    Dim Send As String = "c:helphelp_123.pdf"
    'here I want to sent this string to the vc++ code. 
    'I dont want return true or false
    'But I want to return a string contains a address in it.
    'Window.Close()
End Sub

如果返回数据为整数,则可以使用进程退出码和GetExitCodeProcess。如果是更复杂的数据,您可以使用进程间通信,例如读取执行进程的输出流(在STARTUPINFO结构中有一个字段)

如果starter应用程序可以有一个带有消息循环的窗口,那么最简单的方法可能只是向该窗口发布一个WM_COPYDATA消息。