创建进程的三种方式

来源:互联网 发布:怎样躲避公司网络监控 编辑:程序博客网 时间:2024/05/18 02:24

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 (" 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.jianqian.net/" );

       _tcscat_s (szPath ,MAX_PATH ,szCmdline );

       WinExec (szPath ,SW_NORMAL );

}

 

本文来自CSDN博客,转载请标明出处:http://www.jianqian.net/

原创粉丝点击