怎样调用createProcess()打开指定的网页

有时我感觉真的好迷茫 2008-06-09 02:19:45
#include<windows.h>
#include<iostream.h>
#include<process.h>
int main(int argc,char *argv[])
{


STARTUPINFO si={sizeof(si)};
si.dwFlags=STARTF_USESHOWWINDOW;
si.wShowWindow=true;
PROCESS_INFORMATION pi;

TCHAR szAppName[_MAX_PATH] = TEXT("C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE");//IE浏览器程序
TCHAR szCmdLine[_MAX_PATH] = TEXT("http://www.baidu.com");

\\BOOL bRet=::CreateProcess("C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE,"www.baidu.com",NULL,NULL,false,0,NULL,NULL,&si,&pi);

BOOL bRet=::CreateProcess(szAppName,szCmdLine,NULL,NULL,false,0,NULL,NULL,&si,&pi);
if(bRet)
{
::CloseHandle(pi.hThread);
::CloseHandle(pi.hProcess);
cout<<"the thred ID"<<pi.dwThreadId<<endl;
cout<<" the Process ID"<<pi.dwThreadId<<endl;
}
return 0;
}用上面的代码只能代开IE浏览器,却打不开我指定的网页,这是为什么呢。到底怎样才能打开呢?谢谢
...全文
523 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
谢谢各位热心的帮助,我明白了
KeSummer 2008-06-09
  • 打赏
  • 举报
回复
CreateProcess使用不正确会产生安全隐患..
首先CreateProcess传递命令的时候,当路径带有空格,CreateProcess就会尝试查找相应的程序..假设传递的是:
C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE
那么系统会尝试查找C:\\Program.exe,如果有就执行,并且将后面的作为参数传递,很明显这不是LZ要的结果,MS也考虑到了,所以使用\.......\,那么可以告诉系统C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE才是一个程序...MSDN上有详细的说明..我说的比较简单..请看MSDN CreateProcess.
dbger 2008-06-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xuexi_123 的回复:]
的确可以,谢谢了,但是关于这个语法我还是有点不明白,"\.......\"这个符号是什么意思,lpszCmdLine中还必须加他,能解释一下吗,谢谢了
[/Quote]

因为参数里面有空格,用“”引起来表示是一个参数。
  • 打赏
  • 举报
回复
的确可以,谢谢了,但是关于这个语法我还是有点不明白,"\.......\"这个符号是什么意思,lpszCmdLine中还必须加他,能解释一下吗,谢谢了
dbger 2008-06-09
  • 打赏
  • 举报
回复
LPCTSTR lpszCmdLine = _T("\"C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE\" \"http://www.baidu.com/\"");

试试.

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