首页 新闻 会员 周边 捐助

关于“重定向”的问题

0
悬赏园豆:80 [已解决问题] 解决于 2008-04-03 16:54
<P>我最近在用C#语言开发一个在WINDOWS平台下可以运的支持汇编语言编译的软件,目前遇到了一个麻烦:该软件有个功能是可以进行编译和连接,如果进行编译啊?用C#怎么实现?是直接调中masm.exe那个命令吗?怎样调用?它需要指定要连接的.asm文件,我需要怎么样给他指定那个文件呢?如果调用了,当出错时,我怎样捕获出错信息并且显示在窗口中?还是,就是如何进行连接(Link)啊?如果要调用Link.exe命令的话,具体怎么去做的呢?它需要指定要连接的.obj文件,我需要怎么样给给指定那个文件呢?谁能帮我吗?</P>
问题补充: 一楼那位deerchao你的答案在控制台下可以捕获到出错信息,非常了不起了。但是我在用控件(比如用一个Button,在它的单击事件里输入那个代码)就不能捕获,请问在控件里的事件里要怎么用啊?急!!!!
jackiejiao的主页 jackiejiao | 初学一级 | 园豆:0
提问于:2008-03-23 22:41
< >
分享
最佳答案
0
你的问题可以分为两个: 1,如何使用C#调用命令行工具,给它输入命令行参数,并获取输出信息; 2,如何使用masm.exe和link.exe这两个命令行工具. 第一个问题你可以参考一下这样的代码: using System; using System.Diagnostics; namespace ProcessDemo { class Program { [STAThread] static void Main(string[] args) { ProcessStartInfo info; Process proc; string result; //第一个参数是要调用的程序的路径 //第二个参数是要传给它的参数 //这里显示的是调用我的电脑上的C#编译器 info=new ProcessStartInfo(@"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe", @"c:\aaa.cs /target:exe"); //说明我们要捕获程序的输出信息 info.RedirectStandardOutput = true; //为了捕获输出信息,必须设置这个属性为false info.UseShellExecute=false; //设置要调用的程序的工作目录(当前目录) info.WorkingDirectory=@"C:\"; //隐藏cmd窗口的显示 info.WindowStyle=ProcessWindowStyle.Hidden; //运行该程序 proc=Process.Start(info); //获取程序的输出 result=proc.StandardOutput.ReadToEnd(); Console.WriteLine("输出信息是:"); //显示调用的程序往控制台窗口输出的信息 Console.WriteLine(result); } } } 获取屏幕输出之后,你可能还需要判断它是不是给出了一个/几个错误提示,或者警告等等.这时你可以先尝试在cmd窗口下通过命令行使用这(两)个工具,找出出错信息文本的规律,然后使用正则表达式来进行匹配.如果不太熟悉正则表达式,可以看一下"正则表达式30分钟教程",随便搜一下就能找到了. 第二个问题你就得看相关的帮助文档了. 你也可以试一下Dos下的通用帮助命令参数: masm /? 或 masm /help link.exe也是一样.
deerchao | 大侠五级 |园豆:8367 | 2008-03-24 02:08
其他回答(1)
0
我个人虽说是个菜鸟。不过我想的是。如果要做这样的软件 调用的不应该是 Masm 这个工具吧。 具体的应该是自己去写这些东西吧。如果机器上没有Masm 那你就得 自己去装 或者随软件一起安装,那如果用户不小小 。这个Masm不好用了。则你的 程序也就不能用了吧。 虽说的有点。不过还是个菜鸟。想的是有些太。。。
二十二号同学 | 园豆:790 (小虾三级) | 2008-03-26 08:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册