Hi
I am using the following vba code to disable the close button of
MSWord. It works fine in all previous version of word but does not
work for word 2007.
Any ideas how to disable the close button of word 2007.
Thanks in advance.
Public Declare Function FindWindow Lib "User32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetSystemMenu Lib "User32" (ByVal hwnd As
Long, ByVal bRevert As Long) As Long
Private Declare Function GetMenuItemCount Lib "User32" (ByVal hMenu As
Long) As Long
Private Declare Function RemoveMenu Lib "User32" (ByVal hMenu As Long,
ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function ModifyMenu Lib "User32" Alias
"ModifyMenuA" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal
wFlags As Long, ByVal wIDNewItem As Long, ByVal lpString As String) As
Long
Private Declare Function DrawMenuBar Lib "User32" (ByVal hwnd As Long)
As Long
Private Const MF_BYPOSITION = &H400&
Private Const MF_REMOVE = &H1000&
Private Sub DesactiveX()
'désactiver croix de fermeture
On Error Resume Next
Dim Handle As Long
Dim hMenu As Long
Dim nCount As Long
Handle = FindWindow("OpusApp", vbNullString)
hMenu = GetSystemMenu(Handle, 0)
nCount = GetMenuItemCount(hMenu)
Call RemoveMenu(hMenu, nCount - 1, MF_REMOVE Or MF_BYPOSITION)
End Sub
Russ - 23 Nov 2007 09:28 GMT
FIF,
Try changing the Window Class Name in your code
http://www.cpearson.com/excel/OfficeAppsWindowClasses.aspx
http://users.skynet.be/am044448/Programmeren/VBA/vba_class_names.htm
"OpusApp" --> "NetUIHWND"
> Hi
>
[quoted text clipped - 34 lines]
> Call RemoveMenu(hMenu, nCount - 1, MF_REMOVE Or MF_BYPOSITION)
> End Sub

Signature
Russ
drsmN0SPAMikleAThotmailD0Tcom.INVALID
FIF - 26 Nov 2007 08:40 GMT
Thanks for the answer, but it does not solve the issue. Both OpusApp and
NetUIHWND windows are created when launching a word 2007 instance.
But only OpusApp seems to have a system menu which does not seem to support
the former RemoveMenu API.
Any other ideas ?
> FIF,
> Try changing the Window Class Name in your code
[quoted text clipped - 41 lines]
> > Call RemoveMenu(hMenu, nCount - 1, MF_REMOVE Or MF_BYPOSITION)
> > End Sub