⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_52304.htm

📁 vc
💻 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>&nbsp;&nbsp;&nbsp;&nbsp;// TODO: Add your command handler code here<BR>&nbsp;&nbsp;&nbsp;&nbsp;TCHAR exeFullPath[MAX_PATH];&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;::GetModuleFileName(NULL,exeFullPath,MAX_PATH);<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString s=exeFullPath;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int index=s.ReverseFind('\\');<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString path=s.Left(index);<BR>&nbsp;&nbsp;&nbsp;&nbsp;path=path+&#34;\\Help.chm&#34;;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;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-&gt;hProcess);<BR>CloseHandle(lppiProcInfo-&gt;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>&nbsp;&nbsp;&nbsp;&nbsp; // TODO: Add your control notification handler code here<BR>&nbsp;&nbsp;&nbsp;&nbsp;STARTUPINFO StartupInfo={0};<BR>&nbsp;&nbsp;&nbsp;&nbsp;PROCESS_INFORMATION ProcessInfo;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;StartupInfo.cb=sizeof(STARTUPINFO);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(!CreateProcess(NULL,&#34;help.chm&#34;,NULL,NULL,FALSE,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,NULL,NULL,&amp;StartupInfo,&amp;ProcessInfo))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBox(&#34;不能打开帮助文件!&#34;,&#34;Error&#34;,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 &#34;Windows.h&#34;<BR>void main()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;STARTUPINFO si;<BR>&nbsp;&nbsp;&nbsp;&nbsp;PROCESS_INFORMATION pi;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;ZeroMemory( &amp;si, sizeof(si) );<BR>&nbsp;&nbsp;&nbsp;&nbsp;si.cb = sizeof(si);<BR>&nbsp;&nbsp;&nbsp;&nbsp;ZeroMemory( &amp;pi, sizeof(pi) );<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// Start the child process. <BR>&nbsp;&nbsp;&nbsp;&nbsp;if( !CreateProcess( NULL, // No module name (use command line). <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#34;C:\\Program Files\\MyApp.exe&#34;, // Command line. <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Process handle not inheritable. <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Thread handle not inheritable. <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FALSE,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Set handle inheritance to FALSE. <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// No creation flags. <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Use parent's environment block. <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Use parent's starting directory. <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;si,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Pointer to STARTUPINFO structure.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;pi )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Pointer to PROCESS_INFORMATION structure.<BR>&nbsp;&nbsp;&nbsp;&nbsp;) <BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//ErrorExit( &#34;CreateProcess failed.&#34; );<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// Wait until child process exits.<BR>&nbsp;&nbsp;&nbsp;&nbsp;WaitForSingleObject( pi.hProcess, INFINITE );<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// Close process and thread handles. <BR>&nbsp;&nbsp;&nbsp;&nbsp;CloseHandle( pi.hProcess );<BR>&nbsp;&nbsp;&nbsp;&nbsp;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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#34;&#34;hh X:\\XX\\XXX.chm&#34;&#34;, // Command line. <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Process handle not inheritable. <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Thread handle not inheritable. <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FALSE,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Set handle inheritance to FALSE. <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// No creation flags. <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Use parent's environment block. <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Use parent's starting directory. <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;si,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Pointer to STARTUPINFO structure.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;pi )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<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>&#34;&#34;hh X:\\XX\\XXX.chm&#34;&#34;多写了一对引号。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>&nbsp;&nbsp;HtmlHelp(NULL,&#34;xx.chm::/main.htm&#34;,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 + -