查看文章
 
关于清空Office的剪切板(二)
2008-04-26 18:08

接: 关于清空Office的剪切板(一)

      前一段时间在网上找到一个小工具,名叫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

代码未完

待续:关于清空Office的剪切板(三)


类别:excel杂记||添加到搜藏 |分享到i贴吧|浏览(1109)|评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu