[Help]Active Accessibility接口,无法获取火狐浏览器输网址控件的Name值 ?

cfans_2011 2010-12-10 04:02:05
//获取控件的Name属性时,返回S_OK,但是bstrName指针指向的内容总是为空。。。
hrGetName = (*paccChild)->get_accName(varChild, &bstrName);

//使用Inspect Objects捕获该控件
//Name值为"搜索书签和历史"
//Role值为"可编辑文字"
//ClassName值为"MozillaWindowClass"


请大家帮忙看下什么原因,谢谢!


资料参考网址如下:
MS Active Accessibility 接口技术编程尝试
http://www.vckbase.com/document/viewdoc/?id=883

IAccessible ( 二 )
http://www.cnblogs.com/GnagWang/archive/2010/04/20/1716449.html

如何获取网页密码框中的密码
http://www.vckbase.com/document/viewdoc/?id=288

取得火狐地址栏网址!(Active Accessibility的应用 VB代码)
http://hi.baidu.com/hidetray/blog/item/f60a58a695055c92d1435809.html

AccessibleObjectFromWindow函数介绍
http://msdn.microsoft.com/en-us/library/dd317978(v=vs.85).aspx

IAccessible::get_accName函数介绍
http://msdn.microsoft.com/en-us/library/ms696177


我参考上面的资料写的程序如下:
开发工具用的是VS2005(MFC对话框程序)

//相关头文件 Add 1210
#include <winuser.h>
#include <oleacc.h>
#pragma comment(lib,"oleacc.lib")

//全局变量 Add 1210
HWND hWndMainWindow;
IAccessible *paccMainWindow = NULL;
HRESULT hr;

IAccessible* paccControl = NULL;//输入框的 IAccessible 接口
VARIANT varControl; //子ID

/////////////////////////////////////////
BOOL CmsAccTestDlg::OnInitDialog()
{
CoInitialize(NULL);//初始化com Add1210
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}

//根据name,role,classname属性找控件
BOOL FindChild (IAccessible* paccParent, //传入火狐浏览器主窗体句柄
LPSTR szName, //传入子控件Name值
LPSTR szRole, //传入子控件Role值
LPSTR szClass,//传入子控件Class值
IAccessible** paccChild, //传出参数
VARIANT* pvarChild) //传出参数
{
HRESULT hr;
long numChildren; //子控件数量
unsigned long numFetched;
VARIANT varChild;
int index; //索引

//定义指针
IAccessible* pCAcc = NULL;
IEnumVARIANT* pEnum = NULL;
IDispatch* pDisp = NULL;
BOOL found = false; //是否找到需要的子控件

//得到父亲支持的IEnumVARIANT接口
hr = paccParent->QueryInterface(IID_IEnumVARIANT, (PVOID*) & pEnum);

if(pEnum)
pEnum->Reset(); //该行代码,不知道起什么作用???

//取得父亲拥有的可访问的子的数目
paccParent->get_accChildCount(&numChildren);

//搜索并比较每一个子ID,找到名字、角色、类与输入相一致的。
for(index = 1; index <= numChildren && !found; index++)
{
pCAcc = NULL; //临时变量
// 如果支持IEnumVARIANT接口,得到下一个子ID
//以及其对应的 IDispatch 接口
if (pEnum)
hr = pEnum->Next(1, &varChild, &numFetched);
else
{
//如果一个父亲不支持IEnumVARIANT接口,子ID就是它的序号
varChild.vt = VT_I4;
varChild.lVal = index;
}

// 找到此子ID对应的 IDispatch 接口
if (varChild.vt == VT_I4)
{
//通过子ID序号得到对应的 IDispatch 接口
pDisp = NULL; //初始化
hr = paccParent->get_accChild(varChild, &pDisp); //子IDispatch 接口
}
else
//如果父支持IEnumVARIANT接口可以直接得到子IDispatch 接口
pDisp = varChild.pdispVal; //子IDispatch 接口

// 通过 IDispatch 接口得到子的 IAccessible 接口 pCAcc
if (pDisp)
{
hr = pDisp->QueryInterface(IID_IAccessible, (void**)&pCAcc); //pCAcc

hr = pDisp->Release(); //返回S_FALSE
}

// Get information about the child
if(pCAcc)
{
//如果子支持IAccessible 接口,那么子ID就是CHILDID_SELF
VariantInit(&varChild); //初始化变量
varChild.vt = VT_I4;
varChild.lVal = CHILDID_SELF;
*paccChild = pCAcc; //给返回的变量赋值
}
else
//如果子不支持IAccessible 接口
*paccChild = paccParent;

if (*paccChild == NULL)
{
return FALSE;
}

//获取子类控件的name,role,classname属性
HRESULT hrGetName;
BSTR bstrName;

//获取Name属性值,一直返回S_OK
//varChild (I4=0)
//bstrName第一次地址有值,后面几次都是0,但是该指针指向的内容都为空
/**********************************************************/
hrGetName = (*paccChild)->get_accName(varChild, &bstrName);
/**********************************************************/

CString showMsg = COLE2CT(bstrName); //将BSTR转换为CString
//CString showMsg;
//showMsg.Format("%S",bstrName);
AfxMessageBox(showMsg); //显示获取的Name值
SysFreeString(bstrName);//释放资源

if (!SUCCEEDED(hrGetName))
return 0;

//如果这些参数与输入相符或输入为NULL
showMsg.TrimLeft();
showMsg.TrimRight();

//找到Name值为"搜索书签和历史"的控件
if (showMsg.Find(L"搜索书签和历史") >-1)
{
found = true;
*pvarChild = varChild; //给返回的变量赋值
break; //返回true
}

//递归调用
if(!found && pCAcc)
{
//以这次得到的子接口为父递归调用
found = FindChild(pCAcc,
szName,
szRole,
szClass,
paccChild,
pvarChild);

if(*paccChild != pCAcc)
pCAcc->Release();
}
} //End for

// Clean up
if(pEnum)
pEnum->Release();

return found;
}

//测试查找火狐浏览器输入地址的文本框
void CmsAccTestDlg::OnBnClickedButton1()
{
//得到打开的 "火狐浏览器" 窗口的句柄
if(!(hWndMainWindow = FindWindow(L"MozillaUIWindowClass", NULL)->GetSafeHwnd()))
{
MessageBox(L"没有发现窗口");
}

else
{
//获取接口指针
if(S_OK == (hr = AccessibleObjectFromWindow(hWndMainWindow,OBJID_CLIENT, IID_IAccessible,(void**)&paccMainWindow)))
{
MessageBox(L"成功获取接口指针");
//……我们可以通过这个指针paccMainWindow进行操作

//在火狐浏览器地址栏输入:www.hao123.com
//传入参数:火狐浏览器窗体句柄,要搜索的子控件Name、Role、ClassName属性值
//传出参数:paccControl,varControl
if(1 == FindChild (paccMainWindow, "搜索书签和历史", "可编辑文字", "MozillaWindowClass",&paccControl,&varControl))
{
//在这里修改文本编辑框的值
hr = paccControl->put_accValue(varControl,CComBSTR("www.hao123.com"));
paccControl->Release();
VariantClear(&varControl);
}

paccMainWindow->Release();
}
}
}
...全文
1178 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
udtech 2012-02-12
  • 打赏
  • 举报
回复
有谁知道如何获取firefox浏览器的信息?比如firefox浏览器是否全屏,浏览器窗口的大小等信息?
huhu88a 2012-01-06
  • 打赏
  • 举报
回复
楼上的扯远了,不是WEB
cfans_2011 2010-12-17
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 lsq19871207 的回复:]
如果网页单纯的结构是一个Form,可以用下面的代码实现:

C/C++ code

