0
我正在執行c#中的代碼來檢查用戶的真實性.vbs文件。我傳遞用戶名和密碼值,並在登錄時單擊.vbs將運行並驗證用戶。如果用戶不是真實的,那麼vbs中的函數會返回一個值,那麼我如何在c#中的代碼中獲取該值,並使用它在應用程序的UI中顯示正確的錯誤消息。 請幫助..從c#中的vbscript函數返回一個值#
我正在執行c#中的代碼來檢查用戶的真實性.vbs文件。我傳遞用戶名和密碼值,並在登錄時單擊.vbs將運行並驗證用戶。如果用戶不是真實的,那麼vbs中的函數會返回一個值,那麼我如何在c#中的代碼中獲取該值,並使用它在應用程序的UI中顯示正確的錯誤消息。 請幫助..從c#中的vbscript函數返回一個值#
並不是提供產品代碼,而是要表明
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。
你如何運行VBS?你能解釋一些代碼來澄清? –
Process.Start(「Execute.vbs」);我正在執行vbs文件。我現在需要的是將uname和pwd的值從winform UI傳遞到Execute中,並且該函數將返回一個字符串值,我必須再次在UI中顯示它。 – user1909204