一个简单问题,怎样用我的程序打开一个exe程序,并得到是否成功打开的状态。 一个简单问题,我建立的mfc对话框项目。想在我的程序里打开一个exe程序!怎样用我的程序打开一个exe程序?并得到是否成功打开的状态?谢谢!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.vckbase.com/document/viewdoc.asp?id=416 ShellExecute成功的话返回一个大于32的数 三个SDK函数 winexec, shellexecute,createprocess可以使用。WinExec最简单,两个参数,前一个指定路径,后一个指定显示方式.后一个参数值得说一下,比如泥用 SW_SHOWMAXMIZED方式去加载一个无最大化按钮的程序,就是Neterm,calc等等,就不会出现正常的窗体,但是已经被加到任务列表里了。ShellExecute较 WinExex灵活一点,可以指定工作目录,下面的Example就是直接打开 c:\temp\1.txt,而不用加载与 txt文件关联的应用程序,很多安装程序完成后都会打开一个窗口,来显示Readme or Faq,我猜就是这么作的啦.ShellExecute(NULL,NULL,_T("1.txt"),NULL,_T("c:\\temp"),SW_SHOWMAXMIZED)CreateProcess最复杂,一共有十个参数,不过大部分都可以用NULL代替,它可以指定进程的安全属性,继承信息,类的优先级等等.来看个很简单的Example: STARTUPINFO stinfo//启动窗口的信息 PROCESSINFO procinfo //进程的信息 CreateProcess(NULL,_T("notepad.exe"),NULL,NULL.FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL, &stinfo,&procinfo) // 创建一个进程来运行其他程序 STARTUPINFO si ; ZeroMemory(&si, sizeof(si));//必须进行初始化,否则将产生错误 PROCESS_INFORMATION pi;TCHAR szCmdLine[] =TEXT("C:\\WINNT\\SYSTEM32notepad.exe"); int success = CreateProcess(NULL, szCmdLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); if (success != 0){ //创建成功,程序开始运行}else{ //创建失败} 同意他们的啦, PROCESS_INFORMATION pi; STARTUPINFO si; char *pathstr; pathstr = new char[60]; CString path1,outp1; path1 = GetSystemDirectory(pathstr,MAX_PATH); outp1.Format("path is %s , return is %s",pathstr,path1); GetStartupInfo(&si); CreateProcess(NULL, "sam 1",NULL,NULL,TRUE, 0,NULL,NULL, &si,&pi);其实函数重要,其他的查MSDN就好了。 所有的进程信息都存放在pi结构中,进程句柄pi.hProcess.进程主线程的句柄pi.hThread.等等。 CAsyncSocket类问题 如何用多线程连接多个mssql数据库? 关于Vc++和Sql中删除问题 对话框 加 工具栏ToolTips的问题 关于《WINDOWS核心编程》代码的编译问题! 我对客户区究竟是哪一片区域不是很明白,大家说说看。 ◆ 为什么访问被拒绝? 要做一个文字输入工具, 想很完全的控制文字的显示。用什么方法最好 ? std::list<char*类型> 中,如何得到指定点的值? 就像CList的 GetAt一样... 怎样在vc下实现菜单的动态出现 算法求助!!!高分!!!! ActiveX问题
成功的话返回一个大于32的数
WinExec最简单,两个参数,前一个指定路径,后一个指定显示方式.后一个参数值得说一下,比如泥用 SW_SHOWMAXMIZED方式去加载一个无最大化按钮的程序,就是Neterm,calc等等,就不会出现正常的窗体,但是已经被加到任务列表里了。ShellExecute较 WinExex灵活一点,可以指定工作目录,下面的Example就是直接打开 c:\temp\1.txt,而不用加载与 txt文件关联的应用程序,很多安装程序完成后都会打开一个窗口,来显示Readme or Faq,我猜就是这么作的啦.ShellExecute(NULL,NULL,_T("1.txt"),NULL,_T("c:\\temp"),SW_SHOWMAXMIZED)CreateProcess最复杂,一共有十个参数,不过大部分都可以用NULL代替,它可以指定进程的安全属性,继承信息,类的优先级等等.来看个很简单的Example:
STARTUPINFO stinfo
//启动窗口的信息
PROCESSINFO procinfo //进程的信息 CreateProcess(NULL,_T("notepad.exe"),NULL,NULL.FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL, &stinfo,&procinfo)
STARTUPINFO si ;
ZeroMemory(&si, sizeof(si));//必须进行初始化,否则将产生错误
PROCESS_INFORMATION pi;
TCHAR szCmdLine[] =TEXT("C:\\WINNT\\SYSTEM32notepad.exe");
int success = CreateProcess(NULL, szCmdLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
if (success != 0)
{
//创建成功,程序开始运行
}
else
{ //创建失败
}
PROCESS_INFORMATION pi;
STARTUPINFO si;
char *pathstr;
pathstr = new char[60];
CString path1,outp1;
path1 = GetSystemDirectory(pathstr,MAX_PATH);
outp1.Format("path is %s , return is %s",pathstr,path1); GetStartupInfo(&si);
CreateProcess(NULL,
"sam 1",NULL,NULL,TRUE,
0,NULL,NULL,
&si,&pi);其实函数重要,其他的查MSDN就好了。