使用C#,我正在尝试使用Process.Start()将命令行参数传递给一个新进程:
string path = @"C:\Demo\Demo.exe";
string arguments = "one two three";
ProcessStartInfo startInfo = new ProcessStartInfo
{
FileName = path,
Arguments = arguments
};
var process = Process.Start(startInfo);
我的C应用程序Demo.exe只是回显命令行参数:
int main( int argc, char *argv[] )
{
int count=0;
// Display each command-line argument.
printf( "\nCommand-line arguments:\n" );
for( count = 0; count < argc; count++ )
printf( " argv[%d] %s\n", count, argv[count] );
while(1);
}
如果我从cmd.exe启动我的应用程序,我会得到合理的输出:
Command-line arguments:
argv[0] Demo.exe
argv[1] one
argv[2] two
argv[3] three
当我使用C#应用程序时,我只能在argv[0]处得到路径参数:
Command-line arguments:
argv[0] C:
任务管理器显示每种启动Demo.exe方法的命令行参数:
为什么我的C应用程序没有接收到来自C#应用程序的命令行参数?
编辑 @hvd建议我使用GetCommandLine()。这里是那段代码和结果:
char* ar = GetCommandLine();
printf( "\nGetCommandLine arguments:\n" );
printf(" %s", ar);
输出:
GetCommandLine arguments:
"C:
这个C应用程序是否可能将参数作为一个字符串接收,但忽略路径中第一个反斜杠之后的所有内容?
编辑:我在下面添加了一个答案。 这是一个解决方法,但我不确定我的问题的原因。