Autor |
Beitrag |
recall
      
Beiträge: 449
|
Verfasst: So 03.07.05 07:39
Hallo,
Ich will einen virtuellen Druckertreiber schreiben. Ihr kennt vielleicht so einen "PrintToPDF" o.ä.
Ich möchte also einen Drucker in der Auswahl haben, wo die Daten an eine exe von mir geschickt werden.
Oder muss ich das anders lösen ?
Ich habe nämlich so gut wie keine Ahnung davon
In welchem Format kommen denn die Daten an ? ps ?
Wäre schön wenn irgendwer IRGENDwelche Informationen für mich hätte.
Viele Grüße.
|
|
maxk
      
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: So 03.07.05 09:35
Also, wennn du einen Treiber schreiben willst, solltest du erstmal auf C umsteigen oder den wirklich komplizieren Delphiweg gehen. Ich würde es anders machen. Schreibe dir ein Programm, dass auf einem TCP Port lauscht und dort einen IPP Server bereitstellt. Das Protokoll ist gut protokolliert und für einfaches Drucken sind nicht soo viele Programmzeilen nötig. Du erhälst die Daten je nach Druckertreiber, den du in Windows auswählst. Ich habe für meinen virtuellen IPP Drucker einen Postscriptdruckertreiber gewählt. Das funktioniert wirklich gut und ist auf jeden Fall einfacher als einen Treiber zu schreiben.
Gruß,
maxk
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
|
|
recall 
      
Beiträge: 449
|
Verfasst: Mo 04.07.05 11:37
Danke für deine Antwort, die Lösung hört sich gut an.
Aber leider habe ich keine Ahnung, wo ich das Protokoll herkriegen soll (google ich weiß...).
Hast du vll. noch eine Seite, die du empfehlen kannst, ein tut oder ähnliches ?
Wenn du das schon geschrieben hast (oder sowas ähnliches), könntest du mir den codeteil schicken ?
Wie registriere ich denn den TCP-Server als Drucker ? Ich will ja, dass der User in einem beliebigen Programm
auf drucken gehen kann und meinen virtuellen Treiber auswählen kann !
Viele Grüße.
|
|
maxk
      
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: Mo 04.07.05 14:24
Ab Windows 2000 ist es Möglich einen Netzwerkdrucker hinzuzufügen, der via IPP angesprochen wird. Alle anderen Windowsversionen benötigen Updates. Der fertige Drucker erscheint dann als Netzwerkdrucker in jeder Anwendung und du kannst ganz normal drauf drucken. Mit Treiberprogrammierung hat das dann aber nix mehr zu tun
IPP ist ein gut dokumentiertes Protokoll, sodass ein Blick in die ENTSPRECHENDE RFC helfen sollte. Ich habe mal ein Programm für meine Schule geschrieben, dass unseren für unseren Onlinevertretungsplan (darum OVP) zuständig sein sollte - leider gab es Probleme auf Grund unserer Netzwerkstruktur, so dass das Programm nie wirklich benutzt wurde. Dann hat es jetzt doch noch einen Sinn
Gruß,
maxk
Einloggen, um Attachments anzusehen!
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
|
|
recall 
      
Beiträge: 449
|
Verfasst: Di 05.07.05 09:15
Tausend Dank für die umfassende Antwort.
Das Programm hilft mir echt weiter 
|
|
recall 
      
Beiträge: 449
|
Verfasst: Mi 06.07.05 10:47
hmmm... vielleicht war ich zu voreilig.
Ich krieg es nicht hin, mit dem Programm etwas zu drucken.
Erstmal hab' ich einen neuen Drucker (TCP/IP Port 631) hinzugefügt. Treiber: Windows Text.
Dann habe ich die .conf-Datei angepasst, so dass er mir eine Datei ausgeben soll.
Die Daten werden erst an den Spooler geschickt, aber auch "direkt an den Treiber schicken"
hat nix geholfen.
Wenn ich z.B. in Notepad dann etwas auf dem Drucker (Vertretungsplandrucker) drucke, passiert nichts !
Ich hab mal Haltepunkte gesetzt, aber irgendwie wird die DoExecute-Routine nicht aufgerufen,
wenn ich auf drucken gehe. Ich denke mal, das liegt an meinen Einstellungen vom Drucker !?
Was mache ich falsch ?
Viele Grüße.
P.S.: Kannst du mir
Delphi-Quelltext 1: 2: 3: 4:
| while GetMessage(Msg,0,0,0) do begin Translatemessage(Msg); Dispatchmessage(Msg); end; | erklären ?
Und du meintest noch:
Zitat: | Ab Windows 2000 ist es Möglich einen Netzwerkdrucker hinzuzufügen, der via IPP angesprochen wird. Alle anderen Windowsversionen benötigen Updates. |
Daher habe ich versucht, den Vertretungsplandrucker als Netzwerkdrucker hinzuzufügen. Der wird aber nicht gefunden !?
Und was meinst du mit "die älteren Versionen müssen upgedatet werden" ? Wie upgedatet ?
Vielen Dank im voraus 
|
|
maxk
      
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: Mi 06.07.05 11:24
IPP wird seit Windows 2000 unterstützt. Für die anderen Windowsversionen (das habe ich jedenfalls gelesen) gibt es Patches von Microsoft, die Windows das neue Drucksystem beibringen. Wie genau das geht, kann ich dir nicht sagen, da ich mich damit nicht weiter beschäftigen musste.
Delphi-Quelltext 1: 2: 3: 4:
| while GetMessage(Msg,0,0,0) do begin Translatemessage(Msg); Dispatchmessage(Msg); end; | Sorgt dafür, dass die Anwendung solange offen bleibt, bis sie die Nachricht erhält, dass sie geschlossen werden soll. Sonst würde die Anwendung gleich nachdem Öffnen wieder zu gehen. Es ist im Prinzip das Selbe wie: while not Application.Terminated do Application.HandleMessage;
Zitat: | Ich hab mal Haltepunkte gesetzt, aber irgendwie wird die DoExecute-Routine nicht aufgerufen, wenn ich auf drucken gehe |
Das hört sich nicht gut an. Wie hast du den Drucker in Windows hinzugefügt? Neuer Drucker/Netzwerkdrucker/"Verbindung mit Drucker in Heimatnetz (URL)" => localhost:631/printers/default?
Windows sollte dabei eigentlich automatisch den Namen des Druckers ermitteln können, wobei DoExecute aufgerufen wird. Hast du mal versucht im Browser localhost:631/ zu öffnen? Normalerweise muss der Drucker auch nicht weiter konfiguriert werden! Ich habe es mit dem Canon CP660PS Treiber probiert und es hat auch Anhieb funktioniert. Die .conf sollte wie folgt aussehen: Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| PrinterName=Vertretungsplandrucker
# Wenn es Probleme gibt, erstmal alles erlauben! AllowLocalOnly=1
# Sollen die Druckaufträge als Datei gespeichert werden (1=Ja, 0=Nein) SaveJob=1 SaveJob.Filename=C:\Test.prn
# Upload brauchen wir nicht! UploadJob=0 UploadJob.Host= UploadJob.URL= UploadJob.UploadPosts= UploadJob.UploadJobPostName= Proxy=0 Proxy.Host= |
Gruß,
maxk
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
|
|
recall 
      
Beiträge: 449
|
Verfasst: Mi 06.07.05 19:13
hehe, die einfachsten Fehler sind oft die dümmsten
ich habe localhost:631/printers/default? und nicht http://localhost:631/printers/default? geschrieben, wie
es Windoof von mir erwartet hätte
OK Danke nochmal, jetzt klappt alles !
|
|
Muratxiv
      
Beiträge: 27
|
Verfasst: Fr 26.12.08 20:49
Hui, da hat einer vor 3,5 Jahren schon meine Frage gestellt...
Sry, dass ich es nochmal ausgrabe, aber sonst kommt ja sowas wie "benutz bitte die Suchfunktion"
Ich hoffe ihr seid mir nicht böse deswegen.
Es ist so, dass ich mit einem Freund aus Fischertechnik eine Fräse gebaut habe. Diese lässt sich auch schon mit einem schönen, selbst geschriebenen Delphi Programm ansteuern.
Jetzt würde ich nur gerne die Platinen, die z.B. mit SprintLayout erstellt werden direkt drucken/fräsen. Also habe ich mir gedacht, wäre es am besten, wenn man einen viruellen Drucker hätte, der von Windows verwaltet wird, und dann die Daten an ein (durch den Druckbefehl gestartetes) Programm schickt, dass dann die Fräse ansteuert.
Ist es möglich, wie oben beschrieben, ein Delphi Programm zu schreiben, dass die Daten durch Drucken bekommt, ohne dass das Programm vorher schon läuft, sondern erst durch drucken gestartet wird?
Wenn ja, wie?
Dankeschön 
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Fr 26.12.08 21:32
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Muratxiv
      
