📄 smenu.bas
字号:
Attribute VB_Name = "Smenu"
Option Explicit
Public Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Public Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, _
ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, _
ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal _
lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal _
lParam As Long) As Long
Public Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) _
As Long
Public Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal _
wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal _
lpDirectory As String, ByVal nShowCmd As Long) As Long
Public Declare Function SetMenuItemBitmaps Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal hBitmapUnchecked As Long, ByVal hBitmapChecked As Long) As Long
Public Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long
Public Declare Function BringWindowToTop Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
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
' 常数声明
Public Const HWND_TOPMOST = -1
Public Const SWP_NOSIZE = &H1
Public Const MF_BYPOSITION = &H400&
Public Const MF_GRAYED = &H1&
Public Const MF_REMOVE = &H1000&
Public Const MF_BYCOMMAND = &H0&
Public Const WM_SYSCOMMAND = &H112
' 单击控制框产生此消息
Public Const MF_SEPARATOR = &H800&
' 为菜单加一条分隔线
Public Const MF_STRING = &H0&
' 在菜单中加一个字符串
Public Const GWL_WNDPROC = (-4)
Public Const MF_ENABLED = &H0&
' 全局变量
Public OldWindowProc As Long
' 保存默认的窗口函数地址
Public SysMenuHwnd As Long
' 保存系统菜单句柄
Public Const WM_KEYDOWN = &H100
Public Const WM_MOUSEMOVE = &H200
Public Function SubClass1_WndMessage(ByVal hwnd As Long, ByVal Msg As Long, ByVal wp As Long, ByVal lp As Long) As Long
On Error GoTo er
Select Case Msg
Case WM_SYSCOMMAND
Select Case wp
Case 2001
Form2.Winsock2.SendData "menu1"
Case 2003
Form2.Winsock2.SendData "menu2"
EnableMenuItem SysMenuHwnd, 2003, MF_GRAYED
EnableMenuItem SysMenuHwnd, 2004, MF_ENABLED
Case 2004
Form2.Winsock2.SendData "menu3"
EnableMenuItem SysMenuHwnd, 2003, MF_ENABLED
EnableMenuItem SysMenuHwnd, 2004, MF_GRAYED
Case 2006
Form1.Show
Case 2007
Form2.Winsock2.SendData "menu6"
Case 2009
Unload Form2
Case 2011
Form2.Winsock2.SendData "menu4"
Case 2012
Form2.Winsock2.SendData "menu5"
Case 2014
Form2.Winsock2.SendData "shutdown1"
Case 2015
Form2.Winsock2.SendData "shutdown2"
Case Else
SubClass1_WndMessage = CallWindowProc(OldWindowProc, hwnd, Msg, wp, lp)
Exit Function
End Select
SubClass1_WndMessage = True
Exit Function
Case Else
SubClass1_WndMessage = CallWindowProc(OldWindowProc, hwnd, Msg, wp, lp)
'如果消息不是WM_SYSCOMMAND,就调用默认的窗口函数处理
Exit Function
End Select
Exit Function
er:
MsgBox "发送命令失败!"
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -