vc入门宝典十二(调用其它程序)

原创 2004年03月01日 10:04:00

                                       调用其它程序

                                        何志丹

WinExec
原型:
UINT WinExec(
  LPCSTR lpCmdLine,  // address of command line
  UINT uCmdShow      // window style for new application
);
用于十六位操作系统及兼容系统.
例如:
WinExec("notepad.exe f://调用程序.txt",SW_SHOW);
WinExec("notepad.exe ",SW_SHOW);
不同的参数用空格分开,故路径中不能有空格,而大部分程序默认是安装在".../Program Files/...",如word,这极大的限制了WinExec的应用范围.
以上可不带路径:
1,程序所在目录.
2,当前路径.
3,系统目录,可以用GetSystemDirectory得到.
4,Windows 目录. 可以用TheGetWindowsDirectory得到. 
5,在环境变量中设置的目录.

ShellExecute
原型:
HINSTANCE ShellExecute(
    HWND hwnd,                   //父窗口句柄
    LPCTSTR lpOperation,         //操作,"open","print","explore"
    LPCTSTR lpFile,              //文件名,前面可加路径
    LPCTSTR lpParameters,        //参数
    LPCTSTR lpDirectory,         //默认文件夹
    INT nShowCmd                 //显示方式
);

打开一个应用程序
ShellExecute(this->m_hWnd,"open","calc.exe","","", SW_SHOW );

ShellExecute(this->m_hWnd,"open","notepad.exe","c:/MyLog.log","",SW_SHOW );

打开一个同系统程序相关连的文档
ShellExecute(this->m_hWnd,"open","c:/abc.txt","","",SW_SHOW );

激活相关程序,发送EMAIL
ShellExecute(this->m_hWnd,"open","mailto:nishinapp@yahoo.com","","", SW_SHOW );

用系统打印机打印文档
ShellExecute(this->m_hWnd,"print","c:/abc.txt","","", SW_HIDE);

lpParameters的用法示例:
一,建立一个可以接受参数的程序call.exe,添加如下代码:
BOOL CCallApp::InitInstance()
{
 int n = __argc;
 for(int i = 1 ; i < n ; i++)
  AfxMessageBox(__targv[i]);
       //__targv[0]存储的是程序的文件名
...
}
二,Alt + F7的进行Project setting, Debug -> program argurments ->"1 2 3 4 5".
如果有多个参数,用空格分开.
三,运行.
四,执行ShellExecute(NULL,NULL,"f://call.exe","1 2 3 4 5",NULL,SW_SHOW);

BOOL CreateProcess(
  LPCTSTR lpApplicationName,
                        
  LPTSTR lpCommandLine, 
  LPSECURITY_ATTRIBUTES lpProcessAttributes, 
  LPSECURITY_ATTRIBUTES lpThreadAttributes,  
  BOOL bInheritHandles, 
  DWORD dwCreationFlags,
  LPVOID lpEnvironment, 
  LPCTSTR lpCurrentDirectory,  
  LPSTARTUPINFO lpStartupInfo, 
  LPPROCESS_INFORMATION lpProcessInformation 
);


STARTUPINFO   startupInfo;
memset(&startupInfo,0,sizeof(STARTUPINFO));
startupInfo.cb = sizeof(STARTUPINFO);

示例:
//程序最启动时最大化 
startupInfo.dwFlags |= STARTF_USESHOWWINDOW;
startupInfo.wShowWindow = SW_SHOWMAXIMIZED;
 
//运行....exe
 PROCESS_INFORMATION ProcessInfo;
  BOOL bCreate = ::CreateProcess
        (
        "f://call.exe",// 1 2 3 4",
  NULL,
  NULL,
        NULL,
        FALSE,
        0,
        NULL,
        NULL,
        &startupInfo,
        &ProcessInfo); 

//等到call.exe执行完毕
WaitForSingleObject(ProcessInfo.hProcess,1000000);
MessageBox("调用程序结束!");

多年收集的VC++电子书,源代码现在免费全部奉献给大家

多年收集的VC++电子书,源代码现在免费全部奉献给大家 这里只列举了一点书籍和代码,我已经将电脑中全部资料上传到网址里面 !!!!!!!!!!!!全部免费!!!!!!!!!!!!!!!!!! 规...
  • e_wsq
  • e_wsq
  • 2013年05月06日 22:41
  • 2667

VC程序中运行其他程序的三种方法

有三个函数可以使用: WinExec, ShellExecute,CreateProcess 1.WinExec(String lpCmdLine,Long nCmdShow); 参数说明: ...
  • qq_33266987
  • qq_33266987
  • 2016年06月08日 10:38
  • 1343

Windows下FFmpeg快速入门sdk下载以及ffmpeg库开发

原文地址:--搞定264 FFMPEG" href="http://blog.sina.com.cn/s/blog_51396f890100o1yf.html" target="_blank">Win...
  • mydeardingxiaoli
  • mydeardingxiaoli
  • 2013年12月18日 16:58
  • 2291

VC中调用并获取外部程序输出

VC上调用外部程序的方法大家应该很熟悉,比如ShellExecute,CreateProcess。 例子: system("D://adb.exe devices >c://temp.txt");...
  • zwlhoho
  • zwlhoho
  • 2015年11月13日 15:47
  • 1579

VC中调用外部EXE程序方法(转)

在VC中,有些时候,我们需要调用其他一些现有的EXE可执行文件,当然,有些时候,我们也调用自己编写生成的EXE文件,以完成对不同选择条件的反应。  通过总结,基本上调用EXE文件的办法有四种...
  • pirate97
  • pirate97
  • 2013年10月18日 09:01
  • 8492

在VC++中直接调用API执行打印任务

介绍: 这一段代码,用以演示《如何在VC++中使用API直接打印》。并且该段代码可以直接嵌入各种工程中,有实际使用的价值。 用途:在Visual C++中,应用程序通常是使用CView中提供的打印功能...
  • dragoo1
  • dragoo1
  • 2017年01月17日 21:32
  • 517

Unity3D新手教学,让你十二小时,从入门到掌握!(二)

unity新手教学,想要学习游戏开发的点这里哦。。。
  • Aries_H
  • Aries_H
  • 2015年08月08日 19:09
  • 5044

VC下执行DOS命令并得到输出

http://blog.csdn.net/zhb117/article/details/5610076http://hi.baidu.com/simbaforrest/item/e3626fdc9a8...
  • u012787710
  • u012787710
  • 2015年09月24日 14:49
  • 1891

VS2010/MFC编程入门之十一(对话框:非模态对话框的创建及显示)

上一节鸡啄米讲了模态对话框及其弹出过程,本节接着讲另一种对话框--非模态对话框的创建及显示。        鸡啄米已经说过,非模态对话框显示后,程序其他窗口仍能正常运行,可以响应用户输入,还可以...
  • xiaoxiaomao410
  • xiaoxiaomao410
  • 2014年03月13日 14:15
  • 1572

VC简单入门系列实验及知识点总结

我是在大二上学期开始接触到VC的开发的。当时,首先接触的是使用MFC来开发应用程序,但当时的知识有限,对MFC框架了解甚少。为了弥补这些知识上的缺陷,首先从Win32的应用程序学起的,中间参考着Win...
  • u010773619
  • u010773619
  • 2013年10月29日 17:31
  • 2385
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:vc入门宝典十二(调用其它程序)
举报原因:
原因补充:

(最多只允许输入30个字)