正文

VC 中启动另外一个应用程序的方法2010-12-07 14:30:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/miaowei/52069.html

分享到:

转至: http://hi.baidu.com/superacacia/blog/item/27e4e58237a793d5bd3e1e7e.html   最近在做一个文档管理的软件时需要在程序中打开一个其他格式的文件,需要在文档管理里面点击链接使用特定的应用程序打开;这时就要用到 WinExec、ShellExecute和CreateProcess等方法了; 比如需要打开excel需要使用: ShellExecute(NULL,   "Open",   "c:\\books.xsl",  NULL,   NULL,   SW_SHOWNOACTIVATE);    其他方法引用网上的文章: Q:    如何打开一个应用程序?  A:     ShellExecute(this->m_hWnd,"open","calc.exe","","", SW_SHOW );  或 ShellExecute(this->m_hWnd,"open","notepad.exe", "c:\\MyLog.log","",SW_SHOW );  正如您所看到的,我并没有传递程序的完整路径。  Q:     如何打开一个同系统程序相关连的文档?  A:    ShellExecute(this->m_hWnd,"open",  "c:\\abc.txt","","",SW_SHOW );  Q:     如何打开一个网页?  A:    ShellExecute(this->m_hWnd,"open",   " http://www.google.com","","", SW_SHOW );  Q:     如何激活相关程序,发送EMAIL?  A:    ShellExecute(this->m_hWnd,"open",    "mailto:nishinapp@yahoo.com","","", SW_SHOW );  Q:     如何用系统打印机打印文档?  A:    ShellExecute(this->m_hWnd,"print",  "c:\\abc.txt","","", SW_HIDE);  Q:     如何用系统查找功能来查找指定文件?  A:    ShellExecute(m_hWnd,"find","d:\\nish",   NULL,NULL,SW_SHOW);  Q:     如何启动一个程序,直到它运行结束?  A1:    SHELLEXECUTEINFO ShExecInfo = {0};  ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);  ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;  ShExecInfo.hwnd = NULL;  ShExecInfo.lpVerb = NULL;  ShExecInfo.lpFile = "c:\\MyProgram.exe";          ShExecInfo.lpParameters = "";      ShExecInfo.lpDirectory = NULL;  ShExecInfo.nShow = SW_SHOW;  ShExecInfo.hInstApp = NULL;      ShellExecuteEx(&ShExecInfo);  WaitForSingleObject(ShExecInfo.hProcess,INFINITE);  A2:    PROCESS_INFORMATION ProcessInfo;  STARTUPINFO StartupInfo; //This is an [in] parameter  ZeroMemory(&StartupInfo, sizeof(StartupInfo));  StartupInfo.cb = sizeof StartupInfo ; //Only compulsory field  if(CreateProcess("c:\\winnt\\notepad.exe", NULL,  NULL,NULL,FALSE,0,NULL,  NULL,&StartupInfo,&ProcessInfo))  {  WaitForSingleObject(ProcessInfo.hProcess,INFINITE);  CloseHandle(ProcessInfo.hThread);  CloseHandle(ProcessInfo.hProcess);  }    else  {  MessageBox("The process could not be started...");  }  Q:     如何显示文件或文件夹的属性?  A:    SHELLEXECUTEINFO ShExecInfo ={0};  ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);  ShExecInfo.fMask = SEE_MASK_INVOKEIDLIST ;  ShExecInfo.hwnd = NULL;  ShExecInfo.lpVerb = "properties";  ShExecInfo.lpFile = "c:\\"; //can be a file as well  ShExecInfo.lpParameters = "";  ShExecInfo.lpDirectory = NULL;  ShExecInfo.nShow = SW_SHOW;  ShExecInfo.hInstApp = NULL;  ShellExecuteEx(&ShExecInfo);   

阅读(4844) | 评论(5)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册