在线等!!紧急,WebBrowser控件问题,解决马上100分结贴

时间:2021-10-23 19:01:13
我用Winsock下载了http://localhost/index.htm页面后

把Html发送到WebBrowser Control显示。

结果WebBrowser Control自动下载了所有html中的图片,css等。

问题1:我如何控制显示它那个图片不下载,那个图片下载?

问题2:WebBrowser Control自动用当前系统设置下载html中的图片吗?

如何我自己来控制? 例如如果本机IE设置了代理,结果就是从代理下在那些图片了。

我如何控制来让我的Winsock来完成所有的html内容(图片,css等)下载?

-----------------------------
我想是WebBrowser控件的几个响应事件吧?谁知道?给个简单例子。马上结帖.thx

5 个解决方案

#1


你可以在WebBrowser就可以过滤的,不然你就把些url改为相对的用临时文件了。

#2


用OnBeforeNavigate2处理,
如果你处理和内容有关 
就用OnDownloadComplete

#3


给个简单例子好么?测试后马上结贴

#4


问题1,

我如何从OnBeforeNavigate2中提取 http://localhost/1.gif等每个连接

问题2,

我提取连接后用Winsock连接下载后,是应该把数据送给WebBrowser控件吧?通过那个VARIANT值?

问题3,

可否给个VARIANT值简单的描述,我一直对它很迷茫。不知道如何转换

#5


对问题3我倒知道一点:
typedef struct FARSTRUCT tagVARIANT VARIANT;
typedef struct tagVARIANT  {
   VARTYPE vt;
   unsigned short wReserved1;
   unsigned short wReserved2;
   unsigned short wReserved3;
   union {
      Byte                    bVal;                 // VT_UI1.
      Short                   iVal;                 // VT_I2.
      long                    lVal;                 // VT_I4.
      float                   fltVal;               // VT_R4.
      double                  dblVal;               // VT_R8.
      VARIANT_BOOL            boolVal;              // VT_BOOL.
      SCODE                   scode;                // VT_ERROR.
      CY                      cyVal;                // VT_CY.
      DATE                    date;                 // VT_DATE.
      BSTR                    bstrVal;              // VT_BSTR.
      DECIMAL                 FAR* pdecVal          // VT_BYREF|VT_DECIMAL.
      IUnknown                FAR* punkVal;         // VT_UNKNOWN.
      IDispatch               FAR* pdispVal;        // VT_DISPATCH.
      SAFEARRAY               FAR* parray;          // VT_ARRAY|*.
      Byte                    FAR* pbVal;           // VT_BYREF|VT_UI1.
      short                   FAR* piVal;           // VT_BYREF|VT_I2.
      long                    FAR* plVal;           // VT_BYREF|VT_I4.
      float                   FAR* pfltVal;         // VT_BYREF|VT_R4.
      double                  FAR* pdblVal;         // VT_BYREF|VT_R8.
      VARIANT_BOOL            FAR* pboolVal;        // VT_BYREF|VT_BOOL.
      SCODE                   FAR* pscode;          // VT_BYREF|VT_ERROR.
      CY                      FAR* pcyVal;          // VT_BYREF|VT_CY.
      DATE                    FAR* pdate;           // VT_BYREF|VT_DATE.
      BSTR                    FAR* pbstrVal;        // VT_BYREF|VT_BSTR.
      IUnknown                FAR* FAR* ppunkVal;   // VT_BYREF|VT_UNKNOWN.
      IDispatch               FAR* FAR* ppdispVal;  // VT_BYREF|VT_DISPATCH.
      SAFEARRAY               FAR* FAR* pparray;    // VT_ARRAY|*.
      VARIANT                 FAR* pvarVal;         // VT_BYREF|VT_VARIANT.
      void                    FAR* byref;           // Generic ByRef.
      char                    cVal;                 // VT_I1.
      unsigned short          uiVal;                // VT_UI2.
      unsigned long           ulVal;                // VT_UI4.
      int                     intVal;               // VT_INT.
      unsigned int            uintVal;              // VT_UINT.
      char FAR *              pcVal;                // VT_BYREF|VT_I1.
      unsigned short FAR *    puiVal;               // VT_BYREF|VT_UI2.
      unsigned long FAR *     pulVal;               // VT_BYREF|VT_UI4.
      int FAR *               pintVal;              // VT_BYREF|VT_INT.
      unsigned int FAR *      puintVal;             //VT_BYREF|VT_UINT.
   };
};
比如说onbefornavigate2函数中的参数VARIANT* URL,是BSTR类型,对应的其值为:URL->bstrVal,
关于variant的转换有很多函数对于URL来说,可以通过OLE2CT,OLE2C2W等函数转换

