2012-07-25 2 views
3

잘 작동하는 VBScript가 있습니다. 나는 cscript 프로그램으로 VBScript를 실행할 수있는 C# 프로그램이 있습니다.VBS를 C#에 포함하고 실행하는 방법은 무엇입니까?

VBS를 C# exe에 포함 시키면 하나의 단일 파일이되어 VBS 파일을 실행할 수 있습니다. 내장 된 VBScript 파일을 cscript에 인자로 전달하거나 내장 된 VBS 파일을 실행하는 다른 방법으로 전달할 방법이 있습니까?

+0

관련 : http://stackoverflow.com/questions/2409134/running-a-vbs-sub-from-c-sharp?rq=1 –

답변

5
Type scriptType = Type.GetTypeFromCLSID(Guid.Parse("0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC")); 

dynamic obj = Activator.CreateInstance(scriptType, false); 
obj.Language = "vbscript"; 
string vbscript = "msgbox(\"test\")"; 
obj.Eval(vbscript); 
+0

이 작업을 수행하는 WinForms 앱의 예제 : http : // cheeso .members.winisp.net/srcview.aspx? dir = script & file = ScriptHost.zip – Cheeso

+0

작동하도록 VBScript의 구문을 어떻게 포맷해야합니까? msgbox 예제가 작동하지만 VBScript 예약어로 스크립트를 실행하려고 할 때 구문 오류가 발생합니다. – Jack

+0

@Jack 작동하지 않는 * 작은 예를 게시 할 수 있습니까? –

3

또 다른 방법은 하위 과정을 통해 cscript.exe를 실행할 수 있다는 것입니다 : .NET 및 C#은 VBS 스크립트 매우 호환되는지

Process.Start("cscript.exe", "C:\\myscript.vbs"); 

그러나, 명심하십시오. VBS 코드를 C# 프로그램으로 직접 재 작성하는 것이 좋습니다.

+1

경로가없는 경우 어떻게 임베디드 리소스에서 작동합니까? 'Assembly.GetExecutingAssembly()를 사용하고 있습니다. .GetManifestResourceStream ("script.vbs")) – Jack

+0

Temp File에 리소스를 추출하고 Temp File로 CScript를 실행하십시오. 그런 다음 Temp 파일을 삭제 하시겠습니까? –

+1

@PaulFarry 분명히 내가 할 수는 있지만 파일을 노출시키지 않는 방법을 찾으려고합니다. – Jack

관련 문제