2013-01-15 61 views
0

我正在執行c#中的代碼來檢查用戶的真實性.vbs文件。我傳遞用戶名和密碼值,並在登錄時單擊.vbs將運行並驗證用戶。如果用戶不是真實的,那麼vbs中的函數會返回一個值,那麼我如何在c#中的代碼中獲取該值,並使用它在應用程序的UI中顯示正確的錯誤消息。 請幫助..從c#中的vbscript函數返回一個值#

+0

你如何運行VBS?你能解釋一些代碼來澄清? –

+0

Process.Start(「Execute.vbs」);我正在執行vbs文件。我現在需要的是將uname和pwd的值從winform UI傳遞到Execute中,並且該函數將返回一個字符串值,我必須再次在UI中顯示它。 – user1909204

回答

1

並不是提供產品代碼,而是要表明

  1. 那/它是如何工作的原則「
  2. 你有哪些關鍵字/組件查找在文檔

demo.cs:

using System; 
using System.Diagnostics; 

namespace Demo 
{ 
    public class Demo 
    { 
     public static void Main(string [] args) { 
      string user = "nix"; 
      if (1 <= args.Length) {user = args[0];}; 
      string passw = "nix"; 
      if (2 <= args.Length) {passw = args[1];}; 
      string cscript = "cscript"; 
      string cmd = string.Format("\"..\\vbs\\auth.vbs\" {0} {1}", user, passw); 
      System.Console.WriteLine("{0} {1}", cscript, cmd); 

      Process process = new Process(); 
      process.StartInfo.UseShellExecute = false; 
      process.StartInfo.RedirectStandardOutput = true; 
      process.StartInfo.CreateNoWindow = true; 
      process.StartInfo.FileName = "cscript.exe"; 
      process.StartInfo.Arguments = cmd; 
      try { 
       process.Start(); 
       System.Console.WriteLine(process.StandardOutput.ReadToEnd()); 
       System.Console.WriteLine(process.ExitCode); 
      } catch (Exception ex) { 
       System.Console.WriteLine(ex.ToString()); 
      } 
     } 
    } 
} 

auth.vbs:

Option Explicit 

Dim nRet : nRet = 2 
If WScript.Arguments.Count = 2 Then 
    If "user" = WScript.Arguments(0) And "passw" = WScript.Arguments(1) Then 
     WScript.Echo "ok" 
     nRet = 0 
    Else 
     WScript.Echo "fail" 
     nRet = 1 
    End If 
Else 
    WScript.Echo "bad" 
End If 
WScript.Quit nRet 

輸出:

demo.exe 
cscript "..\vbs\auth.vbs" nix nix 
fail 

1 

demo.exe user passw 
cscript "..\vbs\auth.vbs" user passw 
ok 

0 

也許你可以忘記文字還原事情簡單化,僅使用.Exitcode。