Görev Çubuğunu Göster Ya da Gizle - Microsoft Excel


FindWindow ve SetWindowPos fonksiyonlarından faydalanarak görev çubuğunu gösterme ve gizleme işlemi yapan makro kodudur.

Kod


Option Explicit

Dim hWnd1 As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, _
ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Const SWP_HIDEWINDOW = &H80
Const SWP_SHOWWINDOW = &H40

Private Sub GorevCubuguGizle()
    hWnd1 = FindWindow("Shell_traywnd", "")
    Call SetWindowPos(hWnd1, 0, 0, 0, 0, 0, SWP_HIDEWINDOW)
End Sub

Private Sub GorevCubuguGoster()
    Call SetWindowPos(hWnd1, 0, 0, 0, 0, 0, SWP_SHOWWINDOW)
End Sub

Kod (Açıklamalı)


Option Explicit

Dim hWnd1 As Long

'--------------------------------------------------
'FindWindowA Fonksiyonu
'Verilen parametrelere göre en üstteki
'pencereyi getirmeye yarıyor.


'lpClassName
'Çok çok kabaca eğer string bir ifade verilmişse
'windows tarafından önceden kaydedilmiş veya
'ön tanımlı değer olacak. Eğer null ise de
'lpWindowName parametresine bakarak işlem
'yapmaya çalışacak.


'lpWindowName
'Pencerenin üst kısmında bulunan başlık bilginin
'girildiği parametre. Eğer null değerine eşitse
'tüm başlıklarla eşleşiyor.
'--------------------------------------------------
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long


'--------------------------------------------------
'SetWindowPos Fonksiyonu
'Üst seviye, pop-up ve çocuk tipindeki pencerelerin boyutlandırma,
'konumlandırma ve

'hwnd
'Sanırım Handle Window kelimelerinin kısaltmasıyla oluşturulmuş.
'Anladığım kadarıyla hedeflediğimiz pencereyi seçmeye yarıyor.

'hWndInsertAfter
'Bunu da anladığım kadarıyla açıklamaya çalışayım, şimdi bu
'windows pencereleri 2 boyutlu. Bu iki boyutlu pencerelerden
'birden fazla açtığımızda çoğunlukla üst üste binme durumları
'oluyor. İşte bu tarz 2 boyutlu nesnelerin sıralanması,
'düzenlenemsi, istiflenmesi vs. Z-Order olarak geçiyor.
'İşte bu parametre bu düzenlemeyi yapmamıza yarıyor.
'Tabii kafamıza göre yapamıyoruz, Windows'un öntanımlı
'değerlerinden biri olması gerekiyormuş. Altta dökümantasyon
'kaynağını verdim ama eğer cortlarsa direkt parametreyi,
'fonksiyonu vs. aratarak bulabilirsiniz.
'Bu arada web tasarımcılar bunun z-index halini iyi bilirler. :)

'x
'Pencerenin sol tarafının yeni pozisyonu.

'y
'Pencerenin üst tarafının yeni pozisyonu.

'cx
'Pencerenin piksel cinsinden yeni genişlik değeri.

'cy
'Pencerenin piksel cinsinden yeni yükseklik değeri.

'wFlags
'Windows'un ön tanımlı "flag" değerleri. Bu flag
'olayı da biraz uzun bir olay ama yine çok kabaca
'özetlemeye çalışayım: Bir fonksiyon ya da proses
'için sinyal gibi davranan değer. Fonksiyonun
'çalışması bu değere göre değişiyor. Buna da
'dökümantasyondan bakabilirsiniz. Olmadı aratın.
'--------------------------------------------------
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, _
ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long


'--------------------------------------------------
'wFlags parametreleri
'Pencereyi gizlemek veya göstermek için kullanacağız.
'Sabitlere (Const) atanan değerler de öntanımlı.
'Dökümantasyondan göz atabilirsiniz.

'Const SWP_HIDEWINDOW = &H80 (0x0080)
'Const SWP_SHOWWINDOW = &H40 (0x0040)
'--------------------------------------------------
Const SWP_HIDEWINDOW = &H80
Const SWP_SHOWWINDOW = &H40


Private Sub GorevCubuguGizle()
    '--------------------------------------------------
    'SetWindowPos fonksiyonu için hwnd tipinde
    'parametre hazırlıyoruz. Dikkat ederseniz
    'ilk parametre bilgisi girilmiş. Yani bu değer
    'ya önceden kaydedilmiş (registered) ya da
    'ön tanımlı (predefined).
    '
    'Ayrıca son parametrede yine öntanımlı
    'bir sabit kullandık, böylelikle görev
    'çubuğunu gizlemiş olduk.
    '--------------------------------------------------
    hWnd1 = FindWindow("Shell_traywnd", "")
    Call SetWindowPos(hWnd1, 0, 0, 0, 0, 0, SWP_HIDEWINDOW)
End Sub


Private Sub GorevCubuguGoster()
    '--------------------------------------------------
    'Burada bir hwnd ataması yapmadık. Sebebi de şu:
    'Görev çubuğu varsayılan olarak görünür halde.
    'Bu görev çubuğunu gösterebilmek için önce bir
    'gizlemek gerekiyor.
    '
    'Gizlediğimiz zaman yaptığımız hwnd atamasında
    'ilgili değişkenin kapsamı daha geniş olduğundan
    '(fonksiyonun dışında tanımladık) bu fonksiyonda
    'da o değişkene doğrudan erişebiliyoruz.
    '
    'Ayrıca bu sefer SetWindowPos fonksiyonunda
    'pencere göstermeye yarayan sabiti (SWP_SHOWWINDOW)
    'kullandık.
    '--------------------------------------------------
    Call SetWindowPos(hWnd1, 0, 0, 0, 0, 0, SWP_SHOWWINDOW)
End Sub

Yararlanılan Kaynaklar
Etiketler
microsoft excel açıklamalı içerik microsoft excel vba