我调用一个test.exe文件,传递一个参数,如 I am a chinese
在dos 里运行结果为
....
+--------Ost------+
+-SX-+ +--Dsu------+
| | | |
I.p am.v a chinese[?].n
......
可是在程序里运行时,接受到的值为空,为什么?还有,我应该用什么类型的值接受运行的结果,用string 类型是错误的。最重要的一点,我要对接收到的结果进行这样的操作:当鼠标停在SX 上时,显示‘主谓关系‘(具体什么关系忘了),当鼠标停在dsu 上时,显示‘主宾关系‘,(还有好多,就是分析句子结构),这怎么实现阿?大哥们帮帮忙,我就这么点分了,请见谅?
调用test.exe的代码为:
string fanyi = this.TextBox1.Text.Trim().ToString();
System.Diagnostics.ProcessStartInfo Info = new System.Diagnostics.ProcessStartInfo( "C:\\dic\\test.exe ");
// Info.WorkingDirectory = "C:\\Inetpub\\wwwroot\\lianxi ";
Info.UseShellExecute = false;
Info.RedirectStandardInput = true;
Info.RedirectStandardOutput = true;
Info.RedirectStandardError = true;
Info.CreateNoWindow = true;
System.Diagnostics.Process p ;
try
{
p = new Process();
p.StartInfo=Info;
p.StartInfo.Arguments=fanyi;
p.Start();
//string strOutput = p.StandardOutput.ReadToEnd();
p.WaitForExit();
p.Close();
this.Label1.Text=strOutput;
}
catch(Exception ee)
{
Response.Write( "系统找不到指定的程序文件: "+ ee.Message);
return ;
}
------解决方案--------------------------------------------------------
语法分析在编译原理的教程中都说提到,所以分析目标不同,但你可以去借鉴下它的思想。但这块功能应该不是一下子就能搞出来的。
至于控制台程序运行的结果传送到asp.net的程序中需要用到控制台管道操作,这个你去搜索一下管道操作或者asp.net 管道操作应该能查到吧。我2年前写那个程序的时候就是搜到管道操作的例子的。
------解决方案--------------------------------------------------------
using System.Diagnostics;
Process.Start( "C:\\dic\\test.exe ");
这样就够了吧!test.exe不是已经做了所有的工作了吗?
------解决方案--------------------------------------------------------
SX 是什么? 按钮的话,就加个提示,或鼠标停留事件