风之语
posts(135)
comments(158)
trackbacks(1)
BlogJava
联系
聚合
管理
News
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
ajax(1)
AppFuse(1)
iText(1)
JSF(8)
linux(3)
maven(1)
MSTR
Open XML(1)
Oracle(8)
RCP
Struts(2)
SybaseIQ(6)
tapestry
tomcat(2)
webservice(1)
收藏(25)
数据仓库(9)
架构设计(3)
生活(1)
项目管理(2)
随笔档案
2008年9月 (1)
2008年7月 (2)
2008年6月 (4)
2008年5月 (6)
2008年4月 (1)
2008年3月 (1)
2007年12月 (2)
2007年11月 (5)
2007年10月 (2)
2007年9月 (3)
2007年8月 (3)
2007年4月 (1)
2007年3月 (2)
2007年2月 (2)
2007年1月 (2)
2006年12月 (3)
2006年8月 (2)
2006年7月 (2)
2006年6月 (2)
2006年4月 (2)
2006年3月 (1)
2006年2月 (3)
2006年1月 (6)
2005年12月 (6)
2005年11月 (4)
2005年10月 (17)
2005年9月 (26)
2005年8月 (16)
2005年7月 (8)
相册
技术图片
收藏夹
java
link
My wife
My wife's blog
最新随笔
1. 设置正确的Content-Type以解决Ext的中文乱码问题
2. 关于JFreechart柱状图 柱上不能显示数值的问题
3. 快速创建个性化iGoogle主题的3个方法
4. Apache Maven 2 简介(目前最全的技术资料了)
5. 使用 AppFuse 的七个理由
6. MyEclipse 6.5注册
7. tomcat中的Server.xml元素详解
8. Java 使用SWT 创建COM对象
9. 如何在Java中嵌入IE
10. 如何在Java内读取COM接口中所有的方法和属性
搜索
积分与排名
积分 - 143873
排名 - 53
最新评论
1. re: 一个政府项目总结
政府项目只是看上去很好 实际做起来很慢 能拖死你.....
--testtt
2. re: hibernate3 大批量更新/删除数据 (update/delete)
hibernate批量更新或删除效果不理想,还是绕过hibernate 用JDBC吧
--ssss
3. re: 基于Weblogic Server 8.1 ant工具开发Web Service
如果知道 问题所以请联系rxiaoliang@sina.com
--liuxl
4. re: 基于Weblogic Server 8.1 ant工具开发Web Service
评论内容较长,点击标题查看
--liuxl
5. re: MyEclipse4.0破解[未登录]
这个破解文件怎么下载不下来啊
--long
阅读排行榜
评论排行榜
View Post
如何在Java内读取COM接口中所有的方法和属性
package
com.bovy.officehelper;
import
org.eclipse.swt.SWT;
import
org.eclipse.swt.SWTException;
import
org.eclipse.swt.internal.ole.win32.TYPEATTR;
import
org.eclipse.swt.ole.win32.OLE;
import
org.eclipse.swt.ole.win32.OleAutomation;
import
org.eclipse.swt.ole.win32.OleControlSite;
import
org.eclipse.swt.ole.win32.OleFrame;
import
org.eclipse.swt.ole.win32.OleFunctionDescription;
import
org.eclipse.swt.ole.win32.OlePropertyDescription;
import
org.eclipse.swt.widgets.Shell;
public
class
COMLister
...
{
public
static
void
main(String[] args)
...
{
if
(args.length
==
0
)
...
{
System.out.println(
"
Usage: java COMLister <program id>
"
);
return
;
}
String progID
=
args[
0
];
Shell shell
=
new
Shell();
OleFrame frame
=
new
OleFrame(shell, SWT.NONE);
OleControlSite site
=
null
;
OleAutomation auto
=
null
;
try
...
{
site
=
new
OleControlSite(frame, SWT.NONE, progID);
auto
=
new
OleAutomation(site);
}
catch
(SWTException ex)
...
{
System.out.println(
"
Unable to open type library for
"
+
progID);
return
;
}
TYPEATTR typeattr
=
auto.getTypeInfoAttributes();
if
(typeattr
!=
null
)
...
{
if
(typeattr.cFuncs
>
0
)
System.out.println(
"
Functions for
"
+
progID
+
"
:
"
);
for
(
int
i
=
0
; i
<
typeattr.cFuncs; i
++
)
...
{
OleFunctionDescription data
=
auto.getFunctionDescription(i);
String argList
=
""
;
int
firstOptionalArgIndex
=
data.args.length
-
data.optionalArgCount;
for
(
int
j
=
0
; j
<
data.args.length; j
++
)
...
{
argList
+=
"
[
"
;
if
(j
>=
firstOptionalArgIndex)
argList
+=
"
optional,
"
;
argList
+=
getDirection(data.args[j].flags)
+
"
]
"
+
getTypeName(data.args[j].type)
+
"
"
+
data.args[j].name;
if
(j
<
data.args.length
-
1
)
argList
+=
"
,
"
;
}
System.out.println(getInvokeKind(data.invokeKind)
+
"
(id =
"
+
data.id
+
"
) :
"
+
"
Signature :
"
+
getTypeName(data.returnType)
+
"
"
+
data.name
+
"
(
"
+
argList
+
"
)
"
+
"
Description :
"
+
data.documentation
+
"
Help File :
"
+
data.helpFile
+
"
"
);
}
if
(typeattr.cVars
>
0
)
System.out.println(
"
Variables for
"
+
progID
+
"
:
"
);
for
(
int
i
=
0
; i
<
typeattr.cVars; i
++
)
...
{
OlePropertyDescription data
=
auto.getPropertyDescription(i);
System.out.println(
"
PROPERTY (id =
"
+
data.id
+
"
) :
"
+
"
Name :
"
+
data.name
+
"
Type :
"
+
getTypeName(data.type)
+
"
"
);
}
}
auto.dispose();
shell.dispose();
}
private
static
String getTypeName(
int
type)
...
{
switch
(type)
...
{
case
OLE.VT_BOOL:
return
"
boolean
"
;
case
OLE.VT_R4:
return
"
float
"
;
case
OLE.VT_R8:
return
"
double
"
;
case
OLE.VT_I4:
return
"
int
"
;
case
OLE.VT_DISPATCH:
return
"
IDispatch
"
;
case
OLE.VT_UNKNOWN:
return
"
IUnknown
"
;
case
OLE.VT_I2:
return
"
short
"
;
case
OLE.VT_BSTR:
return
"
String
"
;
case
OLE.VT_VARIANT:
return
"
Variant
"
;
case
OLE.VT_CY:
return
"
Currency
"
;
case
OLE.VT_DATE:
return
"
Date
"
;
case
OLE.VT_UI1:
return
"
unsigned char
"
;
case
OLE.VT_UI4:
return
"
unsigned int
"
;
case
OLE.VT_USERDEFINED:
return
"
UserDefined
"
;
case
OLE.VT_HRESULT:
return
"
int
"
;
case
OLE.VT_VOID:
return
"
void
"
;
case
OLE.VT_BYREF
|
OLE.VT_BOOL:
return
"
boolean *
"
;
case
OLE.VT_BYREF
|
OLE.VT_R4:
return
"
float *
"
;
case
OLE.VT_BYREF
|
OLE.VT_R8:
return
"
double *
"
;
case
OLE.VT_BYREF
|
OLE.VT_I4:
return
"
int *
"
;
case
OLE.VT_BYREF
|
OLE.VT_DISPATCH:
return
"
IDispatch *
"
;
case
OLE.VT_BYREF
|
OLE.VT_UNKNOWN:
return
"
IUnknown *
"
;
case
OLE.VT_BYREF
|
OLE.VT_I2:
return
"
short *
"
;
case
OLE.VT_BYREF
|
OLE.VT_BSTR:
return
"
String *
"
;
case
OLE.VT_BYREF
|
OLE.VT_VARIANT:
return
"
Variant *
"
;
case
OLE.VT_BYREF
|
OLE.VT_CY:
return
"
Currency *
"
;
case
OLE.VT_BYREF
|
OLE.VT_DATE:
return
"
Date *
"
;
case
OLE.VT_BYREF
|
OLE.VT_UI1:
return
"
unsigned char *
"
;
case
OLE.VT_BYREF
|
OLE.VT_UI4:
return
"
unsigned int *
"
;
case
OLE.VT_BYREF
|
OLE.VT_USERDEFINED:
return
"
UserDefined *
"
;
}
return
"
unknown
"
+
type;
}
private
static
String getDirection(
int
direction)
...
{
String dirString
=
""
;
boolean
comma
=
false
;
if
((direction
&
OLE.IDLFLAG_FIN)
!=
0
)
...
{
dirString
+=
"
in
"
;
comma
=
true
;
}
if
((direction
&
OLE.IDLFLAG_FOUT)
!=
0
)
...
{
if
(comma)
dirString
+=
"
,
"
;
dirString
+=
"
out
"
;
comma
=
true
;
}
if
((direction
&
OLE.IDLFLAG_FLCID)
!=
0
)
...
{
if
(comma)
dirString
+=
"
,
"
;
dirString
+=
"
lcid
"
;
comma
=
true
;
}
if
((direction
&
OLE.IDLFLAG_FRETVAL)
!=
0
)
...
{
if
(comma)
dirString
+=
"
,
"
;
dirString
+=
"
retval
"
;
}
return
dirString;
}
private
static
String getInvokeKind(
int
invKind)
...
{
switch
(invKind)
...
{
case
OLE.INVOKE_FUNC:
return
"
METHOD
"
;
case
OLE.INVOKE_PROPERTYGET:
return
"
PROPERTY GET
"
;
case
OLE.INVOKE_PROPERTYPUT:
return
"
PROPERTY PUT
"
;
case
OLE.INVOKE_PROPERTYPUTREF:
return
"
PROPERTY PUT BY REF
"
;
}
return
"
unknown
"
+
invKind;
}
}
posted on 2008-05-18 09:15
风
阅读(152)
评论(0)
编辑
收藏
IT新闻
新用户注册
刷新评论列表
标题
姓名
主页
验证码
*
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
相关链接:
网站导航:
博客园
BlogJava
博客生活
IT博客网
C++博客
PHP博客
博客园社区
管理博客
教师博客
天文博客
汽车博客
足球博客
股票博客
电子博客
管理