BOOL CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam)
{
TCHAR buf[100];

::GetClassName( hwnd, (LPTSTR)&buf, 100 );
if ( _tcscmp( b……
[/Quote]
-----------------------------
普通的IE浏览器中,可以获取用户输入的网址,
但是火狐浏览器总是有问题。。。

运行火狐浏览器测试时,
执行这行代码就返回错误。。。
LPFNOBJECTFROMLRESULT pfObjectFromLresult = (LPFNOBJECTFROMLRESULT)::GetProcAddress( hInst, (LPCSTR)"ObjectFromLresult" );
cfans_2011 2010-12-17
  • 打赏
  • 举报
回复
//下面的代码实现普通IE浏览器中网址检查功能。。。

// URLChekcDlg.cpp : implementation file

//功能介绍
//定时检查用户输入的URL
//如果是不良网址则自动关闭,否则不关闭
//访问记录存储到本地数据库中
//不良网址维护在本地数据库中

//火狐浏览器和Google浏览器, 暂时未解决

//系统API相关头文件
#include <string.h>
#include <fstream.h>
#include <stdlib.h>
#include <Tlhelp32.h>
#include "Shlwapi.h"
#include <Vector>
#pragma comment(lib,"shlwapi.lib")
#pragma comment(lib,"oleacc.lib")

HWND arrIEHwnd[100]; //存储所有打开的页面的进程句柄
int countIEHwd; //已经存储的句柄的个数
BOOL isURLExist; //判断URL是否在容器中
HWND h_Wnd;
HWND hwdesk;
int mi;

//数据库操作相关变量
CString m_databaseStatue;
_ConnectionPtr pConn;
_RecordsetPtr pPtr; //创建智能指针对象

//数据库操作相关函数
BOOL ConnectDB();
int ExecuteSQL(CString sqlcom);
void InsertURL(CString strurl,CString strRs);

//存储数据库中已维护的不良网址
std::vector<CString> m_vecStr;
std::vector<CString>::iterator Iter;

//存储从开机到现在用户已经访问的网址
std::vector<CString> m_vecStrUrl;
std::vector<CString>::iterator IterUrl;

//定义系统回调函数
BOOL CALLBACK EnumIEProc(HWND,LPARAM);
BOOL CALLBACK EnumChildProc2(HWND,LPARAM);
BOOL CALLBACK EnumWindowsProcClose(HWND hwnd, LPARAM lParam);

//获取本地数据库中的不良网址
BOOL GetbadUrl();

//关闭指定的页面
void CloseBrower(HWND hChild);

//关闭指定的进程(暂时未使用)
DWORD KillProcByName(LPCTSTR strname);

BEGIN_MESSAGE_MAP(CURLChekcDlg, CDialog)
//{{AFX_MSG_MAP(CURLChekcDlg)
ON_WM_TIMER()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

BOOL CURLChekcDlg::OnInitDialog()
{
CoInitialize(NULL);//初始化com

//数据库连接字符串
m_databaseStatue = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=checkurl.mdb;Mode=Share Deny None;User ID=Admin;Jet OLEDB:Database Password=;";

GetbadUrl(); //查询数据库中的不良网址
SetTimer(1000,125,NULL); //启动定时器

return TRUE; // return TRUE unless you set the focus to a control
}

//定时器
void CURLChekcDlg::OnTimer(UINT nIDEvent)
{
hwdesk=CWnd::GetDesktopWindow()->GetSafeHwnd();
countIEHwd=0;

//枚举已经打开的Web页面,并且把页面进程的句柄保存到数组中
EnumChildWindows(hwdesk,&EnumIEProc,0);

for(mi=0; mi<countIEHwd; ++mi)
{
//查找指定页面中的URL编辑框
//关闭不良网页并且记录到本地数据库中
EnumChildWindows(arrIEHwnd[mi],&EnumChildProc2,NULL);
}

CDialog::OnTimer(nIDEvent);
}

//连接本地Access数据库
BOOL ConnectDB()
{
pConn.CreateInstance("ADODB.Connection");
HRESULT res;
try
{
res= pConn->Open((_bstr_t)m_databaseStatue,"","",0);
}
catch (_com_error &er)
{
CString errStr;
errStr.Format("数据库连接失败:%s",er.ErrorMessage());
return FALSE;
}
return TRUE;
}

//对本地Access数据库, 执行增删改操作
int ExecuteSQL(CString sqlcom)
{
if(!ConnectDB())
return -1;
_variant_t rowCount;
rowCount.vt = VT_INT;

try
{
pConn->Execute((_bstr_t)sqlcom,&rowCount,adCmdUnknown);
}
catch(_com_error &er)
{
CString errStr;
errStr.Format("执行SQL语句失败:%s",er.ErrorMessage());
pConn->Close();
return -1;
}
pConn->Close();
return rowCount.intVal;
}

//把用户访问的URL, 保存到本地Access数据库中
void InsertURL(CString strURL,CString strResult)
{
CString str;
CTime m_time;
m_time =CTime::GetCurrentTime();
CString strCurTime = m_time.Format("%Y-%m-%d %H:%M:%S");
str.Format("insert into urlhistory(mytime,myurl,myresult) values('%s','%s','%s')",strCurTime,strURL,strResult);
ExecuteSQL(str);
}

//从数据库查询不良网址列表
BOOL GetbadUrl()
{
using namespace std;
BOOL retFlg = FALSE;
CString strUrl;
try
{
if(FAILED(pPtr.CreateInstance("ADODB.Recordset")))
{
retFlg = FALSE;
return retFlg;
}
//查询语句
CString strSQL = "select urlname from badurl";
_variant_t varSRC(m_databaseStatue);
_variant_t varSQL(strSQL);

if(FAILED(pPtr->Open(varSQL,varSRC,adOpenStatic,adLockOptimistic,adCmdText)))
{
retFlg= FALSE;
pPtr.Release();
return retFlg;
}

while(!pPtr->GetadoEOF())
{
_variant_t varUrl;
varUrl = pPtr->GetCollect("urlname");
strUrl = (char *)_bstr_t(varUrl);
strUrl.TrimRight();
m_vecStr.push_back(strUrl);
retFlg = TRUE;
pPtr->MoveNext();
}

//关闭数据库连接,释放资源
pPtr->Close();
pPtr.Release();

}
catch (CException* e)
{
retFlg = FALSE;
return retFlg;
}

return retFlg;
}

//关闭不良网址
void CloseBrower(HWND hChild)
{
HANDLE hProcessHandle;
ULONG nProcessID;

//根据窗体句柄获取进程ID
::GetWindowThreadProcessId(hChild, &nProcessID );

//根据进程ID获取进程句柄
hProcessHandle = ::OpenProcess( PROCESS_TERMINATE, FALSE, nProcessID );

//关闭进程
TerminateProcess( hProcessHandle, 4 );
}

//枚举所有已经打开的Web页面
//根据页面标题来区分是否Web页面
BOOL CALLBACK EnumIEProc(HWND hChild,LPARAM l_param2)
{
char strTitle[260];

//根据句柄,获取窗体标题
int titleLength = GetWindowText(hChild,strTitle,254);

//浏览器类型
char strTitle1[30]="Internet Explorer";
char strTitle2[30]="Maxthon";
char strTitle3[30]="Firefox";
char strTitle4[30]="360安全浏览器";
char strTitle5[30]="Tencent Traveler";
char strTitle6[30]="世界之窗";
char strTitle7[30]="Opera";
char strTitle8[30]="Netscape";

if (strstr(strTitle,strTitle1)!=NULL||
strstr(strTitle,strTitle2)!=NULL||
strstr(strTitle,strTitle3)!=NULL||
strstr(strTitle,strTitle4)!=NULL||
strstr(strTitle,strTitle5)!=NULL||
strstr(strTitle,strTitle6)!=NULL||
strstr(strTitle,strTitle7)!=NULL||
strstr(strTitle,strTitle8)!=NULL)
{
if (titleLength>1)
arrIEHwnd[countIEHwd]=hChild;
countIEHwd = countIEHwd + 1;
}

return TRUE;
}

//查找Web页面中的URL文本编辑框
BOOL CALLBACK EnumChildProc2(HWND hwchld,LPARAM l_param2)
{
char stre[300];
char strm[300];
HWND hParent;
HWND hld;
hld=hwchld;
hParent=(HWND)l_param2;
char ser[10]="Edit";
CString strSwp;
CString strBadUrl;
char *p=NULL;
BOOL bFind=FALSE;

//根据句柄获取类名
int yr=GetClassName(hld,stre,254);

//查找子串出现的位置
if (strstr(stre,ser)!=NULL)
{
//获取URL文本框中网址的长度
int urlLength = SendMessage(hld,WM_GETTEXTLENGTH,0,0)+1 ;

//获取用户输入的URL
SendMessage(hld,WM_GETTEXT,299,(LPARAM)(LPCSTR)strm);

if (urlLength>1) //判断网址长度
{
isURLExist = TRUE;

//判断用户刚打开的网址,是否在不良网址列表中
for ( Iter = m_vecStr.begin() ; Iter != m_vecStr.end() ; Iter++ )
{
strBadUrl.Format("%s",*Iter);

if (strstr(strm,strBadUrl)!=NULL)
{
InsertURL(strm,"拦截");
KillTimer(h_Wnd,1000);
//MessageBox(arrIEHwnd[mi],"您所浏览的网页不允许访问","提示信息",0);
CloseBrower(arrIEHwnd[mi]);
SetTimer(h_Wnd,1000,125,0);
break;
}
}

//判断用户刚打开的网页,是否最近访问过
//如果最近访问过,则不做记录
for ( IterUrl = m_vecStrUrl.begin() ; IterUrl != m_vecStrUrl.end() ; IterUrl++ )
{
strBadUrl.Format("%s",*IterUrl);

if (strstr(strm,strBadUrl)!=NULL)
{
//最近已经访问过该网地址,不保存访问记录
isURLExist=FALSE;
break;
}
}

//收到回车消息
if (GetAsyncKeyState(VK_RETURN))
{
if (isURLExist==TRUE)
{
if(strstr(strm,"http:")!=NULL)
{
//插入到不良网址容器中
m_vecStrUrl.push_back(strm);
InsertURL(strm,"放行");
}
}
}

//收到鼠标左键消息
if (GetAsyncKeyState(VK_LBUTTON))
{
if (isURLExist==TRUE)
{
if(strstr(strm,"http:")!=NULL)
{
//插入到不良网址容器中
m_vecStrUrl.push_back(strm);
InsertURL(strm,"放行");
}
}
}
} //if (urlLength>1)
} //if (strstr(stre,ser)!=NULL)

return TRUE;
}
信阳毛尖 2010-12-16
  • 打赏
  • 举报
回复
如果网页单纯的结构是一个Form,可以用下面的代码实现:

BOOL CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam)
{
TCHAR buf[100];

::GetClassName( hwnd, (LPTSTR)&buf, 100 );
if ( _tcscmp( buf, _T("Internet Explorer_Server") ) == 0 )
{
*(HWND*)lParam = hwnd;
return FALSE;
}
else
return TRUE;
};




HWND hWnd = NULL;
USES_CONVERSION;

hWnd = ::FindWindowExW(hWnd, 0, L"IEFrame", NULL);
CoInitialize( NULL );

// Explicitly load MSAA so we know if it's installed
HINSTANCE hInst = ::LoadLibrary( _T("OLEACC.DLL") );
if ( hInst != NULL )
{
if ( hWnd != NULL )
{
HWND hWndChild=NULL;
// 获取第一个文档窗口
::EnumChildWindows( hWnd, EnumChildProc, (LPARAM)&hWndChild );
if ( hWndChild )
{
CComPtr<IHTMLDocument2> spDoc;
LRESULT lRes;

UINT nMsg = ::RegisterWindowMessage( _T("WM_HTML_GETOBJECT") );
::SendMessageTimeout( hWndChild, nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000, (DWORD*)&lRes );

LPFNOBJECTFROMLRESULT pfObjectFromLresult = (LPFNOBJECTFROMLRESULT)::GetProcAddress( hInst, (LPCSTR)"ObjectFromLresult" );
if ( pfObjectFromLresult != NULL )
{
HRESULT hr;
hr = (*pfObjectFromLresult)( lRes, IID_IHTMLDocument2, 0, (void**)&spDoc );
if ( SUCCEEDED(hr) )
{
// 获取各个控件
CComQIPtr < IHTMLElementCollection > spElementCollection;
hr = spDoc->get_forms(&spElementCollection);

long nFormCount=0; //取得表单数目
hr = spElementCollection->get_length( &nFormCount );


for(long i=0; i <nFormCount; i++)
{
IDispatch *pDisp = NULL; //取得第 i 项表单
hr = spElementCollection->item( CComVariant( i ), CComVariant(), &pDisp );
if ( FAILED( hr ) ) continue;

CComQIPtr < IHTMLFormElement > spFormElement = pDisp;
pDisp->Release();

long nElemCount=0; //取得表单中 域 的数目
hr = spFormElement->get_length( &nElemCount );
if ( FAILED( hr ) ) continue;

for(long j=0; j <nElemCount; j++)
{
CComDispatchDriver spInputElement; //取得第 j 项表单域
hr = spFormElement->item( CComVariant( j ), CComVariant(), &spInputElement );
if ( FAILED( hr ) ) continue;

CComVariant vName,vVal,vType; //取得表单域的 名,值,类型
hr = spInputElement.GetPropertyByName( L"name", &vName );
if( FAILED( hr ) ) continue;
hr = spInputElement.GetPropertyByName( L"value", &vVal );
if( FAILED( hr ) ) continue;
hr = spInputElement.GetPropertyByName( L"type", &vType );
if( FAILED( hr ) ) continue;

LPCTSTR strCheckType = _T("checkbox");
LPCTSTR strTextType= _T("text");
LPCTSTR strSelectType = _T("select-one");

LPCTSTR strElementType = vType.bstrVal ? OLE2CT( vType.bstrVal ) : _T("NULL");
LPCTSTR strElementName = vName.bstrVal ? OLE2CT( vName.bstrVal ) : _T("NULL");
LPCTSTR strValue = vVal.bstrVal ? OLE2CT(vVal.bstrVal) : _T("NULL");

if (StrCmp(strTextType, strElementType)==0)
{
if(!StrCmp(strElementName, _T("控件名")))
{ CComVariant vSet="xxxxx"; spInputElement.PutPropertyByName(L"value", &vSet); //为控件填充xxxxx
CComBSTR str = NULL;
hr = spGetText->get_value(&str); //获取控件文本
}

}

}//for j

}//for i


}
}
} // else document not ready
} // else Internet Explorer is not running
::BringWindowToTop(hWnd);
::FreeLibrary( hInst );
} // else Active Accessibility is not installed
CoUninitialize();
}

cfans_2011 2010-12-16
  • 打赏
  • 举报
回复
谢谢楼上各位朋友的回复。。。
subyg_0009 2010-12-15
  • 打赏
  • 举报
回复
同样想了解,帮顶。。。
cfans_2011 2010-12-15
  • 打赏
  • 举报
回复
我再参考上面几个链接中的资料,测试下看看。。。
cfans_2011 2010-12-14
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 lsq19871207 的回复:]
IID_IHTMLInputTextElement接口获取成功了吗?

