创建进程的三种方式

Shellapi 的特色,就是先定义一个结构体,然后就调用一个函数,而这个函数的参数通常就是这个结构体的指针,比如本例中的 SHELLEXECUTEINFO 结构体。

void CProcessDlg ::OnBnClickedButtonShell ()

{

       // TODO: 在此添加控件通知处理程序代码

       SHELLEXECUTEINFO ShExecInfo = {0};

       ShExecInfo .cbSize = sizeof (SHELLEXECUTEINFO );

       ShExecInfo .fMask = SEE_MASK_NOCLOSEPROCESS ;

       ShExecInfo .hwnd = NULL ;

       ShExecInfo .lpVerb = NULL ;

       ShExecInfo .lpFile = _T ("C://Program Files//Internet Explorer//iexplore.exe" );

       ShExecInfo .lpParameters = _T ("www.google.com.hk" );

       ShExecInfo .lpDirectory = NULL ;

       ShExecInfo .nShow = SW_SHOW ;

       ShExecInfo .hInstApp = NULL ;

       ShellExecuteEx (&ShExecInfo );

}

 

可能初学者认为CreateProcee 函数会有点复杂,其实也就是一个路径,一个启动参数,还有两个结构体。

void CProcessDlg ::OnBnClickedButtonCreate ()

{

       // TODO: 在此添加控件通知处理程序代码

       STARTUPINFO si ;

       ZeroMemory (&si ,sizeof (si ));

       si .cb = sizeof (si );

       PROCESS_INFORMATION pi ;

       ZeroMemory (&pi ,sizeof (pi ));

       LPCTSTR lpPath = _T ("C://Program Files//Internet Explorer//iexplore.exe" );

       LPTSTR lpCmdline = _T (" http://www.google.com.hk" );// 网址前面加个空格

       CreateProcess (lpPath ,lpCmdline ,NULL ,NULL ,FALSE ,0,NULL ,NULL ,&si ,&pi );

}

 

WinExec 函数应该只支持多字节,所以Unicode 下面会有问题的。

void CProcessDlg ::OnBnClickedButtonWinexec ()

{

       // TODO: 在此添加控件通知处理程序代码

       TCHAR szPath [MAX_PATH ] = _T ("C://Program Files//Internet Explorer//iexplore.exe" );

       TCHAR szCmdline [] = _T (" http://www.google.com.hk" );

       _tcscat_s (szPath ,MAX_PATH ,szCmdline );

       WinExec (szPath ,SW_NORMAL );

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值