我正在尝试在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:我找到了另一个解决我的问题的解决方案而不使用管道,所以我的问题有点过时,但我不知道如何处理它。
答案 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