Luvu
asked on
Calling another stand-alone windows program
Hi, I am trying to code a program which calls another stand-alone visual c++ program. Both of them have separate windows interfaces and execution files. I don't want to copy the necessary part, and want them to work separately. How can I code to call another stand-alone windows program? Thank you for your help in advance.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
FYI:
A common mistake when using these functions, is forgetting to use double '\\' characters to represent the path seperator.
Example:
system("c:\\windows\\notep ad.exe");
system("c:\\mypath\\subpat h\\mybatfi le.bat");
You need to use double \\ path characters to represent the path seperator for all the functions used to call an executable. (WinExec, system, CreateProcess, etc...)
A common mistake when using these functions, is forgetting to use double '\\' characters to represent the path seperator.
Example:
system("c:\\windows\\notep
system("c:\\mypath\\subpat
You need to use double \\ path characters to represent the path seperator for all the functions used to call an executable. (WinExec, system, CreateProcess, etc...)
ASKER
Thanks for the comments. I am sorry that I haven't explained in detail.
The program I am coding has to be able to not only call the other stand-alone process but also give and take the input and output files. CreateProcess() only executes the other process which doesn't have the input or output files.
Let me explain my problem a little bit more.
For example, I have two separate programs of A and B.
B is a stand-alone program with windows interface and takes a input file and generates a output file. Program A is what I am coding which calls program B. Program A have to be able to call program B with a input file and take a output file from program B. Is there any way I can do this?
The program I am coding has to be able to not only call the other stand-alone process but also give and take the input and output files. CreateProcess() only executes the other process which doesn't have the input or output files.
Let me explain my problem a little bit more.
For example, I have two separate programs of A and B.
B is a stand-alone program with windows interface and takes a input file and generates a output file. Program A is what I am coding which calls program B. Program A have to be able to call program B with a input file and take a output file from program B. Is there any way I can do this?
If the input and output files are just command line arguments, you can send them with the system() and CreateProcess() calls
system("c:\\path\\to\\prog ram.exe infile.txt outfile.txt");
Use mxjijo's second link for info on CreateProcess()
system("c:\\path\\to\\prog
Use mxjijo's second link for info on CreateProcess()
>>Is there any way I can do this?
As long as program A (windows App) is able to take command line options for the input and output file.
Does program 'A' have command line options?
As long as program A (windows App) is able to take command line options for the input and output file.
Does program 'A' have command line options?
>> As long as program A (windows App) is able to take command line options for the input and output file.
Why you think that is necessary ?
Why can't prog A have no command line args and create process B with commandline args ?
Correction:
As long as program 'B' (windows App) is able to take command line options for the input and output file.
Does program 'B' have command line options?
>>Why can't prog A have no command line args and create process B with commandline args ?
Sorry. I meant to say Program 'B'. I was referring to the Windows Application. It sounds like the questioner does not have access to the source code for the windows application, which would be he/she will not be able to use command line options if this windows application does not already have this feature.
As long as program 'B' (windows App) is able to take command line options for the input and output file.
Does program 'B' have command line options?
>>Why can't prog A have no command line args and create process B with commandline args ?
Sorry. I meant to say Program 'B'. I was referring to the Windows Application. It sounds like the questioner does not have access to the source code for the windows application, which would be he/she will not be able to use command line options if this windows application does not already have this feature.
ASKER
I have the source code of program B. However, it will be the best if I don't have to change program B, since it is a complete stand-alone program.
To use the following line, the program B have to take an input and an ouput file, I think.
system("c:\\path\\to\\prog ram.exe infile.txt outfile.txt");
But, in my case, program B doesn't take any input or output files directly.
Instead, program B is event-driven program. What I want is to call the functions of file_read(), file_save(), and execute() in program B from program A.
Please let me know how I can do this.
To use the following line, the program B have to take an input and an ouput file, I think.
system("c:\\path\\to\\prog
But, in my case, program B doesn't take any input or output files directly.
Instead, program B is event-driven program. What I want is to call the functions of file_read(), file_save(), and execute() in program B from program A.
Please let me know how I can do this.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
system("notepad.exe");
Or you can use WinExec() API function.
WinExec("notepad.exe", SW_SHOW);