2014-11-22 77 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版本,但是這需要更多的工作,我懷疑是否有足夠的好處來證明額外的工作。