September 26, 2007
Firstly, this only works on Windows, which is ok as system() doesn't open a terminal window on Linux.

The problem is that I'm hitting a batch file. When I set the program to point to cmd.exe, it will cause a command prompt window to open to run the command, so back to square one.

Clay Smith Wrote:

> 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
> > 

September 26, 2007
okibi wrote:
> Firstly, this only works on Windows, which is ok as system() doesn't open a terminal window on Linux.
> 
> The problem is that I'm hitting a batch file. When I set the program to point to cmd.exe, it will cause a command prompt window to open to run the command, so back to square one.

What creation flags is it using?  CREATE_NO_WINDOW or DETACHED_PROCESS?
http://msdn2.microsoft.com/en-us/library/ms684863.aspx

Regan
September 26, 2007
Sorry, I'm not all too familiar with CreateProcess functions.

From what I can tell, it's doing a CREATE_NEW_CONSOLE. Changing it to CREATE_NO_WINDOW or DETACHED_PROCESS doesn't work.

Regan Heath Wrote:

> okibi wrote:
> > Firstly, this only works on Windows, which is ok as system() doesn't open a terminal window on Linux.
> > 
> > The problem is that I'm hitting a batch file. When I set the program to point to cmd.exe, it will cause a command prompt window to open to run the command, so back to square one.
> 
> What creation flags is it using?  CREATE_NO_WINDOW or DETACHED_PROCESS? http://msdn2.microsoft.com/en-us/library/ms684863.aspx
> 
> Regan

September 26, 2007
I take that back, CREATE_NO_WINDOW fails (undefined identifier) and DETACHED_PROCESS works, but the window still opens.

okibi Wrote:

> Sorry, I'm not all too familiar with CreateProcess functions.
> 
> From what I can tell, it's doing a CREATE_NEW_CONSOLE. Changing it to CREATE_NO_WINDOW or DETACHED_PROCESS doesn't work.
> 
> Regan Heath Wrote:
> 
> > okibi wrote:
> > > Firstly, this only works on Windows, which is ok as system() doesn't open a terminal window on Linux.
> > > 
> > > The problem is that I'm hitting a batch file. When I set the program to point to cmd.exe, it will cause a command prompt window to open to run the command, so back to square one.
> > 
> > What creation flags is it using?  CREATE_NO_WINDOW or DETACHED_PROCESS? http://msdn2.microsoft.com/en-us/library/ms684863.aspx
> > 
> > Regan
> 

September 26, 2007
Apparently it wasn't setup... I glanced over it and thought I saw the CREATE_NO_WINDOW reference. Anyways, it's there now.

It's still creating the window while running the batch script.

okibi Wrote:

> I take that back, CREATE_NO_WINDOW fails (undefined identifier) and DETACHED_PROCESS works, but the window still opens.
> 
> okibi Wrote:
> 
> > Sorry, I'm not all too familiar with CreateProcess functions.
> > 
> > From what I can tell, it's doing a CREATE_NEW_CONSOLE. Changing it to CREATE_NO_WINDOW or DETACHED_PROCESS doesn't work.
> > 
> > Regan Heath Wrote:
> > 
> > > okibi wrote:
> > > > Firstly, this only works on Windows, which is ok as system() doesn't open a terminal window on Linux.
> > > > 
> > > > The problem is that I'm hitting a batch file. When I set the program to point to cmd.exe, it will cause a command prompt window to open to run the command, so back to square one.
> > > 
> > > What creation flags is it using?  CREATE_NO_WINDOW or DETACHED_PROCESS? http://msdn2.microsoft.com/en-us/library/ms684863.aspx
> > > 
> > > Regan
> > 
> 

September 26, 2007
okibi wrote:
> Apparently it wasn't setup... I glanced over it and thought I saw the CREATE_NO_WINDOW reference. Anyways, it's there now.
> 
> It's still creating the window while running the batch script.

It's working for me with either CREATE_NO_WINDOW or DETACHED_PROCESS or both.  Attached is the source (mofified to work with D 2.0).  Note that I defined:

const CREATE_NO_WINDOW = 0x08000000;

in windows.d.

Compile with "dmd createprocess windows test" then run "createprocess.exe".

Regan


September 26, 2007
Well, I was going by what clay had said regarding setting the program to CMD.exe and the arguments to the batch script. Simply hitting the batch script works fine, apparently.

Thanks for all your help!

Regan Heath Wrote:

> okibi wrote:
> > Apparently it wasn't setup... I glanced over it and thought I saw the CREATE_NO_WINDOW reference. Anyways, it's there now.
> > 
> > It's still creating the window while running the batch script.
> 
> It's working for me with either CREATE_NO_WINDOW or DETACHED_PROCESS or both.  Attached is the source (mofified to work with D 2.0).  Note that I defined:
> 
> const CREATE_NO_WINDOW = 0x08000000;
> 
> in windows.d.
> 
> Compile with "dmd createprocess windows test" then run "createprocess.exe".
> 
> Regan
> 

September 26, 2007
okibi wrote:
> Well, I was going by what clay had said regarding setting the program to CMD.exe and the arguments to the batch script. Simply hitting the batch script works fine, apparently.
> 
> Thanks for all your help!

My code is "setting the program to cmd.exe", eg.

execProcess(`c:\windows\system32\cmd.exe`,`test.bat`)

Regan
1 2
Next ›   Last »