我发现了很多关于使用hwind添加MenuItems的信息,但我想删除/禁用/隐藏外部程序上的菜单栏。
我知道如何使用hwind删除边框和窗口标题,但我不知道如何删除菜单栏。
我该怎么做?
提前谢谢!
编辑: 我无法在SPY ++上发布任何图片,因为我是新手。 这是程序句柄中的TreeView:
WINDOW XXXXXX Afx:400000:b:10005:6:213078f
WINDOW XXXX AfxFrameOrView42u
WINDOW XXXX msctls_statusbar32
WINDOW XXXX AfxControlBar42u
- WINDOWS XXXXX ToolbarWindow32
WINDOW XXXX AfxControlBar42u
WINDOW XXXX AfxControlBar42u
WINDOW XXXX AfxControlBar42u
如果我打开highlited手柄的属性,它会显示以下样式选项:
WS_CHILDWINDOW
WS_VISIBLE
WS_CLIPSIBLINGS
WS_CLIPCHILDREN
CBRS_BORDER_BOTTOM
CBRS_ALIGN_TOP
我现在可以更改样式属性并删除WS_VISIBLE吗?
非常感谢你!
答案 0 :(得分:0)
好的,我有解决方案!
导入:
Imports System.Runtime.InteropServices
声明:
<DllImport("user32.dll")> _
Private Shared Function GetMenu(hWnd As IntPtr) As IntPtr
End Function
<DllImport("user32.dll")> _
Private Shared Function SetMenu(hWnd As IntPtr, hMenuOld As Int32) As IntPtr
End Function
子:
Private Sub RemoveMenuBar()
For Each p As Process In Process.GetProcesses()
If p.ProcessName = "PROCESS" Then
Dim hwnd As IntPtr = p.MainWindowHandle
Dim sysMenu = GetMenu(hwnd)
SetMenu(hwnd, Nothing)
End If
Next
End Sub
谢谢你的帮助!