亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? oleautomation.java

?? 源碼為Eclipse開源開發(fā)平臺桌面開發(fā)工具SWT的源代碼,
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/******************************************************************************* * Copyright (c) 2000, 2003 IBM Corporation and others. * All rights reserved. This program and the accompanying materials  * are made available under the terms of the Common Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/cpl-v10.html *  * Contributors: *     IBM Corporation - initial API and implementation *******************************************************************************/package org.eclipse.swt.ole.win32;import org.eclipse.swt.internal.ole.win32.*;import org.eclipse.swt.internal.win32.*;/** * OleAutomation provides a generic mechanism for accessing functionality that is  * specific to a particular ActiveX Control or OLE Document. * * <p>The OLE Document or ActiveX Control must support the IDispatch interface in order to provide * OleAutomation support. The additional functionality provided by the OLE Object is specified in  * its IDL file.  The additional methods can either be to get property values (<code>getProperty</code>),  * to set property values (<code>setProperty</code>) or to invoke a method (<code>invoke</code> or * <code>invokeNoReply</code>).  Arguments are passed around in the form of <code>Variant</code>  * objects. * * <p>Here is a sample IDL fragment: * * <pre> *	interface IMyControl : IDispatch *	{ *		[propget, id(0)] HRESULT maxFileCount([retval, out] int *c); *		[propput, id(0)] HRESULT maxFileCount([in] int c); *		[id(1)]	HRESULT AddFile([in] BSTR fileName); *	}; * </pre> * * <p>An example of how to interact with this extended functionality is shown below: * * <code><pre> *	OleAutomation automation = new OleAutomation(myControlSite); * *	// Look up the ID of the maxFileCount parameter *	int[] rgdispid = automation.getIDsOfNames(new String[]{"maxFileCount"}); *	int maxFileCountID = rgdispid[0]; * *	// Set the property maxFileCount to 100: *	if (automation.setProperty(maxFileCountID, new Variant(100))) { *		System.out.println("Max File Count was successfully set."); *	} * *	// Get the new value of the maxFileCount parameter: *	Variant pVarResult = automation.getProperty(maxFileCountID); *	if (pVarResult != null) { *		System.out.println("Max File Count is "+pVarResult.getInt()); *	} * *	// Invoke the AddFile method *	// Look up the IDs of the AddFile method and its parameter *	rgdispid = automation.getIDsOfNames(new String[]{"AddFile", "fileName"});  *	int dispIdMember = rgdispid[0]; *	int[] rgdispidNamedArgs = new int[] {rgdispid[1]}; * *	// Convert arguments to Variant objects *	Variant[] rgvarg = new Variant[1]; *	String fileName = "C:\\testfile"; * 	rgvarg[0] = new Variant(fileName); * *	// Call the method *	Variant pVarResult = automation.invoke(dispIdMember, rgvarg, rgdispidNamedArgs); * *	// Check the return value * 	if (pVarResult == null || pVarResult.getInt() != OLE.S_OK){ * 		System.out.println("Failed to add file "+fileName); *	} * *	automation.dispose(); * * </pre></code> */public final class OleAutomation {	private IDispatch objIDispatch;	private String exceptionDescription;	private ITypeInfo objITypeInfo;	OleAutomation(IDispatch idispatch) {	if (idispatch == null) OLE.error(OLE.ERROR_INVALID_INTERFACE_ADDRESS);	objIDispatch = idispatch;	objIDispatch.AddRef();		int[] ppv = new int[1];	int result = objIDispatch.GetTypeInfo(0, COM.LOCALE_USER_DEFAULT, ppv);	if (result == OLE.S_OK) {		objITypeInfo = new ITypeInfo(ppv[0]);		objITypeInfo.AddRef();	}}/** * Creates an OleAutomation object for the specified client. * * @param clientSite the site for the OLE Document or ActiveX Control whose additional functionality  *        you need to access * * @exception SWTError <ul> *		<li>ERROR_INVALID_INTERFACE_ADDRESS when called with an invalid client site *	</ul> */ public OleAutomation(OleClientSite clientSite) {	if (clientSite == null) OLE.error(OLE.ERROR_INVALID_INTERFACE_ADDRESS);	objIDispatch = clientSite.getAutomationObject();	int[] ppv = new int[1];	int result = objIDispatch.GetTypeInfo(0, COM.LOCALE_USER_DEFAULT, ppv);	if (result == OLE.S_OK) {		objITypeInfo = new ITypeInfo(ppv[0]);		objITypeInfo.AddRef();	} }/** * Disposes the automation object. * <p> * This method releases the IDispatch interface on the OLE Document or ActiveX Control. * Do not use the OleAutomation object after it has been disposed. */public void dispose() {	if (objIDispatch != null){		objIDispatch.Release();	}	objIDispatch = null;		if (objITypeInfo != null){		objITypeInfo.Release();	}	objITypeInfo = null;}int getAddress() {		return objIDispatch.getAddress();}public String getHelpFile(int dispId) {	if (objITypeInfo == null) return null;	String[] file = new String[1];	int rc = objITypeInfo.GetDocumentation(dispId, null, null, null, file );	if (rc == OLE.S_OK) return file[0];	return null;	}public String getDocumentation(int dispId) {	if (objITypeInfo == null) return null;	String[] doc = new String[1];	int rc = objITypeInfo.GetDocumentation(dispId, null, doc, null, null );	if (rc == OLE.S_OK) return doc[0];	return null;}public OlePropertyDescription getPropertyDescription(int index) {	if (objITypeInfo == null) return null;	int[] ppVarDesc = new int[1];	int rc = objITypeInfo.GetVarDesc(index, ppVarDesc);	if (rc != OLE.S_OK) return null;	VARDESC1 vardesc = new VARDESC1();	COM.MoveMemory(vardesc, ppVarDesc[0], VARDESC1.sizeof);		OlePropertyDescription data = new OlePropertyDescription();	data.id = vardesc.memid;	data.name = getName(vardesc.memid);	data.type = vardesc.elemdescVar_tdesc_vt;	if (data.type == OLE.VT_PTR) {		short[] vt = new short[1];		COM.MoveMemory(vt, vardesc.elemdescVar_tdesc_union + 4, 2);		data.type = vt[0];	}	data.flags = vardesc.wVarFlags;	data.kind = vardesc.varkind;	data.description = getDocumentation(vardesc.memid);	data.helpFile = getHelpFile(vardesc.memid);		objITypeInfo.ReleaseVarDesc(ppVarDesc[0]);	return data;}public OleFunctionDescription getFunctionDescription(int index) {	if (objITypeInfo == null) return null;	int[] ppFuncDesc = new int[1];	int rc = objITypeInfo.GetFuncDesc(index, ppFuncDesc);	if (rc != OLE.S_OK) return null;	FUNCDESC1 funcdesc = new FUNCDESC1();	COM.MoveMemory(funcdesc, ppFuncDesc[0], FUNCDESC1.sizeof);		OleFunctionDescription data = new OleFunctionDescription();		data.id = funcdesc.memid;	data.optionalArgCount = funcdesc.cParamsOpt;	data.invokeKind = funcdesc.invkind;	data.funcKind = funcdesc.funckind;	data.flags = funcdesc.wFuncFlags;	data.callingConvention = funcdesc.callconv;	data.documentation = getDocumentation(funcdesc.memid);	data.helpFile = getHelpFile(funcdesc.memid);		String[] names = getNames(funcdesc.memid, funcdesc.cParams + 1);	if (names.length > 0) {		data.name = names[0];	}	data.args = new OleParameterDescription[funcdesc.cParams];	for (int i = 0; i < data.args.length; i++) {		data.args[i] = new OleParameterDescription();		if (names.length > i + 1) {			data.args[i].name = names[i + 1];		}		short[] vt = new short[1];			COM.MoveMemory(vt, funcdesc.lprgelemdescParam + i * 16 + 4, 2);						if (vt[0] == OLE.VT_PTR) {			int[] pTypedesc = new int[1];			COM.MoveMemory(pTypedesc, funcdesc.lprgelemdescParam + i * 16, 4);			short[] vt2 = new short[1];			COM.MoveMemory(vt2, pTypedesc[0] + 4, 2);			vt[0] = (short)(vt2[0] | COM.VT_BYREF);		}		data.args[i].type = vt[0];		short[] wParamFlags = new short[1];		COM.MoveMemory(wParamFlags, funcdesc.lprgelemdescParam + i * 16 + 12, 2);		data.args[i].flags = wParamFlags[0];		}		data.returnType = funcdesc.elemdescFunc_tdesc_vt;	if (data.returnType == OLE.VT_PTR) {		short[] vt = new short[1];		COM.MoveMemory(vt, funcdesc.elemdescFunc_tdesc_union + 4, 2);		data.returnType = vt[0];	}	objITypeInfo.ReleaseFuncDesc(ppFuncDesc[0]);	return data;}public TYPEATTR getTypeInfoAttributes() {	if (objITypeInfo == null) return null;	int[] ppTypeAttr = new int[1];	int rc = objITypeInfo.GetTypeAttr(ppTypeAttr);	if (rc != OLE.S_OK) return null;	TYPEATTR typeattr = new TYPEATTR();	COM.MoveMemory(typeattr, ppTypeAttr[0], TYPEATTR.sizeof);	objITypeInfo.ReleaseTypeAttr(ppTypeAttr[0]);	return typeattr;}public String getName(int dispId) {	if (objITypeInfo == null) return null;	String[] name = new String[1];	int rc = objITypeInfo.GetDocumentation(dispId, name, null, null, null );	if (rc == OLE.S_OK) return name[0];	return null;}public String[] getNames(int dispId, int maxSize) {	if (objITypeInfo == null) return new String[0];	String[] names = new String[maxSize];	int[] count = new int[1];	int rc = objITypeInfo.GetNames(dispId, names, maxSize, count);	if (rc == OLE.S_OK) {		String[] newNames = new String[count[0]];		System.arraycopy(names, 0, newNames, 0, count[0]);		return newNames;	}	return new String[0];}/** * Returns the positive integer values (IDs) that are associated with the specified names by the * IDispatch implementor.  If you are trying to get the names of the parameters in a method, the first  * String in the names array must be the name of the method followed by the names of the parameters. * * @param names an array of names for which you require the identifiers * * @return positive integer values that are associated with the specified names in the same *         order as the names where provided; or null if the names are unknown */public int[] getIDsOfNames(String[] names) {	int[] rgdispid = new int[names.length];	int result = objIDispatch.GetIDsOfNames(new GUID(), names, names.length, COM.LOCALE_USER_DEFAULT, rgdispid);	if (result != COM.S_OK) return null;		return rgdispid;}/** * Returns a description of the last error encountered. * * @return a description of the last error encountered */public String getLastError() {		return exceptionDescription;}/** * Returns the value of the property specified by the dispIdMember. * * @param dispIdMember the ID of the property as specified by the IDL of the ActiveX Control; the *        value for the ID can be obtained using OleAutomation.getIDsOfNames * * @return the value of the property specified by the dispIdMember or null */public Variant getProperty(int dispIdMember) {	Variant pVarResult = new Variant();	int result = invoke(dispIdMember, COM.DISPATCH_PROPERTYGET, null, null, pVarResult);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区自拍| 亚洲欧洲av在线| 另类欧美日韩国产在线| 欧美成人a视频| 国产成人亚洲综合a∨猫咪| 中文乱码免费一区二区| jlzzjlzz国产精品久久| 亚洲主播在线播放| 日韩一区二区免费电影| 国产传媒一区在线| 夜夜嗨av一区二区三区| 69久久夜色精品国产69蝌蚪网| 久久电影国产免费久久电影| 中文字幕精品一区二区三区精品| 91麻豆国产香蕉久久精品| 亚洲高清免费观看高清完整版在线观看 | 日本欧美一区二区在线观看| 久久综合资源网| 色婷婷综合久久久久中文 | 五月激情六月综合| 2021国产精品久久精品| 97久久超碰国产精品电影| 午夜精品福利视频网站| 欧美—级在线免费片| 欧美日韩亚洲综合| 国产一区在线观看视频| 亚洲综合色视频| 久久午夜老司机| 在线观看网站黄不卡| 国产伦精品一区二区三区免费迷 | 国产女人水真多18毛片18精品视频 | 日韩欧美高清一区| 97久久精品人人做人人爽50路| 日韩国产精品久久| 一区二区中文字幕在线| 欧美不卡123| 欧美无人高清视频在线观看| 国产精品一区二区三区网站| 亚洲国产中文字幕| 中文字幕的久久| 精品国产电影一区二区| 91久久精品一区二区三| 黄色成人免费在线| 午夜不卡av免费| 亚洲激情自拍偷拍| 国产日韩av一区| 欧美videos中文字幕| 91传媒视频在线播放| 成人精品国产福利| 精品在线视频一区| 肉肉av福利一精品导航| 亚洲天堂网中文字| 国产日韩精品一区二区浪潮av| 欧美大黄免费观看| 欧美精品亚洲一区二区在线播放| 99国产精品久久| 成人永久免费视频| 国产传媒一区在线| 国产福利不卡视频| 国产精品乡下勾搭老头1| 蜜臀久久99精品久久久久久9 | 欧美性受xxxx| 日本高清免费不卡视频| 99re6这里只有精品视频在线观看| 国产成人夜色高潮福利影视| 精品一区二区三区影院在线午夜 | 美女一区二区久久| 天天射综合影视| 亚洲第一福利一区| 午夜在线电影亚洲一区| 亚洲成人在线免费| 视频在线观看一区| 日韩专区一卡二卡| 日韩av一区二区三区| 奇米影视7777精品一区二区| 日韩**一区毛片| 蜜桃一区二区三区四区| 日韩电影在线观看电影| 麻豆中文一区二区| 精品亚洲免费视频| 国产成人免费在线观看不卡| 国产99久久久精品| 99久久久精品免费观看国产蜜| av电影在线观看不卡| 色综合天天综合网天天看片| 91福利视频久久久久| 欧美区一区二区三区| 91麻豆精品91久久久久久清纯| 7777精品伊人久久久大香线蕉| 欧美一级欧美三级在线观看| 精品国产sm最大网站| 国产午夜精品福利| 亚洲天堂网中文字| 亚洲成av人片| 激情av综合网| 99久久久精品| 3atv一区二区三区| 精品国产91久久久久久久妲己| 中文字幕国产精品一区二区| 亚洲免费看黄网站| 日韩精品免费专区| 福利视频网站一区二区三区| 91视频在线观看免费| 欧美日韩免费视频| 精品国产精品一区二区夜夜嗨| 久久久不卡影院| 一区二区三区精品视频| 久久精品国产精品亚洲红杏| 岛国一区二区三区| 欧美日韩色一区| 久久久精品国产免大香伊| 一区二区在线看| 极品销魂美女一区二区三区| 99re热这里只有精品视频| 日韩三级免费观看| 亚洲视频在线观看一区| 麻豆成人久久精品二区三区红| 成人av在线网| 日韩视频国产视频| 亚洲免费观看高清完整版在线观看熊| 日本不卡一区二区三区高清视频| 成人污视频在线观看| 51久久夜色精品国产麻豆| 国产精品免费av| 久久er精品视频| 91成人免费网站| 国产亚洲精品超碰| 日韩成人一级大片| 91视视频在线直接观看在线看网页在线看| 欧美一区二区三区四区高清| 亚洲欧洲av在线| 国产成人精品三级麻豆| 欧美一区二区三区视频在线| 亚洲精品ww久久久久久p站| 国产精品综合二区| 欧美一级二级三级乱码| 一区二区三区国产| 北岛玲一区二区三区四区| 欧美本精品男人aⅴ天堂| 一区二区三区四区视频精品免费| 国产成人亚洲综合a∨婷婷图片| 日韩一区二区三区四区| 亚洲福利电影网| 一本大道久久精品懂色aⅴ| 欧美激情综合五月色丁香| 国产在线视频一区二区| 在线电影一区二区三区| 亚洲高清免费观看高清完整版在线观看| 波多野结衣的一区二区三区| 国产日韩一级二级三级| 国产一区二区三区在线观看免费 | 精品av久久707| 蜜桃久久久久久| 777午夜精品视频在线播放| 亚洲激情五月婷婷| 91视视频在线观看入口直接观看www| 国产喂奶挤奶一区二区三区| 国产精品一二三在| 久久精品一二三| 国产精品一区二区三区网站| 久久影院午夜片一区| 国内精品自线一区二区三区视频| 日韩一级精品视频在线观看| 日韩高清在线观看| 日韩无一区二区| 久久国产麻豆精品| 久久综合狠狠综合| 国产成人av一区二区三区在线 | 久久久久久免费网| 国产东北露脸精品视频| 国产精品美女久久久久aⅴ| 成人性生交大合| 亚洲免费观看视频| 欧美日韩一级黄| 蜜乳av一区二区| 久久噜噜亚洲综合| 成人毛片视频在线观看| 自拍偷拍欧美激情| 欧美在线观看视频在线| 偷偷要91色婷婷| 日韩免费一区二区三区在线播放| 国产一区二区三区免费播放| 国产日韩三级在线| 日本高清视频一区二区| 日韩一区欧美二区| 26uuu久久综合| 成人高清在线视频| 亚洲一区二区视频在线观看| 欧美一区二区成人| 国产电影一区在线| 一区二区三区四区不卡视频 | 国产精品456| 亚洲色图色小说| 91精品国产色综合久久| 国产精品夜夜爽| 亚洲一本大道在线| 久久亚洲精精品中文字幕早川悠里 | 久久在线观看免费| 97久久久精品综合88久久| 日韩高清中文字幕一区|