C# 程序通过匿名管道控制exe控制台程序 输入输出流重定向 WPF向控制台程序传递参数出现“句柄无效”问题

在做WPF桌面端软件的时候需要调用别人的exe控制台程序,单独运行exe需要手动输入参数,并进行一些参数选择,要控制exe程序就需要用到匿名管道。
主要步骤:
1.启动控制台exe的Process对象
2.输入输出流重定向,获取exe的输入输出流,然后就可以进行输入了(相当于手动打开exe手动输入);
3.如果exe控制台程序需要接收某个按键消息,需要引用系统”user32.dll”调用系统API函数,获取exe窗口指针进行按键信息传递。

 [DllImport("user32.dll", EntryPoint = "PostMessageA", SetLastError = true)]
        public static extern int PostMessage(IntPtr hWnd, int Msg, System.Windows.Forms.Keys wParam, int lParam);//传递按键消息
        private bool ConvertIMRFile(string imrPath, string outputPath)
        {
            if (!File.Exists(imrPath))
            {
                throw new Exception("File does not exist!");
            }
            if (runCount == 0)
            {
                ConsoleManager.Show(); // 分配控制台  这里主要是针对WPF程序,调用控制台程序需要进行控制台分配 
                handle = Process.GetCurrentProcess().MainWindowHandle;
                //ConsoleManager.ShowWindowAsync(handle, 0);
                runCount++;
            }
            long filesize = new FileInfo(imrPath).Length;
            int sec = (
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值