api: setwindowlong

globinours

XLDnaute Junior
Bonjour à tous,
Je voudrais suuprimer dans la barre des titres les boutons agrandissement, réduction et fermeture de l'application.
J'ai bien trouvé sur le site de Frédéric Sigonneau l'api setwindowlong mais elle me supprime également le logo excel.
Comment pourrai-je faire pour le conserver?
Merci d'avance...
 

Zon

XLDnaute Impliqué
Salut,

Le code suivant supprime les boutons mais tu gardes le logo:

Option Explicit

Private Declare Function SetWindowLong& Lib 'user32' Alias 'SetWindowLongA' _
  (ByVal hWnd&,
ByVal nIndex&, ByVal dwNewLong&)
Private Declare Function DrawMenuBar& Lib 'user32' (ByVal hWnd&)
Private Declare Function GetSystemMenu& Lib 'user32' _
  (ByVal hWnd&,
ByVal bRevert&)
Private Declare Function DeleteMenu& Lib 'user32' _
  (ByVal hMenu&,
ByVal nPosition&, ByVal wFlags&)
Private Declare Function FindWindow& Lib 'user32' Alias 'FindWindowA' _
    (ByVal lpClassName$,
ByVal lpWindowName$)

Dim HandleXL&
   
Sub SupprBouton()
  Application.ScreenUpdating =
False
 
With ActiveWindow
    .WindowState = xlNormal
    .Top = 0: .Left = 0
    .Height = Application.UsableHeight
    .Width = Application.UsableWidth
    .WindowState = xlMaximized
 
End With
  HandleXL = FindWindow('XLMAIN', Application.Caption)
  SetWindowLong HandleXL, -16, &H15C80000
  DeleteMenu GetSystemMenu(HandleXL, False), &HF010&, &H0&
  DeleteMenu GetSystemMenu(HandleXL, False), &HF060&, &H0&
  DrawMenuBar HandleXL
End Sub

Sub RestauApp()
  SetWindowLong HandleXL, -16, &H15CF0000
  GetSystemMenu HandleXL,
True
  DrawMenuBar HandleXL
End Sub


On peut se passer de findwindow si on utilise application.hwnd mais pour XL 2002 et 2003.

A+++
 

Statistiques des forums

Discussions
312 321
Messages
2 087 266
Membres
103 502
dernier inscrit
talebafia