如何在程序中起动IE

lx_neteasy 2003-10-17 02:15:02
如何在程序中起动IE
...全文
37 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
microran2000 2003-10-17
  • 打赏
  • 举报
回复
打开本地文件采用file://c:/aa.htm
采用ShellExecute并不一定会打开IE,因为你的机器如果安装了两个浏览器,比如一个IE,一个腾讯,采用ShellExecute打开一个网页很有可能打开的是腾讯浏览器.
URL协议并不一定采用HTTP://
zhucde 2003-10-17
  • 打赏
  • 举报
回复
ShellExecute(0,"open","http://www.sohu.com",NULL,NULL,SW_NORMAL);
lx_neteasy 2003-10-17
  • 打赏
  • 举报
回复
那么要用他打开某个HTML 文件 怎么办
microran2000 2003-10-17
  • 打赏
  • 举报
回复
在程序中启动Ie有多种方法.你可以直接调用CreateProcess函数来创建一个IE进程.IE的路径可以中注册表中获得.
另外你还可以借助于IE提供的自动化服务来启动IE进程.
参考代码:
int SendHTTPByIE(LPCSTR URL,LPCSTR headers,const BYTE *Post, DWORD postLength)
{
HRESULT hr;
USES_CONVERSION;


IWebBrowserApp* pWBApp = NULL; // Derived from IWebBrowser
BSTR bstrURL = NULL, bstrHeaders = NULL;
VARIANT vFlags = {0},
vTargetFrameName = {0},
vPostData = {0},
vHeaders = {0};
__try{
if (FAILED(hr = CoInitialize(NULL)))
{
return FALSE;
}
if (FAILED(hr = CoCreateInstance(CLSID_InternetExplorer,
NULL,
CLSCTX_SERVER,
IID_IWebBrowserApp,
(LPVOID*)&pWBApp)))
{
goto Error;
}
bstrURL = SysAllocString(T2OLE(URL));
if (!bstrURL)
{
goto Error;
}
if(headers!=NULL){
bstrHeaders = SysAllocString(T2OLE(headers));
if (!bstrHeaders)
{
goto Error;
}
V_VT(&vHeaders) = VT_BSTR;
V_BSTR(&vHeaders) = bstrHeaders;
}
if(Post!=NULL){
hr = GetPostData(&vPostData,(LPCTSTR)Post,postLength);
}
hr = pWBApp->Navigate(bstrURL, &vFlags,
&vTargetFrameName, &vPostData, &vHeaders);
pWBApp->put_Visible(VARIANT_TRUE);
Error:;
}

__finally{

if (bstrURL) SysFreeString(bstrURL);
if (bstrHeaders) SysFreeString(bstrHeaders);
if(Post!=NULL)VariantClear(&vPostData);
if (pWBApp){
pWBApp->Release();
pWBApp=NULL;
}
CoUninitialize();
}
return TRUE;
}
HRESULT GetPostData(LPVARIANT pvPostData,LPCTSTR szPostData, DWORD postLength)
{
HRESULT hr;
LPSAFEARRAY psa;

LPSTR pPostData;
if (!pvPostData)
{
return E_POINTER;
}
VariantInit(pvPostData);
psa = SafeArrayCreateVector(VT_UI1, 0, postLength);
if (!psa)
{
return E_OUTOFMEMORY;
}
hr = SafeArrayAccessData(psa, (LPVOID*)&pPostData);
memcpy(pPostData, szPostData, postLength);
hr = SafeArrayUnaccessData(psa);
V_VT(pvPostData) = VT_ARRAY | VT_UI1;
V_ARRAY(pvPostData) = psa;
return NOERROR;
}
akiko 2003-10-17
  • 打赏
  • 举报
回复
ShellExecute(0,0,"iexplore.exe",0,0,SW_SHOW);

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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