Thread overview | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
July 13, 2007 Reagan: CreateProcess()? | ||||
---|---|---|---|---|
| ||||
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? Thanks! |
July 13, 2007 Re: Reagan: CreateProcess()? | ||||
---|---|---|---|---|
| ||||
Posted in reply to okibi | 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 |
July 13, 2007 Re: Reagan: CreateProcess()? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Regan Heath | 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
|
July 13, 2007 Re: Reagan: CreateProcess()? | ||||
---|---|---|---|---|
| ||||
Posted in reply to okibi | okibi wrote:
> 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?
What are you running? Show me your code which uses Process.
Regan
|
July 13, 2007 Re: Reagan: CreateProcess()? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Regan Heath | Well, I'm trying to open notepad. I just used your code and replace the Process command being issued.
Thanks!
Regan Heath Wrote:
> okibi wrote:
> > 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?
>
>
> What are you running? Show me your code which uses Process.
>
> Regan
|
July 13, 2007 Re: Reagan: CreateProcess()? | ||||
---|---|---|---|---|
| ||||
Posted in reply to okibi | okibi wrote: > Well, I'm trying to open notepad. I just used your code and replace the Process command being issued. The idea was that you do something like: Process notepad = new Process(r"c:\windows\notepad.exe"); but when I did that I got a few more char[]/string errors, fixing those gives me an application error for notepad, not sure why (probably it expects certain enviroment variables or something, who knows) So, I don't get the same results as you :( I suggest you look at Tango, try and use the Process class in there. I'm busy this weekend otherwise I'd try and tidy it up and get it working. I might have a look at it next week some time. Till then I'm afraid you're on your own. Regan |
July 16, 2007 Re: Reagan: CreateProcess()? | ||||
---|---|---|---|---|
| ||||
Posted in reply to okibi | 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? > > Thanks! Here you go: Windows info: http://paste.dprogramming.com/dptyg7pt.php Create Process: http://paste.dprogramming.com/dpsgva0j.php You can use execProcess or my ChildProcesses class. ~ Clay |
July 24, 2007 Re: Reagan: CreateProcess()? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Clay Smith | The globals module is missing. Where can I find it?
Thanks!
Clay Smith 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?
> >
> > Thanks!
>
> Here you go:
>
> Windows info:
> http://paste.dprogramming.com/dptyg7pt.php
>
> Create Process:
> http://paste.dprogramming.com/dpsgva0j.php
>
> You can use execProcess or my ChildProcesses class.
>
> ~ Clay
|
July 25, 2007 Re: Reagan: CreateProcess()? | ||||
---|---|---|---|---|
| ||||
Posted in reply to okibi | Well, I can take out the import and comment out off the directory settings and the function works, however I need to give the full path of the command.
However, it won't let me run batch scripts through the function at all. And for commands that take arguments, I seem to need to send it through a cmd prompt, which opens a window obviously. The only thing that really helped was the ability to choose whether to wait for the exit code or not.
Is the fact that the directory stuff is missing as well as the globals file causing this issue?
thanks!
okibi Wrote:
> The globals module is missing. Where can I find it?
>
> Thanks!
>
> Clay Smith 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?
> > >
> > > Thanks!
> >
> > Here you go:
> >
> > Windows info:
> > http://paste.dprogramming.com/dptyg7pt.php
> >
> > Create Process:
> > http://paste.dprogramming.com/dpsgva0j.php
> >
> > You can use execProcess or my ChildProcesses class.
> >
> > ~ Clay
>
|
September 05, 2007 Re: Reagan: CreateProcess()? | ||||
---|---|---|---|---|
| ||||
Posted in reply to okibi | The globals file is not necessary, just replace globals.programDir with the location of the program directory as a char[].
execProcess(char[] program, char[] args, bool requireExitCode=true)
you don't need to run from cmd prompt to set program arguments, just do
execProcess("C:\svn\svn.exe", "co svn.dsource.org");
For batch scripts, use C:\systemwhatever\cmd.exe as program name and batch.bat as the argument, that is supposed to work.
~ Clay
okibi wrote:
> Well, I can take out the import and comment out off the directory settings and the function works, however I need to give the full path of the command.
>
> However, it won't let me run batch scripts through the function at all. And for commands that take arguments, I seem to need to send it through a cmd prompt, which opens a window obviously. The only thing that really helped was the ability to choose whether to wait for the exit code or not.
>
> Is the fact that the directory stuff is missing as well as the globals file causing this issue?
>
> thanks!
>
> okibi Wrote:
>
>> The globals module is missing. Where can I find it?
>>
>> Thanks!
>>
>> Clay Smith 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?
>>>>
>>>> Thanks!
>>> Here you go:
>>>
>>> Windows info:
>>> http://paste.dprogramming.com/dptyg7pt.php
>>>
>>> Create Process:
>>> http://paste.dprogramming.com/dpsgva0j.php
>>>
>>> You can use execProcess or my ChildProcesses class.
>>>
>>> ~ Clay
>
|
Copyright © 1999-2021 by the D Language Foundation