我创建了一个word.application对象,打开了一个新的word文档:set wapp=new word.application
wapp.documents.open "c:\test.doc"
set wdoc=wapp.activedocument我用FindWindow API获得了这个word窗口的句柄hWnd。现在我想disable这个word窗口的“最大化”、“最小化”和“关闭”按钮,以及文档子窗口的“关闭”按纽,我该怎么做?谢谢!
wapp.documents.open "c:\test.doc"
set wdoc=wapp.activedocument我用FindWindow API获得了这个word窗口的句柄hWnd。现在我想disable这个word窗口的“最大化”、“最小化”和“关闭”按钮,以及文档子窗口的“关闭”按纽,我该怎么做?谢谢!
解决方案 »
- 求助,VB Mschart控件的动态加载曲线
- 一个很奇怪的问题,MSCOMM控件的Settings属性,无论我如何设置,奇偶校验位都是0,不知道是怎么回事,请高手赐教
- email和Excel问题综合!
- 有关datagrid控件的问题
- 谁能给我一个width,scalewidth和height,scaleheight的详细区别
- 新手问题:请问怎么实现文本框中的内容不可更改???
- 关于还原数据库
- Cmd.Execute的结果怎么返回?
- 请问哪里有ACTIVEREPORT的使用说明
- 关于SendMessage 发送WM_SETCURSOR消息的问题
- 如何用VB做关机程序(详细)?加分100
- 如何实现屏幕取词?
Dim hMenu As Long, MII As MENUITEMINFO
hMenu = GetSystemMenu(hWnd, 0)
MII.cbSize = Len(MII)
MII.dwTypeData = String(80, 0)
MII.cch = Len(MII.dwTypeData)
MII.fMask = MIIM_STATE
MII.wID = SC_CLOSE
GetMenuItemInfo hMenu, SC_CLOSE, False, MII
MII.wID = 10&
MII.fMask = MIIM_ID
SetMenuItemInfo hMenu, SC_CLOSE, False, MII
MII.fState = MII.fState Or MFS_GRAYED
MII.fMask = MIIM_STATE
SetMenuItemInfo hMenu, MII.wID, False, MII
'SendMessage Me.hwnd, WM_NCACTIVATE, True, ByVal 0&’不行,去掉注释试一下End Sub试一下,未必可行。API、常数、类型的声明自己补充,最大化、最小化自己类推。
Private Declare Function RemoveMenu Lib "User32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function DrawMenuBar Lib "User32" (ByVal hwnd As Long) As Long
Private Declare Function GetMenuItemCount Lib "User32" (ByVal hMenu As Long) As Long
Private Const MF_BYPOSITION = &H400&
Private Const MF_DISABLED = &H2&
Dim hMenu As Long, nCount As Long
hMenu = GetSystemMenu(hWnd, 0)
nCount = GetMenuItemCount(hMenu)
Call RemoveMenu(hMenu, nCount - 1, MF_DISABLED Or MF_BYPOSITION)
DrawMenuBar Frm.hwnd
改为:
DrawMenuBar hwnd
声明:
Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As LongPublic Const MF_BYPOSITION = &H400&
Public Const MF_REMOVE = &H1000&
使用:
Private Sub Form_Load()
Dim hSysMenu As Long
Dim nCnt As Long
Me.Show
hSysMenu = GetSystemMenu(Me.hwnd, False)
If hSysMenu Then
' 取得系统菜单中的数量
nCnt = GetMenuItemCount(hSysMenu)If nCnt Then
'编号 (0, 1, 2, 3...)
RemoveMenu hSysMenu, nCnt - 1, MF_BYPOSITION Or MF_REMOVE
'去掉 关闭 按钮
RemoveMenu hSysMenu, nCnt - 2, MF_BYPOSITION Or MF_REMOVE
'去掉一个下划线
'注意下面的语句,请根据不同 Form 类别具体情况进行调试。
'没个语句将关闭不同的功能!!
'RemoveMenu hSysMenu, nCnt - 3, MF_BYPOSITION Or MF_REMOVE
'RemoveMenu hSysMenu, nCnt - 4, MF_BYPOSITION Or MF_REMOVE
'RemoveMenu hSysMenu, nCnt - 5, MF_BYPOSITION Or MF_REMOVE
DrawMenuBar Me.hwnd
' 重画
End If
End If
End Sub提供的方法二:
Const MF_REMOVE = &H1000&
Const SC_CLOSE = &HF060
Const SC_MAXIMIZE = &HF030
并在 Sub Form_Load()中加入:
RemoveMenu GetSystemMenu(hwnd, 0), SC_CLOSE, MF_REMOVE
这样就可以使关闭按钮无效。同样加入
RemoveMenu GetSystemMenu(hwnd, 0), SC_MAXIMIZE, MF_REMOVE
Dim wapp As Word.Application
Dim cbc As Object
Set wapp = New Word.Application
wapp.Documents.open "c:\test.doc"
Set cbc = wapp.CommandBars("Standard").FindControl(, 2520) '新建
If Not (cbc Is Nothing) Then cbc.Delete
Set cbc = wapp.CommandBars("Standard").FindControl(, 23) '打开
If Not (cbc Is Nothing) Then cbc.Delete
Set cbc = wapp.CommandBars("Standard").FindControl(, 3) '保存
If Not (cbc Is Nothing) Then cbc.Delete
Set cbc = wapp.CommandBars("File").FindControl(, 18) '新建
If Not (cbc Is Nothing) Then cbc.Delete
Set cbc = wapp.CommandBars("File").FindControl(, 23) '打开
If Not (cbc Is Nothing) Then cbc.Delete
Set cbc = wapp.CommandBars("File").FindControl(, 3) '保存
If Not (cbc Is Nothing) Then cbc.Delete
Set cbc = wapp.CommandBars("File").FindControl(, 748) '另存为
If Not (cbc Is Nothing) Then cbc.Delete
wapp.Visible = True