📄 subject_52304.htm
字号:
<p>
序号:52304 发表者:leonyes 发表日期:2003-09-09 21:47:18
<br>主题:怎么用CreateProcess()调用其它程序?
<br>内容:具体的语法是怎样的?最好给出源程序,比如要打开一个帮助文件help.chm<BR>谢谢!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:hurtmanzc 回复日期:2003-09-09 22:07:38
<br>内容:以下是一个使用CreateProcess()的例子:<BR>http://bcbhome.myrice.com/experience/001/exper84.htm<BR><BR>如果要打开一个帮助文件help.chm可以如下:<BR><BR>为“帮助”菜单命令在应用类中添加映射函数如下:<BR>void CXXXApp::OnHelpChm() <BR>{<BR> // TODO: Add your command handler code here<BR> TCHAR exeFullPath[MAX_PATH]; <BR> ::GetModuleFileName(NULL,exeFullPath,MAX_PATH);<BR> CString s=exeFullPath;<BR> int index=s.ReverseFind('\\');<BR> CString path=s.Left(index);<BR> path=path+"\\Help.chm";<BR><BR> ShellExecute(NULL,NULL,LPCTSTR(path),NULL,NULL,SW_SHOW); <BR>}<BR><BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:shenjie 回复日期:2003-09-09 22:09:52
<br>内容:CreateProcess是用于调用EXE程序,具体的做法是:<BR><BR>CreateProcess( <BR>LPCWSTR lpszImageName, <BR>LPCWSTR lpszCmdLine, <BR>LPSECURITY_ATTRIBUTES lpsaProcess, <BR>LPSECURITY_ATTRIBUTES lpsaThread, <BR>BOOL fInheritHandles, <BR>DWORD fdwCreate, <BR>LPVOID lpvEnvironment, <BR>LPWSTR lpszCurDir, <BR>LPSTARTUPINFOW lpsiStartInfo, <BR>LPPROCESS_INFORMATION lppiProcInfo); <BR>CloseHandle(lppiProcInfo->hProcess);<BR>CloseHandle(lppiProcInfo->hThread);<BR><BR>但CreateProcess和ShellExcute不同,它只能调用进程文件,而不能打开文件.CHM文件的格式我不是很清楚,假如它确实属于可执行文件的话是可以这样调用的.
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:leonyes 回复日期:2003-09-09 22:17:24
<br>内容:下面是我写的代码,无法打开help.chm,请高手指点<BR><BR>void CEncryptDlg::OnButHelp() <BR>{<BR> // TODO: Add your control notification handler code here<BR> STARTUPINFO StartupInfo={0};<BR> PROCESS_INFORMATION ProcessInfo;<BR><BR> StartupInfo.cb=sizeof(STARTUPINFO);<BR> if(!CreateProcess(NULL,"help.chm",NULL,NULL,FALSE,<BR> 0,NULL,NULL,&StartupInfo,&ProcessInfo))<BR> MessageBox("不能打开帮助文件!","Error",MB_OK);<BR>}<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:adog 回复日期:2003-09-09 22:17:51
<br>内容:这是MSDN上的代码,我作了些改动,使其能运行:<BR>将MyApp.exe改为你的程序名字就可以了。<BR>#include "Windows.h"<BR>void main()<BR>{<BR> STARTUPINFO si;<BR> PROCESS_INFORMATION pi;<BR><BR> ZeroMemory( &si, sizeof(si) );<BR> si.cb = sizeof(si);<BR> ZeroMemory( &pi, sizeof(pi) );<BR><BR> // Start the child process. <BR> if( !CreateProcess( NULL, // No module name (use command line). <BR> "C:\\Program Files\\MyApp.exe", // Command line. <BR> NULL, // Process handle not inheritable. <BR> NULL, // Thread handle not inheritable. <BR> FALSE, // Set handle inheritance to FALSE. <BR> 0, // No creation flags. <BR> NULL, // Use parent's environment block. <BR> NULL, // Use parent's starting directory. <BR> &si, // Pointer to STARTUPINFO structure.<BR> &pi ) // Pointer to PROCESS_INFORMATION structure.<BR> ) <BR> {<BR> //ErrorExit( "CreateProcess failed." );<BR> }<BR><BR> // Wait until child process exits.<BR> WaitForSingleObject( pi.hProcess, INFINITE );<BR><BR> // Close process and thread handles. <BR> CloseHandle( pi.hProcess );<BR> CloseHandle( pi.hThread );<BR>}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:adog 回复日期:2003-09-09 22:44:45
<br>内容:打开chm文件还要用这种方式:<BR>CreateProcess( NULL, // No module name (use command line). <BR> ""hh X:\\XX\\XXX.chm"", // Command line. <BR> NULL, // Process handle not inheritable. <BR> NULL, // Thread handle not inheritable. <BR> FALSE, // Set handle inheritance to FALSE. <BR> 0, // No creation flags. <BR> NULL, // Use parent's environment block. <BR> NULL, // Use parent's starting directory. <BR> &si, // Pointer to STARTUPINFO structure.<BR> &pi )
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:adog 回复日期:2003-09-09 22:49:10
<br>内容:sorry!<BR>""hh X:\\XX\\XXX.chm""多写了一对引号。hh是关联帮助文件的可执行文件名即hh.exe。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:菜鸟人飞 回复日期:2003-09-10 13:10:55
<br>内容:打开帮助文件不是有一个专门的函数吗?<BR><BR> HtmlHelp(NULL,"xx.chm::/main.htm",HH_DISPLAY_TOPIC,0);<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -