现在需要完成这样的功能:
1、在C/S框架的一个对话框上完成B/S的一些功能,也就是使用CWebBrowser2显示网页。
2、当网页里点击提交按钮时,能够获得输入框里的内容。
3、当IIS那边得到消息回复响应时,能够得到返回的内容。
请大家帮我,怎样完成上面的需求?
谢谢!
1、在C/S框架的一个对话框上完成B/S的一些功能,也就是使用CWebBrowser2显示网页。
2、当网页里点击提交按钮时,能够获得输入框里的内容。
3、当IIS那边得到消息回复响应时,能够得到返回的内容。
请大家帮我,怎样完成上面的需求?
谢谢!
解决方案 »
- 一个奇怪的内存泄露,估计是微软的BUG,找不到解决办法
- 多线程访问公共变量及线程同步的问题,问题描述清晰,回帖有分!
- _RecordSetPtr.Open中的SQL语句,如果带有DECLARE声明变量便不能执行,求解
- 如何判断当前窗口是处于最大化还是一般还是最小化状态?
- StretchDIBits+对话框的问题
- 响应函数的问题
- 超难-如何在mfc的activex中使用mfc控件,象cedit,ctoolbar等?
- 用API函数作串口通讯,如果串口号大于10,比如COM13,就无法打开串口,请问这是什么原因?如何解决?
- 如何用VC++开发网站?
- 怎么能让指向文件的指针回到文件开头的位置?现在该指针已经指向文件尾了。
- 在IDE中的执行结果跟单独执行不一样
- ConnectionPtr 和 RecordsetPtr
2、3都是asp/jsp的问题
继承IDispathc接口,实现Invoke方法VC中的示例:删除了VC自动生成的注释
class CDHTMLEventSink : public CCmdTarget
{
DECLARE_DYNCREATE(CDHTMLEventSink)
CDHTMLEventSink(); // protected constructor used by dynamic creation
public:
void OnBDblClick(IHTMLEventObj *pEvtObj);
CWnd* m_pWnd;
void SetParent(CWnd* objWnd);
void OnBClick(IHTMLEventObj *pEvtObj);
STDMETHOD(Invoke)(DISPID dispIdMember, REFIID, LCID, WORD, DISPPARAMS* pDisp, VARIANT* test, EXCEPINFO *, UINT *);
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CDHTMLEventSink)
public:
virtual void OnFinalRelease();
//}}AFX_VIRTUAL
// Implementation
protected:
virtual ~CDHTMLEventSink();
DECLARE_MESSAGE_MAP()
DECLARE_DISPATCH_MAP()
DECLARE_INTERFACE_MAP()
};
//.cpp
IMPLEMENT_DYNCREATE(CDHTMLEventSink, CCmdTarget)
CDHTMLEventSink::CDHTMLEventSink()
{
EnableAutomation();
}
//然后就是实现了Invoke函数
调用
void CMshtmlhookDlg::ConnectButton1(IHTMLButtonElement* pButtonElem)
{
HRESULT hr = 0;
IConnectionPointContainer* pCPC = NULL;
IConnectionPoint* pCP = NULL;
IUnknown* pUnk = NULL;
DWORD dwCookie;
// Check that this is a connectable object.
hr = pButtonElem->QueryInterface(IID_IConnectionPointContainer, (void**)&pCPC);
if (hr == S_OK)
{
//AfxMessageBox("ConnectionPointContainer");
// Find the connection point.
hr = pCPC->FindConnectionPoint(DIID_HTMLButtonElementEvents2, &pCP);
if (hr == S_OK)
{
//AfxMessageBox("Find connection point ");
// Advise the connection point.
// pUnk is the IUnknown interface pointer for your event sink
CDHTMLEventSink* pSink = new CDHTMLEventSink;
pSink->SetParent(this);
IUnknown* pUnk = pSink->GetInterface(&IID_IUnknown);
hr = pCP->Advise(pUnk, &dwCookie);
pCP->Release();
}
pCPC->Release();
}
}
然后通过IHTMLDocument2的接口得到你要的那个页面元素,把value取出来关于3,取这个信息的目的是什么?如果是读cookie,那IHTMLDocument2本身就可以做查一下MSDN,这几步应该都不复杂
继承IDispathc接口,实现Invoke方法 这是用来截获页面事件的.