使用这种方法不是标准的方法,你最好按照IHTMLDocument2->spElementCollection
->IHTMLFormElement ->CComDispatchDriver.GetPropertyByName( L"name", &vName );
LPCTSTR strElementName ……
[/Quote]
---------------
谢谢提醒,我到公司再试下看看。
信阳毛尖 2010-12-13
  • 打赏
  • 举报
回复
IID_IHTMLInputTextElement接口好像没有get_role方法,get_status ,get_name是可以获取Name,State的
信阳毛尖 2010-12-13
  • 打赏
  • 举报
回复
IID_IHTMLInputTextElement接口获取成功了吗?

使用这种方法不是标准的方法,你最好按照IHTMLDocument2->spElementCollection
->IHTMLFormElement ->CComDispatchDriver.GetPropertyByName( L"name", &vName );
LPCTSTR strElementName = vName.bstrVal ? OLE2CT( vName.bstrVal ) : _T("NULL"); 来获取网页控件的name属性
cfans_2011 2010-12-13
  • 打赏
  • 举报
回复
CComBSTR type;
hr=pPwdElement->get_type(&type); //这里修改成获取Role,Name,State属性不知道是否可以?

if(SUCCEEDED(hr)){
if(type==_T("password")){//是密码框吗?
cfans_2011 2010-12-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 lsq19871207 的回复:]
一般情况下是这样的,地址栏确切的说不属于网页中的元素,如果你要对网页中某个元素(比如说登陆id输入框)的访问或者操作的话,MSAA就不行。
[/Quote]
--------------------
我参考这个资料修改下看看

如何获取网页密码框中的密码
http://www.vckbase.com/document/viewdoc/?id=288
cfans_2011 2010-12-13
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 lsq19871207 的回复:]
IID_IHTMLInputTextElement接口好像没有get_role方法,get_status ,get_name是可以获取Name,State的
[/Quote]
--------------------
如何获取网页密码框中的密码
http://www.vckbase.com/document/viewdoc/?id=288

参考上面的链接,
现在获取IID_IHTMLInputTextElement接口,还有问题,
没办法使用get_name,
Sou2012 2010-12-12
  • 打赏
  • 举报
回复
楼主是用火狐内核浏览器编程吗?
信阳毛尖 2010-12-12
  • 打赏
  • 举报
回复
提到这个接口,不太清楚这个接口和IHTMLDocument2接口什么关系。
------------------------------------------------------
虽然说MSAA基于COM技术, 但IAccessible并不是一个COM标准接口,它和IHTMLDocument2接口没有关系

火狐浏览器很多控件的类名相同,
想通过MSAA接口来获取控件的Name, Role, Classname属性值,
然后获取相关的Value值,
不知道这样是否可行?
-------------------------------------------------------
不行的,我以前试过,访问不到,你可以试一下,得用IHTMLDocument2接口来访问
cfans_2011 2010-12-12
  • 打赏
  • 举报
回复
MSAA demo程序中的部分代码
-----------------------------
BOOL GetObjectInfo( IAccessible *           pAcc,
const VARIANT & varChild,
StrWrPos & str,
BOOL unused( bUseInvoke ) )
{
BOOL fError = FALSE;

// display IAcc, Variant...
// // str << TEXT("IAcc = 0x") << WriteHex( pAcc ) << TEXT(" VarChild:") << varChild;

if( varChild.vt == VT_EMPTY )
{
str << TEXT(" [ BUG? - Non-I4 ChildId ]");
fError = TRUE;
}

LPTSTR pszSpace = TEXT("\r\nInterfaces:\t");

// Check supported interfaces...
IUnknown * pUnk = NULL;
HRESULT hr = pAcc->QueryInterface( IID_IEnumVARIANT, (void **) & pUnk );
if( SUCCEEDED( hr ) && pUnk )
{
pUnk->Release();
str << pszSpace << TEXT("IEnumVARIANT");
pszSpace = TEXT(" ");
}

pUnk = NULL;
hr = pAcc->QueryInterface( IID_IOleWindow, (void **) & pUnk );
if( SUCCEEDED( hr ) && pUnk )
{
pUnk->Release();
str << pszSpace << TEXT("IOleWindow");
pszSpace = TEXT(" ");
}

// See if native...
if( IsOLEACCObject( pAcc ) )
{
str << pszSpace << TEXT("(Local-oleacc-proxy)");
pszSpace = TEXT(" ");
}

str << TEXT("\r\n");
return ! fError;
}

// Convert an IDispatch to an IAccessible/varChild pair.
// Releases the IDispatch.
BOOL Object_IDispatchToIAccessible( IDispatch * pdisp,
IAccessible ** ppAccOut,
VARIANT * pvarChildOut,
StrWrPos & str )
{
IAccessible * pAccTemp = NULL;
HRESULT hr = pdisp->QueryInterface( IID_IAccessible, (void**) & pAccTemp );
pdisp->Release();

if( hr != S_OK || ! pAccTemp )
{
str << WriteError( hr, TEXT("IDisp::QI(IAcc)") );
return FALSE;
}

*ppAccOut = pAccTemp;
if( pvarChildOut )
{
pvarChildOut->vt = VT_I4;
pvarChildOut->lVal = CHILDID_SELF;
}
return TRUE;
}

BOOL IsOLEACCObject( IAccessible * pAcc )
{
if( g_OLEACCAddRef == (void*)1 )
{
// Get a well-known OLEACC window...
HWND hWnd = GetDesktopWindow();

// Get an IAccessible from it...
IAccessible * pAcc = NULL;
HRESULT hr = AccessibleObjectFromWindow( hWnd, OBJID_CLIENT, IID_IAccessible, (void **) &pAcc );
if( hr != S_OK || pAcc == NULL )
return FALSE;

// Pull the address of AddRef() from its vtbl... (first member)
if( pAcc && *(void**)pAcc )
g_OLEACCAddRef = **(void***) pAcc;

pAcc->Release();
}

// Look at first member of VTBL - should be same for all
// OLEACC objects, since they all use the same AddRef code.

// pAcc interface pointer
// *(void*)pAcc points to vtbl
// **(void**)pAcc contents of first slot of vtbl (AddRef)
return pAcc
&& *(void**)pAcc
&& **(void***)pAcc == g_OLEACCAddRef;
}

void GetWindowInfo( HWND hWnd,
StrWrPos & str )
{
// Add coords...
str << TEXT("\thwnd=0x");

// add hwnd...
str << WriteHex( hWnd );

// add class...
str << TEXT(" class=\"");
int len = GetClassName( hWnd, str.ptr(), str.left() );
str.advance( len );
str << TEXT("\"");

LONG gwl = GetWindowLong( hWnd, GWL_STYLE );
str << TEXT(" style=0x") << WriteHex( gwl );

gwl = GetWindowLong( hWnd, GWL_EXSTYLE );
str << TEXT(" ex=0x") << WriteHex( gwl );
}

void DisplayObjectErrorMessage( LPCTSTR pszHowFound,
HWND hWnd,
LPCTSTR pszErrorMessage )
{
// Clear the window...
Edit_Clear( g_hEdit );

// Add the 'how found' text...
StrBuf<128> str;
str << TEXT("How found:\t") << pszHowFound << TEXT("\r\n");
Edit_Append( g_hEdit, str.str() );

if( hWnd )
{
// Add window information...
str.Reset();
GetWindowInfo( hWnd, str );
str << TEXT("\r\n");
Edit_Append( g_hEdit, str.str() );
}

Edit_Append( g_hEdit, TEXT("------\r\n\r\n") );

Edit_Append( g_hEdit, pszErrorMessage );

// TODO - clear focus rect etc. ?



// For old times' sake...
MessageBeep(0);
}

