Sub TestGetWinDimen()
Dim winDimen As Variant, winTitle As String
If InStr(Application.Name, "Excel") Then
winTitle = ActiveWorkbook.Name
ElseIf InStr(Application.Name, "Word") Then
winTitle = Activedocument.Name
End If
winDimen = GetWinDimen(winTitle)
If IsArray(winDimen) Then
MsgBox "Window: " & winTitle & Chr(13) & ".Left = " & winDimen(0) & _
"; .Top = " & winDimen(1) & Chr(13) & ".Width = " & winDimen(2) & "; .Height = " & winDimen(3)
Else
MsgBox winDimen & " [No result - Is your window name correct?]"
End If
End Sub
Function GetWinDimen(ByVal winName As String) As Variant
Dim scr1 As String, scrRet As String
Dim x As Variant, y As Variant, w As Variant, h As Variant, i As Integer
scr1 = "tell application """ & Application.Name & """" & Chr(13)
scr1 = scr1 + "try" & Chr(13)
scr1 = scr1 + "set rect to bounds of window """ & winName & """" & Chr(13)
scr1 = scr1 + "on error" & Chr(13)
scr1 = scr1 + "set rect to ""error""" & Chr(13)
scr1 = scr1 + "end try" & Chr(13)
scr1 = scr1 + "end tell" & Chr(13)
scr1 = scr1 + "return rect"
scrRet = MacScript(scr1)
If scrRet <> "error" Then
x = Val(Left(scrRet, InStr(scrRet, ",") - 1))
i = InStr(scrRet, ",") + 1
y = Val(Mid(scrRet, i, InStr(i, scrRet, ",") - i))
i = InStr(i, scrRet, ",") + 1
w = Val(Mid(scrRet, i, InStr(i, scrRet, ",") - i)) - x
i = InStr(i, scrRet, ",") + 1
h = Val(Mid(scrRet, i, Len(scrRet))) - y
GetWinDimen = Array(x, y, w, h)
Else
GetWinDimen = "error"
End If
End Function
|