首页 > 编程语言 >vc入门宝典十二(调用其它程序)

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

时间:2022-10-05 11:39:42浏览次数:60  
标签:exe 入门 SHOW startupInfo SW 宝典 vc ShellExecute NULL

调用其它程序
何志丹
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:[email protected]​​","","", 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("调用程序结束!");

标签:exe,入门,SHOW,startupInfo,SW,宝典,vc,ShellExecute,NULL
From: https://blog.51cto.com/u_15724537/5732431

相关文章

  • VC雕虫小技集(一)
    VC雕虫小技集(一)何志丹1,避免随机数相同,可以取当前时间,读文件,读任意内存(如未定义变量,有一定危险).CTimet=CTime::GetCurrentTime();intn=t.GetM......
  • VC雕虫小技集(二)
    VC雕虫小技集(二)何志丹1,如果你没有定义_UNICODE,则LPCTSTR代表constchar*,因此直接使用就可以了.如果定义了_UNICODE,LPCTSTR代表constwchar_t*,就不能直接使用......
  • vc入门宝典四(常用控件)
    常用控件何志丹主要内容:1,按钮(1),位图按钮及动态按钮(2),自画按钮2,列表框3,编辑控件和CRichEdit4,CSliderCtrl按钮的使用十分简单,拖一个到对话框,双击它就可以......
  • vc入门宝典(九)
    集合类使用心得何志丹MFC提供集合类(Collect)专门负责数据对象的存储和管理,MFC的集合类分为三类,分别用于处理三类不同性质的数据结构:表(List,类似于数据结构的双链表),数......
  • VC雕虫小技集(七)
    VC雕虫小技集(七)何志丹1,图片控件右键属性type:bitmap你直接选image也行IDB_BITMAP1位图的IDm_ctrl是与图片控件相关联的控制型变量voidCDlg2Dlg::OnButton1(){......
  • VC入门宝典十一(xml)
    xml                                                 何志丹我们建立一个xml文件,内容如图所示:一,建立一个基于对......
  • Azure DevOps Server 2022新功能:全新的TFVC操作界面
    AzureDevOpsServer(之前名称为TFS)从2013年开始就支持分布式(Git)和集中式(TFVC)两种代码库,近年来由于Git被软件研发团队广泛采纳,集中式代码库(TFVC或SVN)逐渐被开发人员抛弃;但......
  • VC雕虫小技集(五)
    VC雕虫小技集(五)何志丹1,vc中右键点击一个类或宏,可以察看他的定义,但如何返回初始地方呢?installvisualassist,anduseAlt+leftarrow按菜单中的后退(<-转45度)按......
  • VC入门宝典三(String)
    CString何志丹主要内容:1,主要函数的实现2,常用函数3.CString与char[]的相互转换4,将NULL字节放入CString中vc中最主要函数不易理解。CString::CString(c......
  • vc入门宝典七(工具栏)
    工具栏                    何志丹主要内容:1,概要。2,常用函数3,实例。4,动态建立工具条5,在工具栏中嵌控件6,用对话框加位图......