2011-09-28 55 views
2

我正在使用一個Windows窗體,並試圖將一個字符串傳遞給一個VBScript。該程序要求用戶選擇一個文件夾,我試圖採取文件夾選擇並將其傳遞給vbscript。傳遞一個C#字符串到VB腳本

C#代碼:

String SelectedFolder = @"C:\Users"; 

     folderBrowserDialog1.SelectedPath = SelectedFolder; 
     if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) 
      //Set selectedFolder equal to the folder that was choosen 
      SelectedFolder = folderBrowserDialog1.SelectedPath; 
    //Call VBScript 
    System.Diagnostics.Process.Start(".vbsPath"); 

的VBScript:

TargetFolder = Request.QueryString("SelectedFolder") 
Set objShell = CreateObject("Shell.Application") 
Set objFolder = objShell.Namespace(TargetFolder) 
Set colItems = objFolder.Items 
For Each objItem in colItems 
objItem.InvokeVerbEx("Print") 
Next 

任何幫助將不勝感激。謝謝

+1

的Request.QueryString?所以你想要傳遞字符串到一個經典的asp頁面作爲一個url參數寫在vbscript中? –

+0

對不起,我對vbscript很陌生,一直在尋找一種訪問字符串的方法; Request.QueryString是我發現的唯一看起來像可能工作但沒有的東西。有沒有辦法將C#字符串傳遞給VBscript? – dhk

回答

1

C#側

使用Process.Start overload that accepts command-line parameters

System.Diagnostics.Process.Start("C:\path\to\my.vbs", selectedFolder); 

如果selectedFolder可以包含空格(這可能會發生),您應該將引數括在引號中。

System.Diagnostics.Process.Start("C:\path\to\my.vbs", 
    "\"" + selectedFolder + "\""); 

事實上,如果路徑可以包含引號和/或尾隨反斜槓,逃避變得複雜多了,看到這些問題(和其他人)的詳細信息:Escape command line arguments in c#Passing command-line arguments in C#


的VBScript側

在您的VBScript中,讀取第一個命令行參數:

targetFolder = WScript.Arguments.Item(0) 
+0

現在就試試看。非常感謝您的幫助! – dhk

+0

很棒!感謝您對此的幫助! – dhk

+0

@dhk:不客氣!不要忘了點擊我答案旁邊的複選標記,以便其他人知道這個問題已經得到解答。 – Heinzi

0

您可以將字符串寫入兩組代碼均可訪問的文件或數據庫中。這樣,你使用哪種編程語言都無所謂,例如,可能是C#到PHP。

寫入文件:

string content = "folder=" + folder; 
System.IO.StreamWriter file = new System.IO.StreamWriter(@"c:\config.txt"); 
file.WriteLine(content); 
file.Close(); 

讀文件:

System.IO.StreamReader file = new System.IO.StreamReader(@"c:\config.txt"); 
string content = file.ReadToEnd(); 
// extract value of folder setting here 
file.Close(); 

(當然,閱讀將需要在VB中,但將是非常相似的。注意:代碼基於:MSDN Example

0

從VBScript到C#來回添加了很多複雜性。如果可能的話,選擇其中一個真的會更容易。

你可以在C#中做任何你可以在VBScript中使用的東西。 (你如何做它可能是不同的,但你可以完成所有相同的任務 - 文件訪問,數據庫訪問等)。如果可行,那麼使用C#可能會更好。

我在這裏根據問題的上下文做了一些猜測,但我試圖在我自己的頭上回答爲什麼你想這樣做,而我唯一能想到的就是是你不知道如何在VBScript中顯示一個文件夾對話框,所以你正在試圖在C#中做到這一點。那是對的嗎?

如果是這樣,您可以顯示在VBScript中的一個文件夾對話框如下所示:http://www.robvanderwoude.com/vbstech_ui_browsefolder.php

+0

感謝您的回覆,我試圖循環瀏覽文件夾中的每個文件並打印它們,我知道它可以在VB.net中完成,但是我無法在C#.net中找到相應的文件。現在回顧一下,我應該以不同的方式說出這個問題(對不起,我對這個網站來說很陌生)。 – dhk

相關問題