Answered my own question, it appears if I just wrap the arguments in chr(34)’s 
it will retain the integrity of the argument.

Thanks Emre.

-Jason

//------------------------------//
   Jason R. Kretzer
   Lead Application Developer
   ja...@gocodigo.com<mailto:ja...@gocodigo.com>
//-----------------------------//


From: "Jason R. Kretzer" <ja...@gocodigo.com<mailto:ja...@gocodigo.com>>
To: NoMercy <nome...@gmail.com<mailto:nome...@gmail.com>>, 
"interest@qt-project.org<mailto:interest@qt-project.org>" 
<interest@qt-project.org<mailto:interest@qt-project.org>>
Subject: Re: [Interest] QProcess to start a process at a higher priority

Emre, thanks so much.

I do indeed have a static number of arguments.  Unfortunately, the reason they 
are quoted was because the arguments have spaces in them and Wscript.Arguments 
wants to ignore the quotes :)

-Jason

//------------------------------//
   Jason R. Kretzer
   Lead Application Developer
   ja...@gocodigo.com<mailto:ja...@gocodigo.com>
//-----------------------------//


From: NoMercy <nome...@gmail.com<mailto:nome...@gmail.com>>
Date: Tuesday, March 10, 2015 at 11:15 AM
To: "Jason R. Kretzer" <ja...@gocodigo.com<mailto:ja...@gocodigo.com>>, 
"interest@qt-project.org<mailto:interest@qt-project.org>" 
<interest@qt-project.org<mailto:interest@qt-project.org>>
Subject: Re: [Interest] QProcess to start a process at a higher priority

Hello again,
for that I have something like this (if you have a static number of arguments);

Set WshShell = CreateObject("WScript.Shell")
WshShell.currentdirectory = "C:\Program Files\your_app_dir"
'wscript.echo WshShell.currentdirectory
WshShell.Run chr(34) & "C:\Program Files\ your_app_dir\your_bat.bat" & chr(34) 
& " " & Wscript.Arguments(0) & " " & Wscript.Arguments(1) , 0
Set WshShell = Nothing

Happy Coding
Emre

On Tue, Mar 10, 2015 at 5:09 PM, Jason Kretzer 
<ja...@gocodigo.com<mailto:ja...@gocodigo.com>> wrote:
Thanks!

Honestly, I do not have much experience with Vbscript.  In your example below, 
how would I pass arguments to the your_bat.bat?  I have 8 quoted arguments that 
I need to pass the bat file.

I have tried this

Dim arg0
arg0 = WScript.Arguments.Item(0)
WScript.Echo arg0
WshShell.Run chr(34) & "C:\Program Files\yourapp\your_bat.bat" & arg0 & chr(34) 
, 0

But that is not quite right.  It echos the arg0 fine but I get a “The system 
cannot find the file specified” when I run that.

Thoughts?

-Jason

//------------------------------//
   Jason R. Kretzer
   Lead Application Developer
   ja...@gocodigo.com<mailto:ja...@gocodigo.com>
//-----------------------------//


From: NoMercy <nome...@gmail.com<mailto:nome...@gmail.com>>
Date: Monday, March 9, 2015 at 5:27 AM
To: "Jason R. Kretzer" <ja...@gocodigo.com<mailto:ja...@gocodigo.com>>
Subject: Re: [Interest] QProcess to start a process at a higher priority

Our app uses an ugly method for exactly this reason and I intend to research 
and find a better solution on this subject when I have time but for the moment 
we use "cscript.exe /path/to/your/script.vbs"
in vbs:

Set WshShell = CreateObject("WScript.Shell")
WshShell.currentdirectory = "C:\Program Files\ yourapp"
'wscript.echo WshShell.currentdirectory
WshShell.Run chr(34) & "C:\Program Files\yourapp\your_bat.bat" & chr(34) , 0
Set WshShell = Nothing

And if I'm remembering correctly the zero ("0") at the end of line that starts 
with "WshShell.Run" makes it windowless.

Happy coding
Emre

On Mon, Mar 9, 2015 at 1:53 AM, Jason Kretzer 
<ja...@gocodigo.com<mailto:ja...@gocodigo.com>> wrote:
Hello all,

I am tinkering a bit with QProcess on Windows7.  What I would like to be able 
to do is to start a process with a “high” priority.  My application spawns 
multiple processes and I am tinkering with them in order to help ensure they 
get their processor time.

On the command line, I would do this.

start /high myspawn.exe arg1 arg2 arg3

Unfortunately one of the requirements is that a DOS window not open to run it.

If I start the process like this:

QString program = “myspawn.exe";
QStringList arguments;

arguments << “arg1” << “arg2" << “arg3";

QProcess *p = new QProcess(this);
QTimer::singleShot(30000, this, SLOT(deleteLater()));
qDebug() << "starting mysawn process -- " << p->startDetached(program, 
arguments);

It starts just fine, no DOS window, but at Normal priority.

I have tried multiple ways using the “start /high…” command inside of the 
various ways to execute a command with QProcess, but they always flash a DOS 
window.

I even create a .bat file with the command in it and passed arguments in with 
the above code.  While it worked, it flashed the DOS window.

Am I missing something here?

-Jason

//------------------------------//
   Jason R. Kretzer
   Lead Application Developer
   ja...@gocodigo.com<mailto:ja...@gocodigo.com>
//-----------------------------//


_______________________________________________
Interest mailing list
Interest@qt-project.org<mailto:Interest@qt-project.org>
http://lists.qt-project.org/mailman/listinfo/interest


________________________________

No virus found in this message.
Checked by AVG - www.avg.com<http://www.avg.com>
Version: 2015.0.5645 / Virus Database: 4299/9221 - Release Date: 03/03/15

________________________________

No virus found in this message.
Checked by AVG - www.avg.com<http://www.avg.com>
Version: 2015.0.5645 / Virus Database: 4299/9221 - Release Date: 03/03/15

________________________________

No virus found in this message.
Checked by AVG - www.avg.com<http://www.avg.com>
Version: 2015.0.5645 / Virus Database: 4299/9221 - Release Date: 03/03/15
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to