// --------------------------------------------------------------------------
//
// DisplayObjectProperties()
//
// If no object is passed in,
// this gets the object at the cursor, fills in the properties into the
//
// --------------------------------------------------------------------------
void DisplayObjectProperties( LPCTSTR pszHowFound,
HWND hWnd,
IAccessible * pAcc,
const VARIANT & varChild,
BOOL fDoHilightRect )
{
// Clear the window...
SendMessage( g_hEdit, WM_SETREDRAW, FALSE, 0 );

Edit_Clear( g_hEdit );


// Add the 'how found' text...
StrBuf<128> str;
str << TEXT("How found:\t") << pszHowFound << TEXT("\r\n");
Edit_Append( g_hEdit, str.str() );


if( hWnd )
{
// Add window information...
str.Reset();
GetWindowInfo( hWnd, str );
str << TEXT("\r\n");
Edit_Append( g_hEdit, str.str() );
}

// Get the properties...
StrBuf<4096> strInfoTip;
for( int i = 0 ; i < ARRAYSIZE( g_PropMap ) ; i++ )
{
// Only fetch if it's needed for either the infotip of the main window...
if( g_DlgPropActive[ i ] || g_TipPropActive[ i ] )
{
// Get the property string...
StrBuf<8192> str;
str << g_PropMap[ i ].m_pName << TEXT(":\t");
BOOL fSucceeded = (g_PropMap[ i ].m_pfnGetProp)( pAcc, varChild, str, g_Settings.m_fUseInvoke );

// Add to main window (if needed)...
if( g_DlgPropActive[ i ] )
{
DWORD posBefore = Edit_GetPos( g_hEdit );
Edit_Append( g_hEdit, str.str() );
DWORD posAfter = Edit_GetPos( g_hEdit );
// add newline...
// Done separately from str, since str may not have room for the \r\n...
Edit_Append( g_hEdit, TEXT("\r\n") );

// Code to make any error lines bold red. Very eye-catching.
// TODO - add this back in later when we're comfortable with it...
//
// if( ! fSucceeded )
// {
// Edit_Hilight( g_hEdit, posBefore, posAfter );
// }

}

// Add to info tip text (if needed)...
if( g_TipPropActive[ i ] )
{
strInfoTip << str.str();
strInfoTip << TEXT("\r\n");
}
}
}

// Put cursor at start, scroll to top (so first line appears at top)
Edit_Done( g_hEdit );

// show hilight rectangle...
if( fDoHilightRect )
{
RECT rc;
HRESULT hr = pAcc->accLocation( & rc.left, & rc.top, & rc.right, & rc.bottom, varChild );
if( hr == S_OK )
{
rc.right += rc.left;
rc.bottom += rc.top;
g_pHilightRect->SetLocation( rc );
g_pHilightText->SetLocation( rc );

if( g_Settings.m_fShowHilightRect )
{
g_pHilightRect->SetVisible( TRUE );
}
}
else
{
g_pHilightRect->SetVisible( FALSE );
}
}

// display tooltip information...
g_pHilightText->SetText( strInfoTip.str() );

// Remember this object...
g_SavedAcc.Set( pAcc, varChild );


// Clear the window...
SendMessage( g_hEdit, WM_SETREDRAW, TRUE, 0 );
InvalidateRect( g_hEdit, NULL, TRUE );
}
cfans_2011 2010-12-12
  • 打赏
  • 举报
回复
火狐浏览器很多控件的类名相同,
想通过MSAA接口来获取控件的Name, Role, Classname属性值,
然后获取相关的Value值,
不知道这样是否可行?
cfans_2011 2010-12-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 lsq19871207 的回复:]
一般情况下是这样的,地址栏确切的说不属于网页中的元素,如果你要对网页中某个元素(比如说登陆id输入框)的访问或者操作的话,MSAA就不行。
[/Quote]
---------------
之前处理普通IE浏览器时,可以通过FindWindow, Getclassname, GetWindowsText,
获取Edit控件句柄,然后SendMessage获取输入的网址。
----------------------
火狐浏览器的部分,看到网上有些资料介绍MSAA,
提到这个接口,不太清楚这个接口和IHTMLDocument2接口什么关系。
sos_2010123 2010-12-12
  • 打赏
  • 举报
回复
////////////////////////////////////////////////////////////////////////
BOOL GetObjProp_Parent( IAccessible * pAcc, const VARIANT & varChild, StrWrPos & str, BOOL bUseInvoke )
{
HRESULT hr;
IDispatch * pdispParent = NULL;

// if varChild is non-0, then pAcc is the parent.
// otherwise, have to use get_accParent...
if( varChild.lVal == CHILDID_SELF )
{
// use get_accParent...

if( ! bUseInvoke )
{
hr = pAcc->get_accParent(&pdispParent);
}
else
{
DISPPARAMS dispp;
EXCEPINFO excepInfo;
UINT errArg;
VARIANT varResult;

// via IDispatch::Invoke
VariantInit(&varResult);

dispp.cArgs = 0;
dispp.cNamedArgs = 0;
dispp.rgvarg = NULL;
dispp.rgdispidNamedArgs = NULL;

FillMemory(&excepInfo, sizeof(excepInfo), 0);

hr = pAcc->Invoke(DISPID_ACC_PARENT, IID_NULL, 0,
DISPATCH_PROPERTYGET, &dispp, &varResult, &excepInfo, &errArg);

if (SUCCEEDED(hr) && (varResult.vt == VT_DISPATCH))
pdispParent = varResult.pdispVal;
else
VariantClear(&varResult);
}

if( FAILED( hr ) )
{
str << WriteError( hr, TEXT("get_accParent") );
return FALSE;
}

if( ! pdispParent )
{
// TODO - could be an error?
str << TEXT("none [screen]");
return TRUE;
}


pAcc = NULL;
hr = pdispParent->QueryInterface( IID_IAccessible, (void **) & pAcc );
pdispParent->Release();

if( ! SUCCEEDED( hr ) || !pAcc )
return FALSE;
}


VARIANT var;
var.vt = VT_I4;
var.lVal = CHILDID_SELF;

// Get name, role
//获取名称和角色
GetObjProp_Name( pAcc, var, str, bUseInvoke );
str << TEXT(":");

GetObjProp_Role( pAcc, var, str, bUseInvoke );

// Did we get a parent object, if so release it...
if( pdispParent )
pAcc->Release();

return TRUE;
// TODO - how to check the name/role sub-fields for errors?
}

////////////////////////////////////////////////////////////////////////
BOOL GetObjProp_WndFromObj( IAccessible * pAcc,
const VARIANT & unused( varChild ),
StrWrPos & str,
BOOL unused( bUseInvoke ) )
{
HWND hWnd;
HRESULT hr = WindowFromAccessibleObject( pAcc, & hWnd );
BOOL fError = FALSE;
if( hr == S_OK )
{
str << TEXT("0x") << WriteHex( hWnd ) << TEXT(" ");
if( ! IsWindow( hWnd ) )
{
str << TEXT( "invalid hwnd" );
fError = TRUE;
}
else
{
str << TEXT("class=\"");
int l = GetClassName( hWnd, str.ptr(), str.left() );
str.advance( l );

LONG gwl = GetWindowLong( hWnd, GWL_STYLE );
str << TEXT("\" style=0x") << WriteHex( gwl );

gwl = GetWindowLong( hWnd, GWL_EXSTYLE );
str << TEXT(" ex=0x") << WriteHex( gwl );
}
}
else
{
str << WriteError( hr, TEXT("WndFromAccObj") );
fError = TRUE;
}

return ! fError;
}

