Reagan: CreateProcess()?

okibi okibi at ratedo.com
Fri Jul 13 07:45:27 PDT 2007


Well, I can compile and use the code now, but it still makes that darn window pop up. Is there ANYWAY to keep the black window from popping up?

Thanks!

Regan Heath Wrote:

> okibi wrote:
> > Hey Reagan,
> > 
> > I took your suggestion about getting system() to run without a window by creating a CreateProcess(). I looked at your example on:
> > 
> > http://www.digitalmars.com/d/archives/digitalmars/D/29556.html
> > 
> > I can't get it to compile! I'm getting an error for expecting type ulong on line 107 in your pipestream.d file.
> > 
> > Any ideas?
> 
> Change seek to:
> 
> 		override ulong seek(long offset, SeekPos whence)
> 		{
> 			assertSeekable();
> 			return 0;
> 		}
> 
> The pipestream isn't seekable so it never returns.
> 
> After doing that you get a problem with:
> 
> 		HANDLE write = INVALID_HANDLE_VALUE;
> 		HANDLE read = INVALID_HANDLE_VALUE;
> 
> just remove the "= INVALID.." it's not really necessary as the 
> constructor always assigns values to these.
> 
> There are several string/char[] changes, eg.
> 
> 1)
> 
> class ProcessException : Exception
> {
> 	version(Windows) {
> 		this(string msg) { super(msg ~ ": " ~ sysErrorString(GetLastError())); }
> 	}
> 	version(linux) {	
> 		//for some reason getErrno does not link for me?
> 		this(string msg) { super(msg ~ ": " ~ 
> std.string.toString(strerror(getErrno()))); }
> 	}
> }
> 
> 2)
> 
> 	string readLine()
> 	{
> 		return pout.readLine();
> 	}
> 	
> 	string readError()
> 	{
> 		return perr.readLine();
> 	}
> 
> 	void writeLine(string line)
> 	{
> 		pin.writeLine(line);
> 	}
> 
> After that I think it should compile, I can't guarantee this code works 
> however ;)
> 
> Tango has a tango.sys.Pipe and tango.sys.Process which probably do very 
> similar stuff.
> 
> Regan



More information about the Digitalmars-d-learn mailing list