VBVBA获取word光标位置、编辑区域、输入区域、菜单、工具栏、标尺、滚动条句柄
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA"(ByVal lpClassName As String, ByVal lpWindowName As String) As LongPrivateDeclareFunctionGetWindowRectLib"user32"(ByValhwndAsLong,lpRect As RECT) As Long
PrivateDeclareFunctionFindWindowExLib"user32"Alias"FindWindowExA"(ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVallpsz2 As String) As Long
PrivateDeclareFunctionClientToScreenLib"user32"(ByValhwndAsLong,lpPoint As POINTAPI) As Long
PrivateDeclareFunctionGetCaretPosLib"user32"(lpPointAsPOINTAPI)As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Type POINTAPI
x As Long
y As Long
End Type
Dim MPos As POINTAPI
Dim a As RECT
Dim hw
Subtest() '不针对特别状况,假如不可以正常获得 Word 编写区句柄,请从头翻开 word
hw = FindWindow("OpusApp", vbNullString)'word 句柄
hw = FindWindowEx(hw, 0, "_WwF", vbNullString) '类 wwf 句柄 ,附属 word hw = FindWindowEx(hw, 0, "_WwB", vbNullString) '类 wwb 句柄 ,附属 wwf
hw = FindWindowEx(hw, 0, "_WwG", vbNullString) '类 wwg 句柄,附属 wwb, 即编写框句柄
'word->_WwF(编写区、标尺、转动条 )->_WwB(编写区、标尺、转动条、和
批阅 )->_WwG(编写区 )
'hw = FindWindowEx(hw, 0, "MsoCommandBarDock", "MsoDockTop") '附属word
'hw = FindWindowEx(hw, 0, "MsoCommandBar", "菜单栏 ")'附属word
GetWindowRect hw, a
编写框顶部 = a.Top
MsgBox "编写框顶部在屏幕的垂直地点:
" & a.Top
光标所内行数 =
rmation(wdFirstCharacterLineNumber)GetCaretPos MPos 'ClientToScreen hwnd, MPos
MsgBox"光标所在编写区的垂直地点:
"&MPos.x&","&MPos.y'光标在屏幕中的地点
光标垂直地点 = MPos.y
Application.ActiveDocument.ActiveWindow.SmallScroll down: =2'Set rng = ActiveWindow.RangeFromPoint(0, a.Top) '
150是菜单和工具栏占屏幕的像素。
' rng.Select
End Sub调整 150 这个值,。