Yijing Sun 2022-09-06 15:07 采纳率: 100%
浏览 79
已结题

winform启动控制台程序

背景:
winform 的项目。一个解决方案下面有两个程序:一个winform项目,一个控制台项目。在winform 中有两个按钮,按钮A是开始,按钮B 是结束。按钮 A 可以启动控制台程序。
在控制台项目中,有三个方法,一个是连接,一个是登录,一个是发送。 当点击winform 上的按钮A 后,会启动 控制台项目,然后执行连接,登录,发送操作。

问题:
问题一:当按钮A 执行完控制台之后,控制台依旧不关闭,等待下一次输入。 按按钮B 时,不会启动一个新的控制台程序,而是使用之前的控制台。
问题二:按钮B启动之后,连接和登录保持,所以不需要操作,只需要执行发送命令
问题三:控制台如何保持等待输入状态,直到手动关闭控制台程序。

代码:
winform:
butonA:

   Process cmd = new Process();
            cmd.StartInfo.FileName = @"xxxxx";
            cmd.Start();

控制台:

class Test
{
public void Connection(){}
public striing login(){}
public void send(){}
}
class Program
    {
        static void Main(string[] args)
       {
       }
}

求一个思路!

  • 写回答

4条回答 默认 最新

  • 浪客 2022-09-06 16:08
    关注
    控制台
    
    using System;
    using System.Runtime.InteropServices;
    
    namespace WindowsFormsApp1
    {
        class Test
        {
            public void Connection() { Console.WriteLine("Conn"); }
            public string login() { Console.WriteLine("Login"); return "OK"; }
            public void send() { Console.WriteLine("send"); }
        }
        public class cmdApp
        {
            Test test;
            //static Test test = new Test();
            public cmdApp() { test = new Test(); }
            public void Connection() { test.Connection(); }
            public string login() { return test.login(); }
            public void send() { test.send(); }
            /// <summary>
            /// 启动控制台
            /// </summary>
            /// <returns></returns>
            [DllImport("kernel32.dll")]
            public static extern bool AllocConsole();
            /// <summary>
            /// 释放控制台
            /// </summary>
            /// <returns></returns>
            [DllImport("kernel32.dll")]
            public static extern bool FreeConsole();
            public static void Main()
            { }
        }
    
    }
    
    
    
    
    form
    
    using System.Windows.Forms;
    
    namespace WindowsFormsApp1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            cmdApp cmdapp = new cmdApp();
            private void button1_Click(object sender, System.EventArgs e)
            {
                cmdApp.AllocConsole();
                cmdapp.Connection();
                cmdapp.login();
            }
            private void button2_Click(object sender, System.EventArgs e)
            {
                cmdapp.send();
            }
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 9月14日
  • 已采纳回答 9月6日
  • 修改了问题 9月6日
  • 赞助了问题酬金10元 9月6日
  • 展开全部

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器