ExcelFans:专注于Excel的信息收集和使用技巧开发……[我的QQ:758237;我的Q群:22222555 102363,7770007]
查看文章 |
关于清空Office的剪切板(二)
2008-04-26 18:08
前一段时间在网上找到一个小工具,名叫AccExplorer32,这个工具却可以取得Office剪切板中按钮的位置、名称等各种信息并可以对按钮进行操作。对这个东西的具体操作原理很感兴趣。但是到网上进行各种搜索都没有发现具体的实现方法。最近到网上下载了一本电子书籍名叫《Advanced Microsoft Visual Basic 6.0 Second Edition》电子书。在其中的第16章中有名叫Microsoft Active Accessibility的一节,看到之后才明白了其中的奥妙。这一节就描述怎样在VB中使用Accessibility界面。真是赶到非常的高兴。赶紧试着使用了一下。发现使用微软的Active Accessibility就可以找到“全部清空”按钮并执行它,进而达到清空Office剪切板的目的。以下就是我使用Active Accessibility来清空剪切板的代码,大家共享: 第一部分代码: Option Explicit
'|---------------------------------------------------------------------------------------| '|Module : ClearOfficeClipboard | '|DateTime : 2008-4-24 | '|Author : wangmingbai , http://www.officefans.net/cdb/forumdisplay.php?fid=1 | '|Purpose : Clear Windows and Office Clipboards | '|---------------------------------------------------------------------------------------| '|--------------------------------------------------| '|--------------声明API函数-------------------------| '|--------------------------------------------------| '--------------查找指定窗口的子窗口--------------- Private Declare Function FindWindowEx _ Lib "user32.dll" _ Alias "FindWindowExA" ( _ ByVal hWnd1 As Long, _ ByVal hWnd2 As Long, ByVal lpsz1 As String, _ ByVal lpsz2 As String) _ As Long '--------------从窗口返回Accessible对象--------------- Private Declare Function AccessibleObjectFromWindow _ Lib "oleacc" ( _ ByVal hwnd As Long, _ ByVal dwId As Long, _ riid As tGUID, _ ppvObject As Object) _ As Long '--------------取得Accessible的子对象--------------- Private Declare Function AccessibleChildren _ Lib "oleacc" ( _ ByVal paccContainer As IAccessible, _ ByVal iChildStart As Long, _ ByVal cChildren As Long, _ rgvarChildren As Variant, _ pcObtained As Long) _ As Long '--------------锁定指定窗口,禁止它更新------------ Private Declare Function LockWindowUpdate _ Lib "user32" ( _ ByVal hwndLock As Long) _ As Long '|--------------------------------------------------| '|-----------------声明类型-------------------------| '|--------------------------------------------------| Private Type tGUID lData1 As Long nData2 As Integer nData3 As Integer abytData4(0 To 7) As Byte End Type '|--------------------------------------------------| '|-----------------定义常量-------------------------| '|--------------------------------------------------| Private Const ROLE_PUSHBUTTON = &H2B& '|*************************************************************| '|**********************主程序,用于清除Office剪切板***********| '|*************************************************************| Sub ClearOfficeClipboard() '|--------------------------------------------------| '|----------------以下部分定义变量------------------| '|--------------------------------------------------| Dim hMain As Long Dim hExcel2 As Long Dim hClip As Long Dim hWindow As Long Dim hParent As Long Dim octl As CommandBarControl Dim oIA As IAccessible Dim oNewIA As IAccessible Dim tg As tGUID Dim lReturn As Long Dim lStart As Long Dim avKids() As Variant Dim avMoreKids() As Variant Dim lHowMany As Long Dim lGotHowMany As Long Dim bClip As Boolean Dim i As Long Dim hVersion As Long 代码未完 |
最近读者:

