免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
一篇使用COM操縱SWT Browser控件的文章
一篇使用COM操縱SWT Browser控件的文章
2006-07-12 00:11:10
在Eclipse論壇上看到的文章,很不錯,拿過來共享一下.
 
通過OleAutomation 來調用Browser內部的瀏覽器組件打印,如果對SWT調用COM操作不熟悉,請參閱相關文檔。

常用方法列表
ExecWB(1,1) 打開
ExecWB(2,1) 關閉現在所有的IE窗口,并打開一個新窗口
ExecWB(4,1) 保存網頁
ExecWB(6,1) 打印
ExecWB(7,1) 打印預覽
ExecWB(8,1) 打印頁面設置
ExecWB(10,1) 查看頁面屬性
ExecWB(17,1) 全選
ExecWB(22,1) 刷新
ExecWB(45,1) 關閉窗體無提示


//首先獲取Browser內部的OleClientSite,也就是瀏覽器對象
//此方式打破了Browser封裝,一般不建議使用
OleClientSite clientSite = (OleClientSite) ((Composite) browser.getChildren()[0]).getChildren()[0];

//創(chuàng)建OleAutomation對象
OleAutomation auto = new OleAutomation(clientSite);
//調用OleAutomation對象的一個方法,例如 ExecWB(7,1)打印預覽
invoke(auto,"ExecWB",7,1);
//釋放OleAutomation對象
auto.dispose();

下面這段代碼是對OleAutomation方法調用的封裝。提供了簡單的調用
OleAutomatinon方法。

對于任何OleAutomation對象,只需要invoke(Ole對象,"方法名",參數列表...);



  /**
  * 執(zhí)行OleAutomation的一個方法
  * @param automation
  * @param funcName 方法名
  * @param values 參數列表
  * @return 返回值
  */
  public Object invoke(OleAutomation automation, String funcName, Object... values) {
     //獲取方法ID
    int[] rgdispid = automation.getIDsOfNames(new String[] { funcName });
    if (rgdispid == null || rgdispid.length == 0) {
        return null;
    }

    int dispIdMember = rgdispid[0];

    if (values == null || values.length == 0) {
         //無參數方法調用
        Variant pVarResult = automation.invoke(dispIdMember);
        if (pVarResult != null) {
          Object value = getValue(pVarResult);
          pVarResult.dispose();
          return value;
        }
    } else {
         
         //構造參數列表
        Variant[] variants = new Variant[values.length];
        for (int i = 0; i < values.length; i++) {
          Variant variant = createVariant(values
);
          variants
= variant;
        }

        Variant pVarResult = automation.invoke(dispIdMember, variants);
       
        //釋放參數對象
        for (int i = 0; i < variants.length; i++) {
          variants
.dispose();
        }
       
        //獲取調用結果
        if (pVarResult != null) {
          Object value = getValue(pVarResult);
          pVarResult.dispose();
          return value;
        }

    }

    return null;

  }

  /**
  * 將Java對象轉換為Variant
  * @param value
  * @return
  */
 
  private Variant createVariant(Object value) {
    Variant variant = null;

    if (value == null) {
        variant = new Variant();
    } else if (value instanceof Boolean) {
        variant = new Variant(((Boolean) value).booleanValue());
    } else if (value instanceof Short) {
        variant = new Variant(((Short) value).shortValue());
    } else if (value instanceof Integer) {
        variant = new Variant(((Integer) value).intValue());
    } else if (value instanceof Float) {
        variant = new Variant(((Float) value).floatValue());
    } else if (value instanceof String) {
        variant = new Variant(value.toString());
    } else if (value instanceof IDispatch) {
        variant = new Variant((IDispatch) value);
    } else if (value instanceof IUnknown) {
        variant = new Variant((IUnknown) value);
    } else if (value instanceof OleAutomation) {
        variant = new Variant((OleAutomation) value);
    }
    return variant;
  }



  /**
  * 將Variant轉換為Java對象
  * @param variant
  * @return
  */
 
  private Object getValue(Variant variant) {

    short type = variant.getType();

    switch (type) {
    case COM.VT_BOOL:
        return variant.getBoolean();
    case COM.VT_I2:
        return variant.getShort();
    case COM.VT_I4:
        return variant.getInt();
    case COM.VT_R4:
        return variant.getFloat();
    case COM.VT_BSTR:
        return variant.getString();
    case COM.VT_DISPATCH:
        return variant.getAutomation();
    case COM.VT_UNKNOWN:
        return variant;
    case COM.VT_EMPTY:
        return null;
    }
    if ((type & COM.VT_BYREF) != 0) {
        return variant.getByRef();
    }

    return null;
  }
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
SWT中通過Automatioin的方式訪問IE(升級版)
CDHtmlDialog實現調用html中js函數-江湖宵小-搜狐空間
Button.onclick()事件匯總
Microsoft Web Browser控件的常用功能 - 王朝網絡 - 網絡王朝 - ...
web開發(fā)常用小技巧(下)
IE功能匯總(javascript)
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服