|
I second VuNic's recomendation of doxygen. I'm going through my code with it now, and I'm ending up doing loads of refactoring to make my software more robust as a result.. And the documentation it comes out with is very nice.
Iain.
Codeproject MVP for C++, I can't believe it's for my lounge posts...
|
|
|
|
|
Hi to all
I am trying to run the ms word using create process. But not able to. Could anyone please help me out with the same? Following is the code
PROCESS_INFORMATION processInfo = {0};
STARTUPINFO startupInfo = {0};
BOOL bSuccess = CreateProcess(NULL,
"winword", //it works for "notepad"
NULL, NULL, FALSE, 0, NULL, NULL,
&startupInfo, &processInfo);
Thanks in advance
I am a beginner
|
|
|
|
|
Try giving the full path of winword like "C:\\Program Files\\Microsoft Office\\Bin\Winword.exe"
«_Superman_»
I love work. It gives me something to do between weekends.
|
|
|
|
|
thanks a lot,...its working....
But now I am not able to run a word doc in another drive
char* szCmdline = "D:\\docs\\main.doc";
Could you please tell me what is the problem?
Thanks
I am a beginner
|
|
|
|
|
Give the second parameter of CreateProcess something like this
"\"C:\\Program Files\\Microsoft Office\\Bin\\Winword.exe\" \"D:\\docs\\main.doc\""
«_Superman_»
I love work. It gives me something to do between weekends.
|
|
|
|
|
I did that,
char* szCmdline = "\"C:\\Program Files\\Microsoft Office\\Office\\winword.exe\" \"D:\\docs\\main.doc"";
but its giving syntax error...
:\Program Files\Microsoft Visual Studio\MyProjects\processTry\processTry.cpp(12) : error C2001: newline in constant
C:\Program Files\Microsoft Visual Studio\MyProjects\processTry\processTry.cpp(15) : error C2146: syntax error : missing ';' before identifier 'BOOL'
C:\Program Files\Microsoft Visual Studio\MyProjects\processTry\processTry.cpp(15) : error C2146: syntax error : missing ';' before identifier 'bSuccess'
C:\Program Files\Microsoft Visual Studio\MyProjects\processTry\processTry.cpp(15) : error C2275: 'BOOL' : illegal use of this type as an expression
c:\program files\microsoft visual studio\vc98\include\windef.h(142) : see declaration of 'BOOL'
C:\Program Files\Microsoft Visual Studio\MyProjects\processTry\processTry.cpp(15) : error C2065: 'bSuccess' : undeclared identifier
I am a beginner
|
|
|
|
|
You missed a back slash after .doc and before "
«_Superman_»
I love work. It gives me something to do between weekends.
|
|
|
|
|
thanks
its working...
Could you please explain me the syntax
char* szCmdline = "\"C:\\Program Files\\Microsoft Office\\Office\\winword.exe\" \"D:\\docs\\main.doc\"";
I didn't get it actually..I thought that whenever compiler finds the second " it identifies the end of the string.
Also please tell me why the notepad works directly
char* szCmdline = "notepad" ;
but winword doesnot work for the same syntax
I am a beginner
|
|
|
|
|
himangshuS wrote: "\"
You are writing out a '"' with your path. You cannot include it between two " " " simply because the compiler would think that you are ending the string with your " in the middle. So you should add a "\" to it to say "Don't consider it as the end of the string".
instead of
C:\Program Files\Microsoft Office\Office\winword.exe
You are now saying
"C:\Program Files\Microsoft Office\Office\winword.exe"
btw, isn't that how we open a file from command prompt?
He never answers anyone who replies to him. I've taken to calling him a retard, which is not fair to retards everywhere.-Christian Graus
|
|
|
|
|
This is the actual string that the function needs including double quotes.
"C:\Program Files\Microsoft Office\Office\winword.exe" "D:\docs\main.doc"
So all the special characters here need to be escaped or negated using a back slash.
The special characters in the string are double quotes and back slash.
So the string becomes.
\"C:\\Program Files\\Microsoft Office\\Office\\winword.exe\" \"D:\\docs\\main.doc\"
Now since this is a string we put a final set of double quotes at the ends. So it becomes
"\"C:\\Program Files\\Microsoft Office\\Office\\winword.exe\" \"D:\\docs\\main.doc\""
The path where Notepad.exe resides is in your search path, whereas the path where winword.exe resides is not in your search path. That is the reason why notepad works and not winword.
Check the PATH environment variable by typing path at the command prompt.
«_Superman_»
I love work. It gives me something to do between weekends.
|
|
|
|
|
You can directly open the doc file as follows
ShellExecute( 0, _T( "open" ), _T( "D:\\docs\\main.doc" ), 0, 0, SW_SHOWNORMAL ); so that you dont need to think about the installation path of winword.
- ns ami -
|
|
|
|
|
ShellExecute is working fine. But I have to check what is wrong with CreateProcess
ShellExecute( 0, _T( "open" ), _T( "winword" ), 0, 0, SW_SHOWNORMAL );
- ns ami -
|
|
|
|
|
thanks.
But I am using win32 console application. Does shellexecute work for the same or only in MFC?..
how does it differenciate from createprocess?
thanks
I am a beginner
|
|
|
|
|
ShellExecute will work with console application. You may need to use the corresponding headers (windows.h and ShellAPI.h).
See more information here[^]
- ns ami -
|
|
|
|
|
I think windows.h alone will do the job bcos when i tried adding shellapi.h im able to see lot of errors...
|
|
|
|
|
pradeep455 wrote: I think windows.h alone will do the job
Did u try for that?
pradeep455 wrote: i tried adding shellapi.h im able to see lot of errors
What errors?
- ns ami -
|
|
|
|
|
Hi,
I have a double var=123.45677, I want to control the 2 decimal places i.e var should be 123.45
How to do it?
|
|
|
|
|
You cannot control it as such, but you can display it using 2 decimal places.
For example, when assigned it in a character array you can do the following.
sprintf(cBuffer, "%.2f", var);
«_Superman_»
I love work. It gives me something to do between weekends.
|
|
|
|
|
If you need to truncate it to 2 decimal places, then
#include <math.h>
void main()
{
double var=123.45677;
var = floor(var * 100) / 100;
}
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Hi,
When i tried to invoke exe from console application using
ShellExecute("NULL","open","D:\\windows\\MYapp\Debug\\My.exe",NULL,NULL,SW_SHOW);
im getting the below error
error C2065: 'SW_SHOW' : undeclared identifier
error C3861: 'ShellExecute': identifier not found, even with argument-dependent lookup
and when i tried to include shellapi.h im getting lot of errors ie more than 50...Please help me out....
|
|
|
|
|
You probably need to include windows.h first.
Anyone who thinks he has a better idea of what's good for people than people do is a swine.
- P.J. O'Rourke
|
|
|
|
|
Include Windows.h . You don't need to include ShellApi.h .
Also the first parameter must not be in double quotes.
«_Superman_»
I love work. It gives me something to do between weekends.
|
|
|
|
|
Thanks for ur reply.... im able run console application successfully without errors but i was unable to run the exe which i have specified in shellexecute().....PLease help me out...
|
|
|
|
|
Does it show any error? Does it crash?
What is the actual problem?
Are you running a UNICODE build?
I would recommend using CreateProcess instead of ShellExecute .
«_Superman_»
I love work. It gives me something to do between weekends.
|
|
|
|
|
when i replaced SW_SHOW with SW_SHOWNORMAL... im able to see the Dialog ...
|
|
|
|