尝试使用VBScript创建命名管道时出错

时间:2013-09-02 16:51:58

标签: windows-7 vbscript named-pipes

我正在尝试在win7上使用VBScript创建命名管道。 这是我的代码(来自there):

Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("\\.\pipe\PipeName", True)
a.WriteLine("This is a test.")
a.Close

但是我收到了一个错误(手动翻译,所以可能不准确):

test.vbs(2, 1) Microsoft VBScript runtime error: File not found

与普通文本文件相同的代码可以正常工作:

Set a = fs.CreateTextFile(".\\PipeName", True)

但是,当我试图逃避反斜杠时:

Set a = fs.CreateTextFile("\\\\.\\pipe\\PipeName", True)

我得到了:

test.vbs(2, 1) Microsoft VBScript runtime error: Path not found

UPD:我以管理员身份运行脚本。

UPD2:我找到了另一个解决我的问题的解决方案而不使用管道,所以我的问题有点过时,但我不知道如何处理它。

2 个答案:

答案 0 :(得分:2)

您是否创建了名为' PipeName&#39 ;?的命名管道服务器?这段代码适合我(我将我的管道命名为“HelloWorld'”):

C#服务器:

static void Main(string[] args)
{
    using (var pipe = new NamedPipeServerStream("HelloWorld"))
    {
        pipe.WaitForConnection();
        StreamReader reader = new StreamReader(pipe);
        var line = reader.ReadLine();
        Console.WriteLine(line);
    }
    Console.ReadLine();
}

VBScript客户端:

Dim fs, pipe
Set fs = CreateObject("Scripting.FileSystemObject")
Set pipe = fs.OpenTextFile("\\.\pipe\HelloWorld", 8, False, 0)
pipe.WriteLine("This is my message")
pipe.Close

答案 1 :(得分:0)

我尝试使用VBScript中的命名管道。我无法通过fso.CreateTextFile("\\.\pipe\MyPipe")创建命名管道。

但是我成功连接了VBScript与经典应用程序创建的Pipe:

管道是由这样的代码(pascal)创建的:

procedure OpenTestPipe;

var
 i,hOut: Integer;

begin

  hOut:=CreateNamedPipe('\\.\pipe\Test.htm',PIPE_ACCESS_OUTBOUND,PIPE_TYPE_BYTE,PIPE_UNLIMITED_INSTANCES,1024,1024,NMPWAIT_USE_DEFAULT_WAIT,nil);

  i:=FileWrite(hOut,'Hello'#13#10,7);

MessageBox(0,'Pipe is opened','Pipe sample',0);

  FileClose(hOut);

end;

当显示MessageBox时,我打开了VBScript

Set fso = CreateObject("Scripting.FileSystemObject")

MsgBox fso.OpenTextFile("\\.\pipe\test.htm",1).readLine

收到消息Hello