WinForm启动时接收参数

WinForm启动时接收参数

1 默认的Main函数,修改如下:

 static class Program{
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main(string[] args){
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);          

            if (args.Length == 0)
                Application.Run(new Form1());
            else
                Application.Run(new Form1(args));
        }
    }

2 Form1窗体的构造

  public partial class Form1 : Form{
        string[] args = null;
        public Form1(){
            InitializeComponent();
        }

        public Form1(string[] args) {
            InitializeComponent();
            this.args = args;
        }
    }

3 在另一个程序里调用编写的exe程序

我使用下面的方式调用会报错

System.Diagnostics.Process.Start("D:\你的程序.exe 参数1")

下面的方式可以正常调用

System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.UseShellExecute = true;
p.StartInfo.FileName = @"D:你的程序.exe";
p.StartInfo.Arguments = "参数1 参数2 参数3";
p.Start();

4. todo  cmd怎么调用

在C#中,如果你想要打开一个WinForms应用程序的进程,并且需要向这个进程传递参数同时获取参数反馈,你可以使用多种方法。一种常见的方法是使用命令行参数,这样可以在应用程序启动时接收参数,并在程序运行时通过特定的方式返回结果。 下面是一个简单的例子,展示了如何启动一个WinForms应用程序,传递参数,并获取反馈: 1. 首先,在你的WinForms应用程序中,你需要处理命令行参数。你可以通过 `Environment.GetCommandLineArgs()` 方法获取启动应用程序的命令行参数数组。 2. 你还需要一个机制来传递参数接收反馈。一个简单的方法是使用文件系统或命名管道来传递数据,或者使用更高级的IPC(进程间通信)技术,比如WCF服务、Windows消息队列(MSMQ)或共享内存。 3. 当你的应用程序接收参数后,可以进行相应的处理,并将结果写入之前设定的通信机制中。 4. 在启动WinForms应用程序的主程序中,你需要等待被启动的进程完成任务,并从之前设定的通信机制中读取反馈结果。 这里是一个使用命令行参数启动WinForms应用程序的示例代码: ```csharp using System; using System.Diagnostics; using System.IO; class Program { static void Main(string[] args) { // 假设你的WinForms应用程序名为"WinFormsApp.exe",并且它处理命令行参数 string exePath = @"C:\Path\To\WinFormsApp.exe"; string[] processArgs = { "Hello", "World" }; // 你需要传递的参数 // 创建一个文件来存放结果,如果使用其他IPC机制则不需要这一步 string resultFilePath = Path.GetTempFileName(); // 构建完整的命令行参数字符串 string fullCommand = $"{exePath} {string.Join(" ", processArgs)} --result-file={resultFilePath}"; // 启动进程 ProcessStartInfo startInfo = new ProcessStartInfo() { FileName = "cmd.exe", Arguments = $"/c {fullCommand}", UseShellExecute = false, RedirectStandardOutput = true, CreateNoWindow = true }; using (Process process = Process.Start(startInfo)) { process.WaitForExit(); // 读取结果 string result = File.ReadAllText(resultFilePath); Console.WriteLine("Received Result: " + result); // 删除临时结果文件 File.Delete(resultFilePath); } } } ``` 在上述例子中,我们启动了一个名为 `WinFormsApp.exe` 的应用程序,并传递了两个参数 `"Hello"` 和 `"World"`,然后我们创建了一个临时文件来存放反馈结果。在应用程序执行完毕后,我们读取临时文件的内容作为结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值