////////////////////////////////////////////////////////////////////////
BOOL GetObjProp_ChildCount( IAccessible * pAcc,
const VARIANT & varChild,
StrWrPos & str,
BOOL unused( bUseInvoke ) )
{
if( varChild.vt != VT_I4 )
{
str << TEXT("[Error: Non-I4 ChildID - vt=") << varChild << TEXT("]");
return FALSE;
}

// Non-zero means we are over something not a container.
if( varChild.lVal != 0 )
{
str << TEXT( "Child object has no children" );
return TRUE;
}

long cChildren = 0;
HRESULT hr = pAcc->get_accChildCount( & cChildren );
if( FAILED( hr ) )
{
str << WriteError( hr, TEXT("accChildCount") );
return FALSE;
}

str << cChildren;

return TRUE;
}
////////////////////////////////////////////////////////////////////////
加载更多回复(11)
JAVA开发人员必备是HTML格式的 JavaTM 2 Platform Standard Edition 6 API 规范 本文档是 Java 2 Platform Standard Edition 6.0 的 API 规范。 请参见: 描述 Java 2 Platform 软件包 java.applet 提供创建 applet 所必需的类和 applet 用来与其 applet 上下文通信的类。 java.awt 包含用于创建用户界面和绘制图形图像的所有类。 java.awt.color 提供用于颜色空间的类。 java.awt.datatransfer 提供在应用程序之间和在应用程序内部传数据的接口和类。 java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传信息。 java.awt.event 提供处理由 AWT 组件所激发的各类事件的接口和类。 java.awt.font 提供与字体相关的类和接口。 java.awt.geom 提供用于在与二维几何形状相关的对象上定义和执行操作的 Java 2D 类。 java.awt.im 提供入方法框架所需的类和接口。 java.awt.im.spi 提供启用可以与 Java 运行时环境一起使用的入方法开发的接口。 java.awt.image 提供创建和修改图像的各种类。 java.awt.image.renderable 提供用于生成与呈现无关的图像的类和接口。 java.awt.print 为通用的打印 API 提供类和接口。 java.beans 包含与开发 beans 有关的类,即基于 JavaBeansTM 架构的组件。 java.beans.beancontext 提供与 bean 上下文有关的类和接口。 java.io 通过数据流、序列化和文件系统提供系统入和出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java.nio 定义作为数据容器的缓冲区,并提供其他 NIO 包的概述。 java.nio.channels 定义了各种通道,这些通道表示到能够执行 I/O 操作的实体(如文件和套接字)的连接;定义了用于多路复用的、非阻塞 I/O 操作的选择器。 java.nio.channels.spi 用于 java.nio.channels 包的服务提供者类。 java.nio.charset 定义用来在字节和 Unicode 字符之间转换的 charset、解码器和编码器。 java.nio.charset.spi java.nio.charset 包的服务提供者类。 java.rmi 提供 RMI 包。 java.rmi.activation 为 RMI 对象激活提供支持。 java.rmi.dgc 为 RMI 分布式垃圾回收提供了类和接口。 java.rmi.registry 提供 RMI 注册表的一个类和两个接口。 java.rmi.server 提供支持服务器端 RMI 的类和接口。 java.security 为安全框架提供类和接口。 java.security.acl 此包中的类和接口已经被 java.security 包中的类取代。 java.security.cert 提供用于解析和管理证书、证书撤消列表 (CRL) 和证书路径的类和接口。 java.security.interfaces 提供的接口用于生成 RSA Laboratory Technical Note PKCS#1 中定义的 RSA(Rivest、Shamir 和 Adleman AsymmetricCipher 算法)密钥,以及 NIST 的 FIPS-186 中定义的 DSA(数字签名算法)密钥。 java.security.spec 提供密钥规范和算法参数规范的类和接口。 java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。 java.text 提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。 java.text.spi java.text 包中类的服务提供者类。 java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类。 java.util.concurrent.atomic 类的小工具包,支持在单个变量上解除锁的线程安全编程。 java.util.concurrent.locks 为锁和等待条件提供一个框架的接口和类,它不同于内置同步和监视器。 java.util.jar 提供读写 JAR (Java ARchive) 文件格式的类,该格式基于具有可选清单文件的标准 ZIP 文件格式。 java.util.logging 提供 JavaTM 2 平台核心日志工具的类和接口。 java.util.prefs 此包允许应用程序存储并获取用户和系统首选项和配置数据。 java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类。 javax.accessibility 定义了用户界面组件与提供对这些组件进行访问的辅助技术之间的协定。 javax.crypto 为加密操作提供类和接口。 javax.crypto.interfaces 根据 RSA Laboratories' PKCS #3 的定义,提供 Diffie-Hellman 密钥接口。 javax.crypto.spec 为密钥规范和算法参数规范提供类和接口。 javax.imageio Java Image I/O API 的主要包。 javax.imageio.event Java Image I/O API 的一个包,用于在读取和写入图像期间处理事件的同步通知。 javax.imageio.metadata 用于处理读写元数据的 Java Image I/O API 的包。 javax.imageio.plugins.bmp 包含供内置 BMP 插件使用的公共类的包。 javax.imageio.plugins.jpeg 支持内置 JPEG 插件的类。 javax.imageio.spi 包含用于 reader、writer、transcoder 和流的插件接口以及一个运行时注册表的 Java Image I/O API 包。 javax.imageio.stream Java Image I/O API 的一个包,用来处理从文件和流中产生的低级别 I/O。 javax.management 提供 Java Management Extensions 的核心类。 javax.management.loading 提供实现高级动态加载的类。 javax.management.modelmbean 提供了 ModelMBean 类的定义。 javax.management.monitor 提供 monitor 类的定义。 javax.management.openmbean 提供开放数据类型和 Open MBean 描述符类。 javax.management.relation 提供 Relation Service 的定义。 javax.management.remote 对 JMX MBean 服务器进行远程访问使用的接口。 javax.management.remote.rmi RMI 连接器是供 JMX Remote API 使用的一种连接器,后者使用 RMI 将客户端请求传到远程 MBean 服务器。 javax.management.timer 提供对 Timer MBean(计时器 MBean)的定义。 javax.naming 为访问命名服务提供类和接口。 javax.naming.directory 扩展 javax.naming 包以提供访问目录服务的功能。 javax.naming.event 在访问命名和目录服务时提供对事件通知的支持。 javax.naming.ldap 提供对 LDAPv3 扩展操作和件的支持。 javax.naming.spi 提供一些方法来动态地插入对通过 javax.naming 和相关包访问命名和目录服务的支持。 javax.net 提供用于网络应用程序的类。 javax.net.ssl 提供用于安全套接字包的类。 javax.print 为 JavaTM Print Service API 提供了主要类和接口。 javax.print.attribute 提供了描述 JavaTM Print Service 属性的类型以及如何分类这些属性的类和接口。 javax.print.attribute.standard 包 javax.print.attribute.standard 包括特定打印属性的类。 javax.print.event 包 javax.print.event 包含事件类和侦听器接口。 javax.rmi 包含 RMI-IIOP 的用户 API。 javax.rmi.CORBA 包含用于 RMI-IIOP 的可移植性 API。 javax.rmi.ssl 通过安全套接字层 (SSL) 或传层安全 (TLS) 协议提供 RMIClientSocketFactory 和 RMIServerSocketFactory 的实现。 javax.security.auth 此包提供用于进行验证和授权的框架。 javax.security.auth.callback 此包提供与应用程序进行交互所必需的类,以便检索信息(例如,包括用户名和密码的验证数据)或显示信息(例如,错误和警告消息)。 javax.security.auth.kerberos 此包包含与 Kerberos 网络验证协议相关的实用工具类。 javax.security.auth.login 此包提供可插入的验证框架。 javax.security.auth.spi 此包提供用于实现可插入验证模块的接口。 javax.security.auth.x500 此包包含应该用来在 Subject 中存储 X500 Principal 和 X500 Private Crendentials 的类。 javax.security.cert 为公钥证书提供类。 javax.security.sasl 包含用于支持 SASL 的类和接口。 javax.sound.midi 提供用于 MIDI(音乐乐器数字接口)数据的 I/O、序列化和合成的接口和类。 javax.sound.midi.spi 在提供新的 MIDI 设备、MIDI 文件 reader 和 writer、或音库 reader 时提供服务提供者要实现的接口。 javax.sound.sampled 提供用于捕获、处理和回放取样的音频数据的接口和类。 javax.sound.sampled.spi 在提供新音频设备、声音文件 reader 和 writer,或音频格式转换器时,提供将为其创建子类的服务提供者的抽象类。 javax.sql 为通过 JavaTM 编程语言进行服务器端数据源访问和处理提供 API。 javax.sql.rowset JDBC RowSet 实现的标准接口和基类。 javax.sql.rowset.serial 提供实用工具类,允许 SQL 类型与 Java 编程语言数据类型之间的可序列化映射关系。 javax.sql.rowset.spi 第三方供应商在其同步提供者的实现中必须使用的标准类和接口。 javax.swing 提供一组“轻量级”(全部是 Java 语言)组件,尽量让这些组件在所有平台上的工作方式都相同。 javax.swing.border 提供围绕 Swing 组件绘制特殊边框的类和接口。 javax.swing.colorchooser 包含供 JColorChooser 组件使用的类和接口。 javax.swing.event 供 Swing 组件触发的事件使用。 javax.swing.filechooser 包含 JFileChooser 组件使用的类和接口。 javax.swing.plaf 提供一个接口和许多抽象类,Swing 用它们来提供自己的可插入外观功能。 javax.swing.plaf.basic 提供了根据基本外观构建的用户界面对象。 javax.swing.plaf.metal 提供根据 Java 外观(曾经代称为 Metal)构建的用户界面对象,Java 外观是默认外观。 javax.swing.plaf.multi 提供了组合两个或多个外观的用户界面对象。 javax.swing.plaf.synth Synth 是一个可更换皮肤 (skinnable) 的外观,在其中可委托所有绘制。 javax.swing.table 提供用于处理 javax.swing.JTable 的类和接口。 javax.swing.text 提供类 HTMLEditorKit 和创建 HTML 文本编辑器的支持类。 javax.swing.text.html 提供类 HTMLEditorKit 和创建 HTML 文本编辑器的支持类。 javax.swing.text.html.parser 提供默认的 HTML 解析器以及支持类。 javax.swing.text.rtf 提供一个类 (RTFEditorKit),用于创建富文本格式(Rich-Text-Format)的文本编辑器。 javax.swing.tree 提供处理 javax.swing.JTree 的类和接口。 javax.swing.undo 允许开发人员为应用程序(例如文本编辑器)中的撤消/恢复提供支持。 javax.transaction 包含解组期间通过 ORB 机制抛出的三个异常。 javax.transaction.xa 提供定义事务管理器和资源管理器之间的协定的 API,它允许事务管理器添加或删除 JTA 事务中的资源对象(由资源管理器驱动程序提供)。 javax.xml 根据 XML 规范定义核心 XML 常量和功能。 javax.xml.bind 为包含解组、编组和验证功能的客户端应用程序提供运行时绑定框架。 javax.xml.bind.annotation 定义将 Java 程序元素定制成 XML 模式映射的注释。 javax.xml.bind.annotation.adapters XmlAdapter 及其规范定义的子类允许任意 Java 类与 JAXB 一起使用。 javax.xml.bind.attachment 此包由基于 MIME 的包处理器实现,该处理器能够解释并创建基于 MIME 的包格式的已优化的二进制数据。 javax.xml.bind.helpers 仅由 JAXB 提供者用于: 提供某些 javax.xml.bind 接口的部分默认实现。 javax.xml.bind.util 有用的客户端实用工具类。 javax.xml.crypto 用于 XML 加密的通用类。 javax.xml.crypto.dom javax.xml.crypto 包的特定于 DOM 的类。 javax.xml.crypto.dsig 用于生成和验证 XML 数字签名的类。 javax.xml.crypto.dsig.dom javax.xml.crypto.dsig 包特定于 DOM 的类。 javax.xml.crypto.dsig.keyinfo 用来解析和处理 KeyInfo 元素和结构的类。 javax.xml.crypto.dsig.spec XML 数字签名的参数类。 javax.xml.datatype XML/Java 类型映射关系。 javax.xml.namespace XML 名称空间处理。 javax.xml.parsers 提供允许处理 XML 文档的类。 javax.xml.soap 提供用于创建和构建 SOAP 消息的 API。 javax.xml.stream javax.xml.stream.events javax.xml.stream.util javax.xml.transform 此包定义了用于处理转换指令,以及执行从源到结果的转换的一般 API。 javax.xml.transform.dom 此包实现特定于 DOM 的转换 API。 javax.xml.transform.sax 此包实现特定于 SAX2 的转换 API。 javax.xml.transform.stax 提供特定于 StAX 的转换 API。 javax.xml.transform.stream 此包实现特定于流和 URI 的转换 API。 javax.xml.validation 此包提供了用于 XML 文档验证的 API。 javax.xml.ws 此包包含核心 JAX-WS API。 javax.xml.ws.handler 该包定义用于消息处理程序的 API。 javax.xml.ws.handler.soap 该包定义用于 SOAP 消息处理程序的 API。 javax.xml.ws.http 该包定义特定于 HTTP 绑定的 API。 javax.xml.ws.soap 该包定义特定于 SOAP 绑定的 API。 javax.xml.ws.spi 该包定义用于 JAX-WS 2.0 的 SPI。 javax.xml.xpath 此包提供了用于 XPath 表达式的计算和访问计算环境的 object-model neutral API。 org.ietf.jgss 此包提供一个框架,该框架允许应用程序开发人员通过利用统一的 API 使用一些来自各种基础安全机制(如 Kerberos)的安全服务,如验证、数据完整性和和数据机密性。 org.omg.CORBA 提供 OMG CORBA API 到 JavaTM 编程语言的映射,包括 ORB 类,如果已实现该类,则程序员可以使用此类作为全功能对象请求代理(Object Request Broker,ORB)。 org.omg.CORBA_2_3 CORBA_2_3 包定义对 Java[tm] Standard Edition 6 中现有 CORBA 接口所进行的添加。 org.omg.CORBA_2_3.portable 提供入和类型的各种方法,并包含 org/omg/CORBA/portable 包的其他更新。 org.omg.CORBA.DynAnyPackage 提供与 DynAny 接口一起使用的异常(InvalidValue、Invalid、InvalidSeq 和 TypeMismatch)。 org.omg.CORBA.ORBPackage 提供由 ORB.resolve_initial_references 方法抛出的异常 InvalidName,以及由 ORB 类中的动态 Any 创建方法抛出的异常 InconsistentTypeCode。 org.omg.CORBA.portable 提供可移植性层,即可以使一个供应商生成的代码运行在另一个供应商 ORB 上的 ORB API 集合。 org.omg.CORBA.TypeCodePackage 提供用户定义的异常 BadKind 和 Bounds,它们将由 TypeCode 类中的方法抛出。 org.omg.CosNaming 为 Java IDL 提供命名服务。 org.omg.CosNaming.NamingContextExtPackage 此包包含以下在 org.omg.CosNaming.NamingContextExt 中使用的类: AddressHelper StringNameHelper URLStringHelper InvalidAddress 包规范 有关 Java[tm] Platform, Standard Edition 6 ORB 遵守的官方规范的受支持部分的明确列表,请参阅 Official Specifications for CORBA support in Java[tm] SE 6。 org.omg.CosNaming.NamingContextPackage 此包包含 org.omg.CosNaming 包的 Exception 类。 org.omg.Dynamic 此包包含 OMG Portable Interceptor 规范 http://cgi.omg.org/cgi-bin/doc?ptc/2000-08-06 的第 21.9 小节中指定的 Dynamic 模块。 org.omg.DynamicAny 提供一些类和接口使得在运行时能够遍历与 any 有关联的数据,并提取数据的基本成分。 org.omg.DynamicAny.DynAnyFactoryPackage 此包包含 DynamicAny 模块的 DynAnyFactory 接口中的类和异常,该模块在 OMG The Common Object Request Broker: Architecture and Specification http://cgi.omg.org/cgi-bin/doc?formal/99-10-07 的第 9.2.2 小节中指定。 org.omg.DynamicAny.DynAnyPackage 此包包含 DynAny 模块的 DynAnyFactory 接口中的类和异常,该模块在 OMG The Common Object Request Broker: Architecture and Specification http://cgi.omg.org/cgi-bin/doc?formal/99-10-07 的第 9.2 小节中指定。 org.omg.IOP 此包包含在 OMG 文档 The Common Object Request Broker: Architecture and Specification http://cgi.omg.org/cgi-bin/doc?formal/99-10-07 的 13.6.小节中指定的 IOP 模块。 org.omg.IOP.CodecFactoryPackage 此包包含 IOP::CodeFactory 接口中指定的异常(作为 Portable Interceptor 规范的一部分)。 org.omg.IOP.CodecPackage 此包根据 IOP::Codec IDL 接口定义生成。 org.omg.Messaging 此包包含 OMG Messaging Interceptor 规范 http://cgi.omg.org/cgi-bin/doc?formal/99-10-07 中指定的 Messaging 模块。 org.omg.PortableInterceptor 提供一个注册 ORB 钩子 (hook) 的机制,通过这些钩子 ORB 服务可以截取执行 ORB 的正常流。 org.omg.PortableInterceptor.ORBInitInfoPackage 此包包含 OMG Portable Interceptor 规范 http://cgi.omg.org/cgi-bin/doc?ptc/2000-08-06 的第 21.7.2 小节中指定的 PortableInterceptor 模块的 ORBInitInfo 本地接口中的异常和 typedef。 org.omg.PortableServer 提供一些类和接口,用来生成跨多个供应商 ORB 的可移植应用程序的服务器端。 org.omg.PortableServer.CurrentPackage 提供各种方法实现,这些实现能够访问调用方法的对象的身份。 org.omg.PortableServer.POAManagerPackage 封装 POA 关联的处理状态。 org.omg.PortableServer.POAPackage 允许程序员构造可在不同 ORB 产品间移植的对象实现。 org.omg.PortableServer.portable 提供一些类和接口,用来生成跨多个供应商 ORB 的可移植应用程序的服务器端。 org.omg.PortableServer.ServantLocatorPackage 提供定位 servant 的类和接口。 org.omg.SendingContext 为类型的编组提供支持。 org.omg.stub.java.rmi 包含用于 java.rmi 包中出现的 Remote 类型的 RMI-IIOP Stub。 org.w3c.dom 为文档对象模型 (DOM) 提供接口,该模型是 Java API for XML Processing 的组件 API。 org.w3c.dom.bootstrap org.w3c.dom.events org.w3c.dom.ls org.xml.sax 此包提供了核心 SAX API。 org.xml.sax.ext 此包包含适合的 SAX 驱动程序不一定支持的 SAX2 设施的接口。 org.xml.sax.helpers 此包包含“帮助器”类,其中包括对引导基于 SAX 的应用程序的支持。
JAVA开发人员最新版本7.0 api文档!本文档是 Java Platform Standard Edition 7 的 API !Java 1.7 API的中文帮助文档。 深圳电信培训中心 徐海蛟博士教学用api 7.0中文文档。支持全文检索,在线即时查询。 里面列出了Java jdk 1.7的所有类及其使用方法! Java SE Platform 软件包: java.applet 提供创建 applet 所必需的类和 applet 用来与其 applet 上下文通信的类。 java.awt 包含用于创建用户界面和绘制图形图像的所有类。 java.awt.color 提供用于颜色空间的类。 java.awt.datatransfer 提供在应用程序之间和在应用程序内部传数据的接口和类。 java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传信息。 java.awt.event 提供处理由 AWT 组件所激发的各类事件的接口和类。 java.awt.font 提供与字体相关的类和接口。 java.awt.geom 提供用于在与二维几何形状相关的对象上定义和执行操作的 Java 2D 类。 java.awt.im 提供入方法框架所需的类和接口。 java.awt.im.spi 提供启用可以与 Java 运行时环境一起使用的入方法开发的接口。 java.awt.image 提供创建和修改图像的各种类。 java.awt.image.renderable 提供用于生成与呈现无关的图像的类和接口。 java.awt.print 为通用的打印 API 提供类和接口。 java.beans 包含与开发 beans 有关的类,即基于 JavaBeansTM 架构的组件。 java.beans.beancontext 提供与 bean 上下文有关的类和接口。 java.io 通过数据流、序列化和文件系统提供系统入和出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java.nio 定义作为数据容器的缓冲区,并提供其他 NIO 包的概述。 java.nio.channels 定义了各种通道,这些通道表示到能够执行 I/O 操作的实体(如文件和套接字)的连接;定义了用于多路复用的、非阻塞 I/O 操作的选择器。 java.nio.channels.spi 用于 java.nio.channels 包的服务提供者类。 java.nio.charset 定义用来在字节和 Unicode 字符之间转换的 charset、解码器和编码器。 java.nio.charset.spi java.nio.charset 包的服务提供者类。 java.rmi 提供 RMI 包。 java.rmi.activation 为 RMI 对象提供支持。 java.rmi.dgc 为 RMI 分布式垃圾回收提供了类和接口。 java.rmi.registry 提供 RMI 注册表的一个类和两个接口。 java.rmi. 提供支持服务器端 RMI 的类和接口。 java.security 为安全框架提供类和接口。 java.security.acl 此包中的类和接口已经被 java.security 包中的类取代。 java.security.cert 提供用于解析和管理证书、证书撤消列表 (CRL) 和证书路径的类和接口。 java.security.interfaces 提供的接口用于生成 RSA Laboratory Technical Note PKCS#1 中定义的 RSA(Rivest、Shamir 和 Adleman AsymmetricCipher 算法)密钥,以及 NIST 的 FIPS-186 中定义的 DSA(数字签名算法)密钥。 java.security.spec 提供密钥规范和算法参数规范的类和接口。 java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。 java.text 提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。 java.text.spi java.text 包中类的服务提供者类。 java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类。 java.util.concurrent.atomic 类的小工具包,支持在单个变量上解除锁的线程安全编程。 java.util.concurrent.locks 为锁和等待条件提供一个框架的接口和类,它不同于内置同步和监视器。 java.util.jar 提供读写 JAR (Java ARchive) 文件格式的类,该格式基于具有可选清单文件的标准 ZIP 文件格式。 java.util.logging 提供 JavaTM 2 平台核心日志工具的类和接口。 java.util.prefs 此包允许应用程序存储并获取用户和系统首选项和配置数据。 java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类。 javax.accessibility 定义了用户界面组件与提供对这些组件进行访问的辅助技术之间的协定。 javax.crypto 为加密操作提供类和接口。 javax.crypto.interfaces 根据 RSA Laboratories' PKCS #3 的定义,提供 Diffie-Hellman 密钥接口。 javax.crypto.spec 为密钥规范和算法参数规范提供类和接口。 javax.imageio Java Image I/O API 的主要包。 javax.imageio.event Java Image I/O API 的一个包,用于在读取和写入图像期间处理事件的同步通知。 javax.imageio.metadata 用于处理读写元数据的 Java Image I/O API 的包。 javax.imageio.plugins.bmp 包含供内置 BMP 插件使用的公共类的包。 javax.imageio.plugins.jpeg 支持内置 JPEG 插件的类。 javax.imageio.spi 包含用于 reader、writer、transcoder 和流的插件接口以及一个运行时注册表的 Java Image I/O API 包。 javax.imageio.stream Java Image I/O API 的一个包,用来处理从文件和流中产生的低级别 I/O。 javax.management 提供 Java Management Extensions 的核心类。 javax.management.loading 提供实现高级动态加载的类。 javax.management.modelmbean 提供了 ModelMBean 类的定义。 javax.management.monitor 提供 monitor 类的定义。 javax.management.openmbean 提供开放数据类型和 Open MBean 描述符类。 javax.management.relation 提供 Relation Service 的定义。 javax.management.remote 对 JMX MBean 服务器进行远程访问使用的接口。 javax.management.remote.rmi RMI 连接器是供 JMX Remote API 使用的一种连接器,后者使用 RMI 将客户端请求传到远程 MBean 服务器。 javax.management.timer 提供对 Timer MBean(计时器 MBean)的定义。 javax.naming 为访问命名服务提供类和接口。 javax.naming.directory 扩展 javax.naming 包以提供访问目录服务的功能。 javax.naming.event 在访问命名和目录服务时提供对事件通知的支持。 javax.naming.ldap 提供对 LDAPv3 扩展操作和件的支持。 javax.naming.spi 提供一些方法来动态地插入对通过 javax.naming 和相关包访问命名和目录服务的支持。 javax.net 提供用于网络应用程序的类。 javax.net.ssl 提供用于安全套接字包的类。 javax.print 为 JavaTM Print Service API 提供了主要类和接口。 javax.print.attribute 提供了描述 JavaTM Print Service 属性的类型以及如何分类这些属性的类和接口。 javax.print.attribute.standard 包 javax.print.attribute.standard 包括特定打印属性的类。 javax.print.event 包 javax.print.event 包含事件类和侦听器接口。 javax.rmi 包含 RMI-IIOP 的用户 API。 javax.rmi.CORBA 包含用于 RMI-IIOP 的可移植性 API。 javax.rmi.ssl 通过安全套接字层 (SSL) 或传层安全 (TLS) 协议提供 RMIClientSocketFactory 和 RMIServerSocketFactory 的实现。 javax.security.auth 此包提供用于进行验证和授权的框架。 javax.security.auth.callback 此包提供与应用程序进行交互所必需的类,以便检索信息(例如,包括用户名和密码的验证数据)或显示信息(例如,错误和警告消息)。 javax.security.auth.kerberos 此包包含与 Kerberos 网络验证协议相关的实用工具类。 javax.security.auth.login 此包提供可插入的验证框架。 javax.security.auth.spi 此包提供用于实现可插入验证模块的接口。 javax.security.auth.x500 此包包含应该用来在 Subject 中存储 X500 Principal 和 X500 Private Crendentials 的类。 javax.security.cert 为公钥证书提供类。 javax.security.sasl 包含用于支持 SASL 的类和接口。 javax.sound.midi 提供用于 MIDI(音乐乐器数字接口)数据的 I/O、序列化和合成的接口和类。 javax.sound.midi.spi 在提供新的 MIDI 设备、MIDI 文件 reader 和 writer、或音库 reader 时提供服务提供者要实现的接口。 javax.sound.sampled 提供用于捕获、处理和回放取样的音频数据的接口和类。 javax.sound.sampled.spi 在提供新音频设备、声音文件 reader 和 writer,或音频格式转换器时,提供将为其创建子类的服务提供者的抽象类。 javax.sql 为通过 JavaTM 编程语言进行服务器端数据源访问和处理提供 API。 javax.sql.rowset JDBC RowSet 实现的标准接口和基类。 javax.sql.rowset.serial 提供实用工具类,允许 SQL 类型与 Java 编程语言数据类型之间的可序列化映射关系。 javax.sql.rowset.spi 第三方供应商在其同步提供者的实现中必须使用的标准类和接口。 javax.swing 提供一组“轻量级”(全部是 Java 语言)组件,尽量让这些组件在所有平台上的工作方式都相同。 javax.swing.border 提供围绕 Swing 组件绘制特殊边框的类和接口。 javax.swing.colorchooser 包含供 JColorChooser 组件使用的类和接口。 javax.swing.event 供 Swing 组件触发的事件使用。 javax.swing.filechooser 包含 JFileChooser 组件使用的类和接口。 javax.swing.plaf 提供一个接口和许多抽象类,Swing 用它们来提供自己的可插入外观功能。 javax.swing.plaf.basic 提供了根据基本外观构建的用户界面对象。 javax.swing.plaf.metal 提供根据 Java 外观(曾经代称为 Metal)构建的用户界面对象,Java 外观是默认外观。 javax.swing.plaf.multi 提供了组合两个或多个外观的用户界面对象。 javax.swing.plaf.synth Synth 是一个可更换皮肤 (skinnable) 的外观,在其中可委托所有绘制。 javax.swing.table 提供用于处理 javax.swing.JTable 的类和接口。 javax.swing.text 提供类 HTMLEditorKit 和创建 HTML 文本编辑器的支持类。 javax.swing.text.html 提供类 HTMLEditorKit 和创建 HTML 文本编辑器的支持类。 javax.swing.text.html.parser 提供默认的 HTML 解析器以及支持类。 javax.swing.text.rtf 提供一个类 (RTFEditorKit),用于创建富文本格式(Rich-Text-Format)的文本编辑器。 javax.swing.tree 提供处理 javax.swing.JTree 的类和接口。 javax.swing.undo 允许开发人员为应用程序(例如文本编辑器)中的撤消/恢复提供支持。 javax.transaction 包含解组期间通过 ORB 机制抛出的三个异常。 javax.transaction.xa 提供定义事务管理器和资源管理器之间的协定的 API,它允许事务管理器添加或删除 JTA 事务中的资源对象(由资源管理器驱动程序提供)。 javax.xml 根据 XML 规范定义核心 XML 常量和功能。 javax.xml.bind 为包含解组、编组和验证功能的客户端应用程序提供运行时绑定框架。 javax.xml.bind.annotation 定义将 Java 程序元素定制成 XML 模式映射的注释。 javax.xml.bind.annotation.adapters XmlAdapter 及其规范定义的子类允许任意 Java 类与 JAXB 一起使用。 javax.xml.bind.attachment 此包由基于 MIME 的包处理器实现,该处理器能够解释并创建基于 MIME 的包格式的已的二进制数据。 javax.xml.bind.helpers 仅由 JAXB 提供者用于: 提供某些 javax.xml.bind 接口的部分默认实现。 javax.xml.bind.util 有用的客户端实用工具类。 javax.xml.crypto 用于 XML 加密的通用类。 javax.xml.crypto.dom javax.xml.crypto 包的特定于 DOM 的类。 javax.xml.crypto.dsig 用于生成和验证 XML 数字签名的类。 javax.xml.crypto.dsig.dom javax.xml.crypto.dsig 包特定于 DOM 的类。 javax.xml.crypto.dsig.keyinfo 用来解析和处理 KeyInfo 元素和结构的类。 javax.xml.crypto.dsig.spec XML 数字签名的参数类。 javax.xml.datatype XML/Java 类型映射关系。 javax.xml.namespace XML 名称空间处理。 javax.xml.parsers 提供允许处理 XML 文档的类。 javax.xml.soap 提供用于创建和构建 SOAP 消息的 API。 javax.xml.stream javax.xml.stream.events javax.xml.stream.util javax.xml.transform 此包定义了用于处理转换指令,以及执行从源到结果的转换的一般 API。 javax.xml.transform.dom 此包实现特定于 DOM 的转换 API。 javax.xml.transform.sax 此包实现特定于 SAX2 的转换 API。 javax.xml.transform.stax 提供特定于 StAX 的转换 API。 javax.xml.transform.stream 此包实现特定于流和 URI 的转换 API。 javax.xml.validation 此包提供了用于 XML 文档验证的 API。 javax.xml.ws 此包包含核心 JAX-WS API。 javax.xml.ws.handler 该包定义用于消息处理程序的 API。 javax.xml.ws.handler.soap 该包定义用于 SOAP 消息处理程序的 API。 javax.xml.ws.http 该包定义特定于 HTTP 绑定的 API。 javax.xml.ws.soap 该包定义特定于 SOAP 绑定的 API。 javax.xml.ws.spi 该包定义用于 JAX-WS 2.0 的 SPI。 javax.xml.xpath 此包提供了用于 XPath 表达式的计算和访问计算环境的 object-model neutral API。 org.ietf.jgss 此包提供一个框架,该框架允许应用程序开发人员通过利用统一的 API 使用一些来自各种基础安全机制(如 Kerberos)的安全服务,如验证、数据完整性和和数据机密性。 org.omg.CORBA 提供 OMG CORBA API 到 JavaTM 编程语言的映射,包括 ORB 类,如果已实现该类,则程序员可以使用此类作为全功能对象请求代理(Object Request Broker,ORB)。 org.omg.CORBA_2_3 CORBA_2_3 包定义对 Java[tm] Standard Edition 6 中现有 CORBA 接口所进行的添加。 org.omg.CORBA_2_3.portable 提供入和类型的各种方法,并包含 org/omg/CORBA/portable 包的其他更新。 org.omg.CORBA.DynAnyPackage 提供与 DynAny 接口一起使用的异常(InvalidValue、Invalid、InvalidSeq 和 TypeMismatch)。 org.omg.CORBA.ORBPackage 提供由 ORB.resolve_initial_references 方法抛出的异常 InvalidName,以及由 ORB 类中的动态 Any 创建方法抛出的异常 InconsistentTypeCode。 org.omg.CORBA.portable 提供可移植性层,即可以使一个供应商生成的代码运行在另一个供应商 ORB 上的 ORB API 集合。 org.omg.CORBA.TypeCodePackage 提供用户定义的异常 BadKind 和 Bounds,它们将由 TypeCode 类中的方法抛出。 org.omg.CosNaming 为 Java IDL 提供命名服务。 org.omg.CosNaming.NamingContextExtPackage 此包包含以下在 org.omg.CosNaming.NamingContextExt 中使用的类: AddressHelper StringNameHelper URLStringHelper InvalidAddress 包规范 有关 Java[tm] Platform, Standard Edition 6 ORB 遵守的官方规范的受支持部分的明确列表,请参阅 Official Specifications for CORBA support in Java[tm] SE 6。 org.omg.CosNaming.NamingContextPackage 此包包含 org.omg.CosNaming 包的 Exception 类。 org.omg.Dynamic 此包包含 OMG Portable Interceptor 规范 http://cgi.omg.org/cgi-bin/doc?ptc/2000-08-06 的第 21.9 小节中指定的 Dynamic 模块。 org.omg.DynamicAny 提供一些类和接口使得在运行时能够遍历与 any 有关联的数据,并提取数据的基本成分。 org.omg.DynamicAny.DynAnyFactoryPackage 此包包含 DynamicAny 模块的 DynAnyFactory 接口中的类和异常,该模块在 OMG The Common Object Request Broker: Architecture and Specification http://cgi.omg.org/cgi-bin/doc?formal/99-10-07 的第 9.2.2 小节中指定。 org.omg.DynamicAny.DynAnyPackage 此包包含 DynAny 模块的 DynAnyFactory 接口中的类和异常,该模块在 OMG The Common Object Request Broker: Architecture and Specification http://cgi.omg.org/cgi-bin/doc?formal/99-10-07 的第 9.2 小节中指定。 org.omg.IOP 此包包含在 OMG 文档 The Common Object Request Broker: Architecture and Specification http://cgi.omg.org/cgi-bin/doc?formal/99-10-07 的 13.6.小节中指定的 IOP 模块。 org.omg.IOP.CodecFactoryPackage 此包包含 IOP::CodeFactory 接口中指定的异常(作为 Portable Interceptor 规范的一部分)。 org.omg.IOP.CodecPackage 此包根据 IOP::Codec IDL 接口定义生成。 org.omg.Messaging 此包包含 OMG Messaging Interceptor 规范 http://cgi.omg.org/cgi-bin/doc?formal/99-10-07 中指定的 Messaging 模块。 org.omg.PortableInterceptor 提供一个注册 ORB 钩子 (hook) 的机制,通过这些钩子 ORB 服务可以截取执行 ORB 的正常流。 org.omg.PortableInterceptor.ORBInitInfoPackage 此包包含 OMG Portable Interceptor 规范 http://cgi.omg.org/cgi-bin/doc?ptc/2000-08-06 的第 21.7.2 小节中指定的 PortableInterceptor 模块的 ORBInitInfo 本地接口中的异常和 typedef。 org.omg.PortableServer 提供一些类和接口,用来生成跨多个供应商 ORB 的可移植应用程序的服务器端。 org.omg.PortableServer.CurrentPackage 提供各种方法实现,这些实现能够访问调用方法的对象的身份。 org.omg.PortableServer.POAManagerPackage 封装 POA 关联的处理状态。 org.omg.PortableServer.POAPackage 允许程序员构造可在不同 ORB 产品间移植的对象实现。 org.omg.PortableServer.portable 提供一些类和接口,用来生成跨多个供应商 ORB 的可移植应用程序的服务器端。 org.omg.PortableServer.ServantLocatorPackage 提供定位 servant 的类和接口。 org.omg.SendingContext 为类型的编组提供支持。 org.omg.stub.java.rmi 包含用于 java.rmi 包中出现的 Remote 类型的 RMI-IIOP Stub。 org.w3c.dom 为文档对象模型 (DOM) 提供接口,该模型是 Java API for XML Processing 的组件 API。 org.w3c.dom.bootstrap org.w3c.dom.events org.w3c.dom.ls org.xml.sax 此包提供了核心 SAX API。 org.xml.sax.ext 此包包含适合的 SAX 驱动程序不一定支持的 SAX2 设施的接口。 org.xml.sax.helpers 此包包含“帮助器”类,其中包括对引导基于 SAX 的应用程序的支持。 本文档是 JavaTM Platform Standard Edition 7.0 最新的 API 规范。
作为Microsoft 32位平台的应用程序编程接口, Win32 API是从事Windows应用程序开发所必备的。 首先对Win32 API函数做完整的概述;然后收录五大类函数: 窗口管理、图形设备接口、系统服务、国际特性以及网络服务; 在附录部分,讲解如何在Visual Basic和Delphi中对其调用。 本书是从事Windows应用程序开发的软件工程师的必备参考手册。 件与消息函数 共91个函数 硬件与系统函数 共98个函数 设备场景函数 共73个函数 绘图函数 共105个函数 位图、图标和光栅运算函数 共39个函数 菜单函数 共37个函数 文本和字体函数 共41个函数 打印函数 共66个函数 文件处理函数 共118个函数 进程和线程函数 共40个函数 Windows消息函数 共11个函数 网络函数 共14个函数 目 录 第一章 Win32 API概论…………………………………………………………………………1 1.1 为什么使用Win32 API …………………………………………………………………1 1.2 Win32 API简介 …………………………………………………………………………1 1.3 综述………………………………………………………………………………………11 第二章 窗口管理函数(Windows Control Function) ……………………………………13 2.1 易用特性函数(Accessibility Features)…………………………………………13 2.2 按钮函数(Button)……………………………………………………………………20 2.3 插入标记(^)函数(Caret)…………………………………………………………21 2.4 组合框函数(Combo box) ……………………………………………………………24 2.5 通用对话框函数(Common Dialog Box) ……………………………………………25 2.6 标函数(Cursor)………………………………………………………………………36 2.7 对话框函数(Dialog Box)……………………………………………………………40 2.8 编辑制函数(Edit Control)………………………………………………………54 2.9 图标函数(Icon)………………………………………………………………………54 2.10 键盘加速器函数(Keyboard Accelerator)……………………………………… 61 2.11 键盘入函数(Keyboard InPut) …………………………………………………63 2.12 列表框函数(List box) ……………………………………………………………75 2.13 菜单函数(Menu) ……………………………………………………………………76 2.14 消息和消息队列函数(Message and Message Queue)……………………………90 2.15 鼠标入函数(Mouse Input) ……………………………………………………100 2.16 多文档接口函数(Multiple Document Interface) ……………………………103 2.17 资源函数(Resource)………………………………………………………………105 2.18 滚动条函数(Scroll Bar)…………………………………………………………113 2.19 窗口函数(Window)…………………………………………………………………119 2.20 窗口类函数(Window Class)………………………………………………………144 2.21 窗口过程函数(Window Procedure)………………………………………………150 2.22 窗口属性函数(Window Property) ………………………………………………152 第三章 图形设备接口函数(Graphic Device Interface Function) …………………155 3.1 位图函数(Bitmap) …………………………………………………………………155 3.2 笔刷函数(Brush)……………………………………………………………………171 3.3 剪切函数(Clipping) ………………………………………………………………176 3.4 颜色函数(Color)……………………………………………………………………179 3.5 坐标空间与变换函数(Coordinate Space Transformation)……………………186 3.6 设备环境函数(Device Context) …………………………………………………195 3.7 填充形态函数(Filled shape) ……………………………………………………211 3.8 字体和正文函数(Font and Text)…………………………………………………215 3.9 ICM 2.0函数 …………………………………………………………………………238 3.10 线段和曲线函数(Line and Curve)………………………………………………295 3.11 图元文件函数(Metafile)…………………………………………………………300 3.12 多显示器函数(Multiple Display Monitors) …………………………………311 3.13 绘图函数和画图函数(Painting and Drawing)…………………………………313 3.14 路径函数(Path)……………………………………………………………………328 3.15 画笔函数(Pen) ……………………………………………………………………332 3.16 打印及打印假脱机程序函数(Printing and Print Spooler)…………………334 3.17 矩形函数(Rectangle) ……………………………………………………………371 3.18 区域函数(Region)…………………………………………………………………374 第四章 系统服务函数(System Service Function) ……………………………………383 4.1 访问制函数(Access Control) …………………………………………………383 4.2 原子函数(Atom) ……………………………………………………………………406 4.3 客户/服务器访问制函数(Client/Server Access Control) ………………409 4.4 剪贴板函数(Clipboard)……………………………………………………………431 4.5 通信函数(Communication)…………………………………………………………436 4.6 制台函数(Console)………………………………………………………………444 4.7 数据解压库函数(Data Decompression Library) ………………………………463 4.8 调试函数(Debugging)………………………………………………………………466 4.9 设备出函数(Device Input and Output)…………………………………472 4.10 动态数据交换函数(Dynamic Data Exchange) …………………………………474 4.11 动态数据交换管理函数(Dynamic Data Exchange Management)………………476 4.12 动态链接库函数(Dynamic-Link Library)………………………………………489 4.13 错误函数(Error) …………………………………………………………………496 4.14 事件日志函数(Event Logging) …………………………………………………499 4.15 文件函数(File)……………………………………………………………………503 4.16 文件安装库函数(File Installation Library) ………………………………542 4.17 文件映射函数(File Mapping)……………………………………………………546 4.18 文件系统函数 File System)………………………………………………………551 4.19 句柄和对象函数(Handle and Object)………………………………………………556 4.20 挂钩函数(Hook)………………………………………………………………………560 4.21 ImageHlp函数…………………………………………………………………………572 4.22 大整数操作函数(Iarge Integer Operations)……………………………………594 4.23 低层访问制函数(Low-Level Access Control)………………………………596 4.24 LSAPI函数 …………………………………………………………………………617 4.25 邮槽函数(Mailslot)………………………………………………………………622 4.26 内存管理函数(Memory Management) ……………………………………………623 4.27 管道函数(Pipe) …………………………………………………………………655 4.28 电源管理函数(Power Management) …………………………………………… 663 4.29 进程和线程函数(Process and Thread)…………………………………………666 4.30 注册表函数(Registry)……………………………………………………………700 4.31 字符串操作函数(String Manipulation)……………………………………… 724 4.32 结构化异常处理函数(Structured Exception Handling) ……………………742 4.33 同步函数(Synchronization) ……………………………………………………745 4.34 系统信息函数(System Information)……………………………………………766 4.35 系统消息函数(System Message)…………………………………………………780 4.36 系统关机函数(System Shutdown) ………………………………………………781 4.37 磁带备份函数(Tape Backup) ……………………………………………………783 4.38 时间函数(Time)……………………………………………………………………789 4.39 计时器函数(Timer) ………………………………………………………………795 4.40 工具帮助函数(Tool Help) ………………………………………………………796 4.41 窗口站和桌面函数(Window Station and Desktop)……………………………799 4.42 Windows NT 4.0访问制函数(Window NT 4.0 Access-Control)……………808 4.43 WinTrust函数(WinTrust)…………………………………………………………814 第五章 国际特性函数(International Peatures Punction)时性…………………………815 5.1 入方法编辑函数(Input Method Editor)…………………………………………815 5.2 国家语言支持函数(National Language Support)………………………………… 828 5.3 Unicode和字符集函数(Unicode and Character Set)……………………………… 843 第六章 网络服务函数(Networding Service Function)……………………………………849 6.1 数据链路制函数(DLC)………………………………………………………………849 6.2 网络函数(Net)…………………………………………………………………………849 6.3 NetBIOS函数……………………………………………………………………………896 6.4 网络DDE函数(Networking DDE)……………………………………………………897 6.5 RAS服务器管理函数(RAS Server Administration)………………………………901 6.6 远程访问服务函数(Remote Access Administration)………………………………910 6.7 服务函数(Service)……………………………………………………………………929 6.8 Windows网络函数(Windows Networking)……………………………………………930 附录1 如何在VB中调用DLL API ……………………………………………………………945 1 DLL API的声明……………………………………………………………………………945 2 DLL API的调用……………………………………………………………………………947 附录2 在Delphi中直接调用Windows API…………………………………………………953

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