Beiträge: 27
|
Verfasst: Sa 27.12.08 19:49
Redmon installiert und Druckertreiber von da: www.adobe.com/suppor...etail.jsp?ftpID=1502
Mein eigenes Programm wird bereits (beim Drucken) aufgerufen. Folgendes kann ich auch schon auslesen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| TEMP := GetEnvironmentVariable('TEMP'); REDMON_USER := GetEnvironmentVariable('REDMON_USER'); REDMON_DOCNAME := GetEnvironmentVariable('REDMON_DOCNAME'); REDMON_JOB := GetEnvironmentVariable('REDMON_JOB'); REDMON_MACHINE := GetEnvironmentVariable('REDMON_MACHINE'); REDMON_PRINTER := GetEnvironmentVariable('REDMON_PRINTER'); REDMON_PORT := GetEnvironmentVariable('REDMON_PORT'); REDMON_FILENAME :=GetEnvironmentVariable('REDMON_FILENAME'); REDMON_SESSIONID :=GetEnvironmentVariable('REDMON_SESSIONID'); |
Nur wie komme ich jetzt an die Druckdaten? Kann ich die dann noch in ein TImage laden, um anzuzeigen, was gerade gefräst wird?
Habe schon gesucht und iwas mit stdinput gefunden, aber leider nicht genauer. Könnte mir bitte nochmal jemand helfen
Danke 
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Sa 27.12.08 19:59
Glaub die Daten kannst Du von der Standardeingabe lesen. Das ist das, was sonst direkt an den Drucker gehen würde ...
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Muratxiv
      
