Aktif Pencerenin Başlığını Al - Microsoft Excel


API aracılığıyla aktif pencerenin başlığını öğrenmek için kullanılabilecek VBA kodu alternatifidir.

Kod


Option Explicit

Private Declare Function GetForegroundWindow Lib "user32" () As Long

Private Declare Function GetWindowTextLength Lib "user32" _
Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long

Private Declare Function GetWindowText Lib "user32" _
Alias "GetWindowTextA" (ByVal hwnd As Long, _
ByVal lpString As String, ByVal cch As Long) As Long

Private Declare Function GetParent Lib "user32" _
(ByVal hwnd As Long) As Long

'--------------------------------------------------
'AktifPencereBasliginiAl
'--------------------------------------------------
Private Function AktifPencereBasliginiAl(ByVal ReturnParent As Boolean) As String
   Dim i As Long
   Dim j As Long

   i = GetForegroundWindow


   If ReturnParent Then
      Do While i <> 0
         j = i
         i = GetParent(i)
      Loop

      i = j
   End If

   AktifPencereBasliginiAl = PencereBasliginiAl(i)
End Function

'--------------------------------------------------
'PencereBasliginiAl
'--------------------------------------------------
Private Function PencereBasliginiAl(ByVal hwnd As Long) As String
   Dim l As Long
   Dim s As String

   l = GetWindowTextLength(hwnd)
   s = Space(l + 1)

   GetWindowText hwnd, s, l + 1

   PencereBasliginiAl = Left$(s, l)
End Function

'--------------------------------------------------
'Kullanim
'--------------------------------------------------
Sub Kullanim()
    MsgBox AktifPencereBasliginiAl(True)
End Sub

Yararlanılan Kaynaklar
Etiketler
microsoft excel microsoft excel vba microsoft excel vba api işlemleri