【发布时间】:2012-07-11 18:23:55
【问题描述】:
我目前有一个在我的 C# 代码中运行的 .exe,该 .exe 会从特定位置收集文件列表,一旦运行,它会提示用户按 esc 退出或输入以重新收集。因为我试图从我的代码中将其作为自动化过程运行,所以我想添加一个命令行参数,如 -s 或其他东西来绕过用户输入的提示。如果不绕过这个,.exe 将永远不会关闭,软件最终会崩溃。 这是我的 .exe 代码
class StackGrabber
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
try
{
StackReader.MessageHandler.OnMessage += new StackReader.MessageHandler.NotificationHandler(OnNotification);
StackGrabber grabber = new StackGrabber();
grabber.Grab();
}
catch (Exception ex)
{
DisplayMessage(ex.ToString());
}
}
private volatile bool IsComplete = false;
private StackReader.StackReader reader;
void Grab()
{
try
{
DisplayMessage("Grabbing stacks... \n");
reader = new StackReader.StackReader();
reader.OnReadComplete += new System.Windows.Forms.MethodInvoker(OnComplete);
if (reader.ReadStacks() > 0)
{
while (!reader.IsComplete)
Thread.Sleep(500);
}
else
{
Thread.Sleep(500);
}
DisplayMessage(Environment.NewLine + "Press esc to exit" + Environment.NewLine);
//...
//...
Console.Read();
}
catch (Exception ex)
{
DisplayMessage(ex.ToString());
}
}
public static void OnNotification(string msg)
{
DisplayMessage(msg);
}
public void OnComplete()
{
IsComplete = true;
}
private static object ConsoleLock = new object();
private static void DisplayMessage(string msg)
{
lock (ConsoleLock)
{
Console.WriteLine(msg);
}
}
}
我这样调用可执行文件:
StackGrab.StartInfo.FileName = @"..\\bin\\StackGrabber.exe";
StackGrab.StartInfo.CreateNoWindow = true;
StackGrab.StartInfo.UseShellExecute = false;
StackGrab.Start();
StackGrab.WaitForExit();
我希望能够在命令提示符下调用 StackGrabber.exe,这样我就可以输入 C:\>StackGrabber -s 并且它不会等待“esc”输入退出
注意:这是关于我使用 C#2.0、Visual Studio 2005 和 WinXP 32bit 的软件的问题
【问题讨论】:
-
您的问题是关于将参数传递给exe还是解析exe中传入的参数?
标签: c# visual-studio command-line c#-2.0 command-line-arguments