如何改变ie窗口大小并向此窗口传送url显示网页我想用vc6做如下工作:
1. 打开一个ie窗口 -- 用ShellExecuteEx或CreateURLMoniker已实现
2. 控制此窗口大小 -- 看了些文章,大致思路:FindWindow()得到需要的窗口的句柄,用SetWindowPos()设置位置和尺寸,但还没试过,不知是否可行
3. 向此窗口传送url并显示网页内容 -- 以前有看过某些软件,在最近打开的ie窗口中,连接并打开自己需要的特定页面。如果没有打开的ie窗口,则自己打开一个。
第三点我没有思路。不知道哪位大虾,可以指点一下,谢谢.
1. 打开一个ie窗口 -- 用ShellExecuteEx或CreateURLMoniker已实现
2. 控制此窗口大小 -- 看了些文章,大致思路:FindWindow()得到需要的窗口的句柄,用SetWindowPos()设置位置和尺寸,但还没试过,不知是否可行
3. 向此窗口传送url并显示网页内容 -- 以前有看过某些软件,在最近打开的ie窗口中,连接并打开自己需要的特定页面。如果没有打开的ie窗口,则自己打开一个。
第三点我没有思路。不知道哪位大虾,可以指点一下,谢谢.
解决方案 »
- Directshow-视频传输播放时报错
- 用appendmenu增加菜单,不能立即更新
- 【初学者】Excel的基本问题
- dhcp编程的资料谁有啊?
- 往CTreeCtrl的父Item上插入子Item的问题!!
- ******************请问如何检测远程主机某一个udp的端口是否处于监听状态**************
- 如何把文本中的数据显示在listcontrol上
- 外人能体会到程序员的苦吗?
- 如何在程序中直接配置数据源?
- 各位大虾,我在CView里写了一些字,想再次选定加以修改或删除,怎样做?
- 在treectl选中某一分支点右键弹出菜单,怎样实现?
- 如何实现这样的对话框(登录然后显示TreeView)
LRESULT lRes;
HINSTANCE hInst = ::LoadLibrary( _T("OLEACC.DLL") ); UINT nMsg = ::RegisterWindowMessage( _T("WM_HTML_GETOBJECT") );
::SendMessageTimeout(hWnd, nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000, (DWORD*)&lRes );
LPFNOBJECTFROMLRESULT pfObjectFromLresult = (LPFNOBJECTFROMLRESULT)::GetProcAddress( hInst, _T("ObjectFromLresult") );
if ( pfObjectFromLresult != NULL )
{
HRESULT hr;
IWebBrowser2* pWeb;
hr = (*pfObjectFromLresult)( lRes, IID_IWebBrowser2, 0, (void**)&pWeb);
//以上代码可以获得IE窗口的IID_IWebBrowser2接口
CComBSTR bstrURL("www.sina.com.cn");
CComVariant vtEmpty; pWeb->Navigate(bstrURL, &vtEmpty, &vtEmpty,
&vtEmpty, &vtEmpty);
// 完成向此窗口传送url并显示网页内容
[in] VARIANT* TargetFrameName, [in] VARIANT* PostData,
[in] VARIANT* Headers);
为了进行POST操作,只需要URL,PostData和Headers参数即可,其它参数请参阅MSDN中的Internet Client SDK,为了向服务器发出数据,必须保证HTTP服务器地址正确,同时要保证PostData参数包括一个SAFEARRAY数据, 头必须包括BSTR,它包括:Content-Type: application/x-www-form-urlencoded 此头说明了发送的数据是依什么编码进行编码的。请将下面的ASP页保存在IIS服务器上。<HTML>
<%
cFlavor = Request("Flavor")
cName = Request("FName")
%>
<BODY>
Hello, <% =cName %>. <br>
One scoop of <% =cFlavor %> coming right up!
</BODY>
</HTML>
建立一个Win32控制台应用程序。
下面是具体代码:
#include <windows.h>
#define INITGUID
#include <initguid.h>
#include <exdisp.h>
#include <memory.h>HRESULT GetPostData(LPVARIANT pvPostData);void main()
{
HRESULT hr;
IWebBrowserApp* pWBApp = NULL; // Derived from IWebBrowser
BSTR bstrURL = NULL, bstrHeaders = NULL;
VARIANT vFlags = {0},
vTargetFrameName = {0},
vPostData = {0},
vHeaders = {0};if (FAILED(hr = CoInitialize(NULL)))
{
return;
}if (FAILED(hr = CoCreateInstance(CLSID_InternetExplorer,
NULL,
CLSCTX_SERVER,
IID_IWebBrowserApp,
(LPVOID*)&pWBApp)))
{
goto Error;
}bstrURL = SysAllocString(L"http://<server>/scripts/navpost.asp");
if (!bstrURL)
{
goto Error;
}bstrHeaders = SysAllocString(
L"Content-Type: application/x-www-form-urlencoded\r\n");
if (!bstrHeaders)
{
goto Error;
}V_VT(&vHeaders) = VT_BSTR;
V_BSTR(&vHeaders) = bstrHeaders;hr = GetPostData(&vPostData);
hr = pWBApp->Navigate(bstrURL, &vFlags,
&vTargetFrameName, &vPostData, &vHeaders);
pWBApp->put_Visible(VARIANT_TRUE);Error:
if (bstrURL) SysFreeString(bstrURL);
if (bstrHeaders) SysFreeString(bstrHeaders);
VariantClear(&vPostData);
if (pWBApp) pWBApp->Release();
CoUninitialize();
}// Pack some data into a SAFEARRAY of BYTEs. Return in a VARIANT
HRESULT GetPostData(LPVARIANT pvPostData)
{
HRESULT hr;
LPSAFEARRAY psa;
LPCTSTR cszPostData = "FName=Matt&Flavor=Mocha+Chip";
UINT cElems = lstrlen(cszPostData);
LPSTR pPostData;if (!pvPostData)
{
return E_POINTER;
}VariantInit(pvPostData);psa = SafeArrayCreateVector(VT_UI1, 0, cElems);
if (!psa)
{
return E_OUTOFMEMORY;
}hr = SafeArrayAccessData(psa, (LPVOID*)&pPostData);
memcpy(pPostData, cszPostData, cElems);
hr = SafeArrayUnaccessData(psa);V_VT(pvPostData) = VT_ARRAY | VT_UI1;V_ARRAY(pvPostData) = psa;
return NOERROR;
}