windev调用.net库来获取cmd程序的输出
参考[C#]使用Process的StandardInput与StandardOutput写入读取控制台数据 - cnxy - 博客园 (cnblogs.com) 原理是windev反射调用dotnet 程序集
起因是我在试图用windev20中文版调用paddle。net的c# dll时发现windev20好像对调用这种c++dll的程序集会报错,在windev25中就不会,但是我不喜欢用英文版的windev(有那功夫我都去写vb。net了)
想到如果能获取cmd程序的输出结果,那什么语言写的程序都能和windev20中文版通信了 。看看文档,20中文版原生不支持命令行交互(24 25 正式版可以)
于是参考c#与cmd交互的代码
windev代码,首先要导入system程序集
// 概要:<运行cmd> // 语法: //[ <Result> = ] 运行cmd (<要运行的命令>) // // 参数: // 要运行的命令:<请在这里指出要运行的命令的角色> // Return Value: // UNICODE字符串型:cmd的结果 // // // 例如 : // 请在此处指出使用的一个示例。 // 过程运行cmd(要运行的命令) pro 是 Process() pro.StartInfo.FileName = "cmd.exe" pro.StartInfo.UseShellExecute = 假 pro.StartInfo.RedirectStandardOutput = 真 pro.StartInfo.RedirectStandardError = 真 pro.StartInfo.RedirectStandardInput = 真 pro.StartInfo.CreateNoWindow = 真 pro.Start() pro.StandardInput.WriteLine(要运行的命令) pro.StandardInput.WriteLine("exit") output是字符串型 = pro.StandardOutput.ReadToEnd(); pro.StandardInput.AutoFlush = 真 pro.WaitForExit(); pro.Close(); 发送回 output
演示视频 https://v.douyin.com/Fr24Eow/