Beiträge: 27
|
Verfasst: So 28.12.08 18:04
Hmmm - klappt noch nicht 100%...
So werte ich das Ergebnis aus (in Formcreate):
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| if ParamCount <> 1 then exit; SetLineBreakStyle(Input, tlbsLF); while not eof(Input) do begin read(Input, s); memo2.lines.Add(s); Reset(Input); end; |
Wenn ich von Notepad aus "123" drucken will erscheint folgendes im Memo:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144:
| %!PS-Adobe-3.0 m %%DocumentSuppliedResources: (atend) %%LanguageLevel: 2 ults g def/setpacking where{pop false if dup length 6 mul/tx exch def/ty 10 def currentpoint/toy exch ineto tx 0 ch moveto 0 -10 rmoveto}def/=={/cp 0 def print{dup length cp add rmargin gt{nl/cp 0 def}if dup length cp add/cp )tprint}readonly def atortype{(--)tprint =string cvs tprint(-- )tprint} nary- )tprint}readonly def/nulltype{pop(-null- )tprint}readonly def p(-savelevel- ) eadonly def/stringtype{dup rcheck{(\()tprint dup xcheck{({)tprint{typeprint}forall(})tprint}{([)tprint{typeprint}forall(]) y def/packedarraytype{dup pop(-packedarray- )tprint}ifelse}readonly def/courier egin page}if initgraphics courier setfont restore 2 vmreclaim}if vmstatus exch pop exch pop PrtVMMsg}{ oad prnt et exec(%%[ Error: )print errorname stemdict put dup 4 $brkpage put bind readonly put/currentpacking Resource talErrorIf{{initgraphics findfont 1 index 0 eq{exch pop}{dup ng tfont counttomark 3 div ns binary data, but your printer requires a)100 500 eturn to the driver's property sheets, turn off the use of)100 470 @)0 get 64 eq er, als auf diesem Drucker vorhanden ist. ) en Sie dann erneut:) daß auf der Registerkarte "Geräteeinstellungen" die Angabe für "Verfügbarer Postscript-Speicher" korrekt ist.) en Sie die Anzahl der im Dokument verwendeten Schriftarten. ) 15 425 12 /VM?{pop}bind def}{/VM? userdict/PrtVMMsg def/,/load load d/~/exch , d/?/ifelse , d/!/pop , d/`/begin , d/^ d/M/moveto , d/- rc , d/An/arcn , d/A/ashow , d/D/awidthshow , d/C -M setdash , d/S/show , d/LH/showpage el 2 ge{pop true}if}if d L2?{/xS/xshow , d/yS/yshow , d/zS/xyshow , n/bind ld/lw/Lw ld x setmatrix[/TextInit/GraphInit/UtilsInit /Pscript_Win_Data where{!}{U/Pscript_Win_Data & put}?/ADO_mxRot ~ dict @ ` put , d/resume{` Pscript_Win_Data `}b U ` @ lucas eq{! exit}if}loop countdictstack ~ sub @ 0 gt{{E}repeat} und 0.25 add ~ {1}{-1}?}?}?}b/nonzero_dsnap{dtransform }b/irp{4 -2 $ + +S fx 4 2 $ M 1 ^ 0 - 0 ~ - neg 0 -}b/rp{4 2 $ M 1 ^ 0 ve put}if U/DefIf_bool finefont}{!}?}b/UDR{L2?{undefineresource}{! !}?}b t 0 1 255{1 ^ ~/.notdef put}for d @/XUID eq ~/UIDBase eq or or{! !}{d}?}forall/CDevProc ~ d/Metrics2 ![~]composefont !} @ 0 ge{1 sub 0.5}{1 add -0.5}? 3 -1 $ @ 0 ge snap + +S fx rf}b/rs/rectstroke , d/rc/rectclip , d/UtilsInit{currentglobal{F y d/colspABC/DeviceRGB d olorRendering/ProcSet resourcestatus{! ! T}{F}?}{F}? { one}if}{!/none}?}bn ltColorRendering*){cvn exit}127 string ! !}?}if/buildcrdname{/ColorRendering/ProcSet findresource ` ne}if(.) 5{~ 1 ^ cvs length 1 ^ length 1 ^ sub ering defineresource !}b/findcolorrendering where{!}{
ndresource nfo get/GlyphNames2HostCode get `}bind d s2Unicode 16 dict d/GlyphNames2HostCode 16 dict d}bind d get ` d ]%%)= flush end PDFeature: JobTimeout 0 params}{statusdict/setjobtimeout get exec}ifelse itTimeout 300 atusdict/waittimeout 3 -1 roll put}ifelse
ebegin{ 6… 819 geSetup file Pscript_T3Hdr 5.0 0 6andT32? exch def/T32DefSBCMap{/CIDInit/ProcSet istry(Adobe)def/Ordering(Identity1)def/Supplement 0 def end def/CMapType 0 spacerange 1 begincidrange andT32?{T32DefSBCMap}def/T32RsrcBegin{Is2016andT32?{ dT32? findfont dup 5 2 roll 1 index -1 roll/CharProcs get 3 1 roll put dup/Encoding get 5 -1 roll andT32?{ xch pop exch pop/CIDFontType 4 def pop pop}{T32DefSBCMap}ifelse 5 -1 roll[exch]composefont dup t end ntT3{11 dict begin pop/FontType 3 def s/.notdef{}put/Metrics 257 dict def Metrics/.notdef 3 -1 roll put t begin/char exch tdef get aload pop}ifelse setcachedevice begin xec end}def currentdict end definefont pop}bind def/GreNewFont{Is2016andT32? Is2016andT32?{/BitmapFontInit font end}{pop UDF}ifelse}bind def ch /.notdef put} for 2 0 ] ðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀ) 2 ] 0 0] ddT3T32Char x 26 true [1 0 0 1 -3 26 ] 0 0] 00 AddT3T32Char /Pscript_Windows_Font & d/TextInitialised? T d th add dict `{1 ^/FID ne{d}{! !}?}forall & E}b/EncodeDict 11 dict d/bullets get/Encoding ~ 3 ^/0 eq{& 7 1 $ findfont ~{@/Encoding get @ StandardEncoding eq{! T}{ get FDV 2 copy get @ length array copy t_Windows_Font 3 1 $ put}b/sLT{: Lw -M currentpoint snap M 0 - 0 /sW null d/sSU{N 0 M}b/sRxy{: matrix astore concat 0 0 M}b/eR/; , d tchAndFamily ~ d/WinCharSet ~ d/OrigFontType ~ d/OrigFontStyle ~ d nt Encoding ~ get ~ d}for & E e 0 d/FMapType 2 d/FontMatrix[1 0 0 1 0 0]d 1 ^ 254 add 255 /FDepVector th 1 add string}{100 lt{FontName length 2 erval @ 3 -1 $ @ 4 1 $ 3 string cvs FontName length ~ putinterval cvn 1 ^ r 3 1 $ put}for & @ E $ neg put 5 0 put 90 matrix R matrix concatmatrix dfont 1 ^ ~ definefont Pscript_Windows_Font 3 1 $ put}b/UmF{L2? r get{/FontName F0 [‹ 0 24 0 ] þ [25 0 5 -30 21 1 ] ) 26 true [1 0 0 1 -3 26 ] 0 0] 0 AddT3T32Char ð ) %BoundingBox: 18 23 577 819 5.0 0 ocset Pscript_T3Hdr 5.0 0 1 |
Wenn ich das als .ps abspeichere und in PDF umwandeln lasse, erscheint nur eine weiße Seite.
Wie schaffe ich es, erstmal überhaupt die Datei zu bekommen und dann diese noch in ein TImage zu laden?
(Im Anhang Bilder von den Druckereinstellungen)
Zitat: |
img1.jpg
img2.jpg
img3.jpg
|
Einloggen, um Attachments anzusehen!
|
|
Reinhard Kern
      
Beiträge: 591
Erhaltene Danke: 14
|
Verfasst: So 28.12.08 20:40
|
|
Muratxiv
      
Beiträge: 27
|
Verfasst: Mo 29.12.08 17:28
Habe ich mir auch schon gedacht. Die Frage ist nur, woran dies liegt...
Ich vermute ja, da stimmt iwas mit meinem Programm nicht, also dass der Stream nicht richtig ausgewertet wird
Leider habe ich keine Ahnung was nicht stimmt - das entscheidende aus meinem Programm habe ich ja oben schon gepostet...
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mo 29.12.08 18:00
Versuch mal einen THandleStream und übergeb dem das Handle vom StdInput. Das bekommst Du aus dem StartupInformation-Block über die WinAPI.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Muratxiv
      
Beiträge: 27
|
Verfasst: Di 30.12.08 14:49
So, jetzt wird gar kein Stream mehr abgegriffen. Könnte mir jemand sagen, was falsch an meinem Programm ist und eine korrigierte Version posten?
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36:
| procedure TForm1.FormCreate(Sender: TObject); var TEMP, REDMON_USER, REDMON_DOCNAME, REDMON_JOB, REDMON_MACHINE, REDMON_PRINTER, REDMON_PORT, REDMON_FILENAME, REDMON_SESSIONID: string; Stream: THandleStream; begin TEMP := GetEnvironmentVariable('TEMP'); REDMON_USER := GetEnvironmentVariable('REDMON_USER'); REDMON_DOCNAME := GetEnvironmentVariable('REDMON_DOCNAME'); REDMON_JOB := GetEnvironmentVariable('REDMON_JOB'); REDMON_MACHINE := GetEnvironmentVariable('REDMON_MACHINE'); REDMON_PRINTER := GetEnvironmentVariable('REDMON_PRINTER'); REDMON_PORT := GetEnvironmentVariable('REDMON_PORT'); REDMON_FILENAME :=GetEnvironmentVariable('REDMON_FILENAME'); REDMON_SESSIONID :=GetEnvironmentVariable('REDMON_SESSIONID'); Memo1.Lines.add(inttostr(ParamCount)); Memo1.Lines.Add(Temp); Memo1.Lines.Add(REDMON_USER); Memo1.Lines.Add(REDMON_DOCNAME); Memo1.Lines.Add(REDMON_JOB); Memo1.Lines.Add(REDMON_MACHINE); Memo1.Lines.Add(REDMON_PRINTER); Memo1.Lines.Add(REDMON_PORT); Memo1.Lines.Add(REDMON_FILENAME); Memo1.Lines.Add(REDMON_SESSIONID);
Stream := THandleStream.Create(GetStdHandle(STD_INPUT_HANDLE)); memo2.Lines.LoadFromStream(stream); stream.Free; end; |
memo2 bleibt leider leer, wenn ich den Drucker auf das Programm verweise und drucke 
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 30.12.08 14:54
Also ich weiß zwar nicht wie das läuft, aber ich vermute doch, dass man die Daten der Reihe nach übergeben bekommt, das merkt man ja auch, wenn z.B. ein Vorschauprogramm zuerst nur die erste Seite empfängt und dann den Rest langsam dazubekommt.
Müsste die Eingabe nicht mit Pipes verarbeitet werden können? Also ReadFile angewendet, bis False zurückgegeben wird?
// EDIT:
Wie das genau aussieht, weiß ich allerdings nicht. Also ob man vorher CreatePipe mit dem Handle benutzen muss oder so.
Da müsste ich auch erst mir das mal anschauen.
Aber vielleicht kann dazu ja auch jemand direkt etwas sagen. 
|
|
|