#1


你可以在WebBrowser就可以过滤的,不然你就把些url改为相对的用临时文件了。

#2


用OnBeforeNavigate2处理,
如果你处理和内容有关 
就用OnDownloadComplete

#3


给个简单例子好么?测试后马上结贴

#4


问题1,

我如何从OnBeforeNavigate2中提取 http://localhost/1.gif等每个连接

问题2,

我提取连接后用Winsock连接下载后,是应该把数据送给WebBrowser控件吧?通过那个VARIANT值?

问题3,

可否给个VARIANT值简单的描述,我一直对它很迷茫。不知道如何转换

#5


对问题3我倒知道一点:
typedef struct FARSTRUCT tagVARIANT VARIANT;
typedef struct tagVARIANT  {
   VARTYPE vt;
   unsigned short wReserved1;
   unsigned short wReserved2;
   unsigned short wReserved3;
   union {
      Byte                    bVal;                 // VT_UI1.
      Short                   iVal;                 // VT_I2.
      long                    lVal;                 // VT_I4.
      float                   fltVal;               // VT_R4.
      double                  dblVal;               // VT_R8.
      VARIANT_BOOL            boolVal;              // VT_BOOL.
      SCODE                   scode;                // VT_ERROR.
      CY                      cyVal;                // VT_CY.
      DATE                    date;                 // VT_DATE.
      BSTR                    bstrVal;              // VT_BSTR.
      DECIMAL                 FAR* pdecVal          // VT_BYREF|VT_DECIMAL.
      IUnknown                FAR* punkVal;         // VT_UNKNOWN.
      IDispatch               FAR* pdispVal;        // VT_DISPATCH.
      SAFEARRAY               FAR* parray;          // VT_ARRAY|*.
      Byte                    FAR* pbVal;           // VT_BYREF|VT_UI1.
      short                   FAR* piVal;           // VT_BYREF|VT_I2.
      long                    FAR* plVal;           // VT_BYREF|VT_I4.
      float                   FAR* pfltVal;         // VT_BYREF|VT_R4.
      double                  FAR* pdblVal;         // VT_BYREF|VT_R8.
      VARIANT_BOOL            FAR* pboolVal;        // VT_BYREF|VT_BOOL.
      SCODE                   FAR* pscode;          // VT_BYREF|VT_ERROR.
      CY                      FAR* pcyVal;          // VT_BYREF|VT_CY.
      DATE                    FAR* pdate;           // VT_BYREF|VT_DATE.
      BSTR                    FAR* pbstrVal;        // VT_BYREF|VT_BSTR.
      IUnknown                FAR* FAR* ppunkVal;   // VT_BYREF|VT_UNKNOWN.
      IDispatch               FAR* FAR* ppdispVal;  // VT_BYREF|VT_DISPATCH.
      SAFEARRAY               FAR* FAR* pparray;    // VT_ARRAY|*.
      VARIANT                 FAR* pvarVal;         // VT_BYREF|VT_VARIANT.
      void                    FAR* byref;           // Generic ByRef.
      char                    cVal;                 // VT_I1.
      unsigned short          uiVal;                // VT_UI2.
      unsigned long           ulVal;                // VT_UI4.
      int                     intVal;               // VT_INT.
      unsigned int            uintVal;              // VT_UINT.
      char FAR *              pcVal;                // VT_BYREF|VT_I1.
      unsigned short FAR *    puiVal;               // VT_BYREF|VT_UI2.
      unsigned long FAR *     pulVal;               // VT_BYREF|VT_UI4.
      int FAR *               pintVal;              // VT_BYREF|VT_INT.
      unsigned int FAR *      puintVal;             //VT_BYREF|VT_UINT.
   };
};
比如说onbefornavigate2函数中的参数VARIANT* URL,是BSTR类型,对应的其值为:URL->bstrVal,
关于variant的转换有很多函数对于URL来说,可以通过OLE2CT,OLE2C2W等函数转换