# Windows Pipe erzeugen



## Guest (30. Jan 2009)

Hallo,

 wie kann ich mit Java unter Windows eine PIPE erzeugen?

 Ich kann in eine PIPE schreiben, wenn sie schon existiert mit:


```
Writer fw = new FileWriter("\\\\.\\pipe\\tst_inp_pipe");
    w.write("Zwei Jäger treffen sich...");
```

 Ein createNewFile schlägt allerdings fehl:

```
File f = new File( "\\\\.\\pipe\\tst_inp_pipe" );
        f.createNewFile();
```


```
Exception in thread "main" java.io.IOException: Das System kann die angegebene Datei nicht finden
        at java.io.WinNTFileSystem.createFileExclusively(Native Method)
        at java.io.File.createNewFile(File.java:850)
        at tsva.jsmq.test.PipeTest.main(PipeTest.java:26)
Java Result: 1
```


----------



## ejones (30. Jan 2009)

der thread ist von mir (war nicht eingeloggt)


----------



## Leroy42 (30. Jan 2009)

Anonymous hat gesagt.:
			
		

> ```
> Writer fw = new FileWriter("\\\\.\\pipe\\tst_inp_pipe");
> ```



Was soll denn der Unsinn?  :shock:


----------



## Gast (30. Jan 2009)

Leroy42 hat gesagt.:
			
		

> Anonymous hat gesagt.:
> 
> 
> 
> ...


Was soll denn der Unsinn?  :shock:


----------



## HoaX (30. Jan 2009)

ich würde mal sagen garnicht - bzw nur mit jna/jni. zum erstellen einer pipe verwendest du sonst ja auch createNamedPipe und nicht createFile?!

@Leroy42: es geht darum: http://msdn.microsoft.com/en-us/library/aa365150(VS.85).aspx
einfach mal googlen wenn man nix weiß ...


----------



## ejones (2. Feb 2009)

okay, danke für die info.


----------



## slawaweis (2. Feb 2009)

Anonymous hat gesagt.:
			
		

> wie kann ich mit Java unter Windows eine PIPE erzeugen?


gleich vorweg, ich habe das folgende in so einem Fall nie ausprobiert, aber wie bei fast allen OS spezifischen Sachen:

Runtime.getRuntime().exec("cmd.exe ...");

Slawa


----------



## Gast2 (2. Feb 2009)

slawaweis hat gesagt.:
			
		

> Anonymous hat gesagt.:
> 
> 
> 
> ...


nein ... API des OS durchwühlen und JNI/JNA

hand, mogel


----------



## Leroy42 (2. Feb 2009)

HoaX hat gesagt.:
			
		

> @Leroy42: es geht darum: http://msdn.microsoft.com/en-us/library/aa365150(VS.85).aspx
> einfach mal googlen wenn man nix weiß ...



 :shock:


----------



## HoaX (2. Feb 2009)

mogel hat gesagt.:
			
		

> slawaweis hat gesagt.:
> 
> 
> 
> ...



naja, über rundll32.exe ließe sich das schon machen .... aber jni/jna is schöner. die api hab ich ja oben schon verlinkt.


----------



## ruutaiokwu (13. Mai 2011)

hallo zusammen,

*@HoaX: "naja, über rundll32.exe ließe sich das schon machen"*

hast du einen tipp, wie das geht?

der befehl *rundll32 kernel32.dll,CreatePipe* scheint eine anonyme pipe zu erstellen (geht auch so), für eine named pipe wäre scheinbar etwas in der art *rundll32 kernel32.dll,CreateNamedPipe "\\.\pipe\pipename",0,0,0,0,0,0,0* notwendig. (das letzte argument scheint optional zu sein  - CreateNamedPipe Function (Windows))

nur weiss ich nicht genau, in welchem format ich die parameter definieren soll (string & num. werte), erhalte immer diese windows-exception: 








weisst du, in welchem format man die parameter definieren muss? finde irgendwie (?) immer nur beispiele für rundll32.exe mit einem argument...

solange das nicht klar ist, kann ich kaum was machen / nachvollziehen, denn ich sehe ständig die gleiche ausname-messsagebox...


NACHTRAG: V01ver-HowTo Collection: HowTo: Use Named Pipes to Communicate Between Java and .Net Processes -> hier ist beschreiben, wie man eine (vorgängig kreierte) pipe mit java schreibt & liest. nur das *ERSTELLEN* scheint mit plattformneutralem java definitv nicht möglich zu sein...

grüsse, jan


----------



## HoaX (13. Mai 2011)

Ich hab kein Windows, aber auf dem von mir geposteten Link findest du ja Erläuterungen zu den Parametern. Einfach weng rumprobieren. Ansonsten nimm dich JNI, das schaut schwerer aus als es ist.


----------



## ruutaiokwu (13. Mai 2011)

weisst du wie es sich bei rundll32.exe mit dem parametern verhält? alles in anführungszeichen? oder nichts? nur strings? wenn ja, diese escapen? leerzeichen oder kommas zwischen den einzelnen parametern?

wie gesagt, finde im netz immer nur solche beispiele:

*rundll32.exe lib.dll,einstiegspunkt parameter1*

gruss, jan


----------

