2014-11-22 47 views
0

我想在用户单击Windows 8应用程序中的“Enter”按钮时执行prolog文件。我可以执行一个单独的序言文件,还是需要在我的C#代码中写入序言代码。我正在使用visual studio 2013和SWI prolog。C#和Prolog集成

我想这样做,因为我正在开发一个应用程序,它将一个算术方程作为用户输入,使用prolog来解决它并输出答案。

+0

看看http://stackoverflow.com/questions/181855/integrating-prolog-with-c-sharp – metaphori 2014-11-24 08:37:56

回答

0

我推荐使用常规的Windows桌面环境而不是Windows应用商店(我在问题标签中看到)。 Windows商店应用程序有很多限制,以防止人们创建恶意应用程序,这会阻止您启动Prolog应用程序。

但是对于桌面应用程序,您可以在自己的进程中启动Prolog解释器,并将标准输入和标准输出流重定向。然后,您可以通过输入流将内容发送到Prolog进程,并将Prolog进程的输出流转发到C#WinForms应用程序中的文本框。

该样品在MSDN显示了如何将进程的标准输出流重定向:

http://msdn.microsoft.com/en-us/library/system.diagnostics.process.standardoutput%28v=vs.110%29.aspx

并与一些小的改动,以满足您的需求:

 Process myProcess = new Process(); 
     ProcessStartInfo myProcessStartInfo = new ProcessStartInfo("prolog.exe", "arguments to the prolog process"); 
     myProcessStartInfo.UseShellExecute = false; 
     myProcessStartInfo.RedirectStandardOutput = true; 
     myProcess.StartInfo = myProcessStartInfo; 
     myProcess.Start(); 
     StreamReader myStreamReader = myProcess.StandardOutput; 
     // Read the standard output of the spawned process. 
     string myString = myStreamReader.ReadLine(); 
     Console.WriteLine(myString); 

你也可以创建一个可以加载到C#应用程序中的Prolog代码的DLL版本,但是这需要更多的工作,我怀疑是否有足够的好处来证明额外的工作。