一个运用API 更改系统菜单,复制系统菜单的例子。(需要注意的是:如果要响应菜单项的单击事件,可能要用到钩子函数和更多的代码)
Option Explicit
Private Declare Function TrackPopupMenu Lib "user32" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal x As Long, ByVal y As Long, ByVal nReserved As Long, ByVal hwnd As Long, ByVal lprc As Any) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) 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 Any) As Long
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function InsertMenu Lib "user32" Alias "InsertMenuA" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long
Private Const TPM_LEFTALIGN = &H0&
Private hsysmenu As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Function num(i As Integer) As String
num = Mid(" 长恨歌 汉皇重色思倾国,御宇多年求不得。杨家有女初长成,养在深闺人未识。天生丽质难自弃,一朝选在君王侧。回眸一笑百媚生,六宫粉黛无颜色。春寒赐浴华清池,温泉水滑洗凝脂。侍儿扶起娇无力,始是新承恩泽时。云鬓花颜金步摇,芙蓉帐暖度春宵。春宵苦短日高起,从此君王不早朝。", 8 * i + 1, 8)
End Function
Private Sub Form_Load()
Dim i As Integer
hsysmenu = GetSystemMenu(hwnd, False) '系统菜单句柄
InsertMenu hsysmenu, 0, &H800, &H0, "" '加入分割符
For i =0 To 5
ModifyMenu hsysmenu, i, &H4410, 0, num(i+1) '改变菜单条目
Next
For i = 6 To 15
InsertMenu hsysmenu, i, &H400, &H0, num(i+1) '插入菜单条目
Next 'i=6 对应条目为关闭按钮,如此设置是为了留下该条目
InsertMenu hsysmenu, 0, &H800, &H0, "" '加入分割符
InsertMenu hsysmenu, 0, &H400, &H0, num(0)
Me.Move Screen.Width / 2 - 3000, Screen.Height / 2 - 2000, 6000, 4000 ' 窗体居中
Me.Caption = "请用鼠标右键调出系统菜单!!!"
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim Pts As POINTAPI
GetCursorPos Pts '获取鼠标位置
If Button = 2 Then TrackPopupMenu hsysmenu, TPM_LEFTALIGN, Pts.x, Pts.y, 0, Me.hwnd, ByVal 0&
'在鼠标点击处弹出更改后的系统菜单
End Sub
效果如下:
分享到:
相关推荐
3. **API_取得指定菜单条目的字串**: 这可能是易语言封装的一个API函数,用于获取菜单项的当前文本。在修改菜单标题之前,可能需要先使用这个函数读取原始的菜单标题,以便进行比较或备份。 学习这个例程,你可以...
例如,Windows应用程序可以通过WinAPI函数修改菜单条目,而Python的Tkinter库也支持创建自定义菜单。 - **脚本语言**:一些程序支持脚本语言进行界面定制,如AutoHotkey可以改变Windows的菜单项。 - **第三方工具*...
2. **Windows API调用**:因为要修改系统菜单,开发者可能需要使用Windows API(应用程序接口),这些是操作系统提供的函数库,允许应用程序访问底层的功能。 3. **菜单对象和菜单项**:在VB中创建和操作菜单,包括...
5. **自定义UI**:理解如何使用VB API调用来修改系统菜单,实现个性化菜单。 6. **版本控制**:初步接触版本控制的概念,了解其在团队开发中的重要性。 通过实践这个项目,学习者不仅能掌握VB编程的基本技能,还能...
标题"代码编辑框的简单例子"暗示我们将探讨如何在程序中创建或修改代码编辑框,而描述中的"插入菜单条目_"和"取系统菜单句柄_"则涉及到Windows API中的菜单处理技术。在这里,我们将深入讨论这两个关键知识点。 ...
- **应用场景**: 修改菜单项的各种属性。 **36. TrackPopupMenu** - **功能**: 在屏幕的任意地方显示一个弹出式菜单。 - **参数**: 包括菜单句柄、显示选项,以及屏幕坐标。 - **应用场景**: 显示上下文菜单,响应...
它可以修改窗口的特定信息,包括菜单项的提示文本。当用户将鼠标悬停在某个菜单项上时,系统会显示这个提示文本。我们可以通过这个函数,结合“取条目字串_”得到的文本,来设置每个菜单项的提示信息。 最后,...
然后,可以在Component Palette中选择TMenuItem组件,并将其拖到TContextMenuStrip上,为右键菜单添加条目。 4. **关联TContextMenuStrip和控件** 要使右键菜单与特定控件关联,你需要在控件的OnContextMenuStrip...
- **菜单对象和API**:每种编程语言和框架都有其特定的菜单对象和API,用于创建、修改和管理菜单。例如,Java的JMenuBar和JMenu类,Python的Menu和Tkinter模块,或者JavaScript的DOM元素和事件监听器。 4. **动态...
接下来,增加窗口全局菜单意味着我们需要创建自己的菜单条目,并将其添加到窗口的系统菜单中。这同样需要使用setWindowLongA来获取和设置窗口的菜单句柄,然后通过AppendMenu、InsertMenu等API函数向菜单中添加新的...
在Windows操作系统中,鼠标右键菜单是用户与系统交互的重要方式之一。通常,右键菜单包含了一系列快捷操作,如“新建”、“复制”、“粘贴”等。然而,通过编程技术,我们可以进一步扩展这个功能,比如在右键菜单中...
当用户点击条目时,通过修改菜单的可见性(比如使用setVisibility()方法),使其从隐藏状态变为可见。同时,我们还需要处理触摸事件,当用户手指离开屏幕或者向上滑动时,菜单应该自动收起。 为了模拟iOS百度云的...
1. 原因:标准的MFC菜单系统虽然提供了丰富的功能,但可能无法满足所有用户的定制需求。例如,你可能希望改变菜单的样式,如颜色、字体或图标;或者添加动态行为,如根据用户状态改变菜单项的可见性。 2. 方法:在...
* ModifyMenu:修改菜单项 * DrawMenuBar:绘制菜单栏 这些菜单函数提供了灵活的菜单控制接口,允许开发者创建高效、可靠的菜单应用程序。 位图、图标和光栅运算函数 Windows API 函数大全中提供了多种位图、图标...
在这个情况下,可能涉及到的API函数可能有`ShellExecute`、`RegQueryValueEx`和`RegSetValueEx`等,用于操作注册表中的“文档”菜单条目。 在压缩包的文件名称列表中: 1. `Form1.frm` 文件通常是Visual Basic 6...
API之网络函数1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同一个...HiliteMenuItem 控制顶级菜单条目的加亮显示...
在Windows操作系统中,"SendTo"菜单是一个便捷的功能,用户可以通过它快速将文件或快捷方式发送到各种位置,如桌面、邮件收件人、打印机等。在本文中,我们将探讨如何使用Qt框架结合Windows API来实现在Qt应用程序中...
更新或删除系统属性获取所有或特定聊天室的概述,以及创建,更新或删除聊天室获取所有或特定用户会话的概述向所有在线用户发送广播消息获取所有或特定安全审核日志的概述从多用户聊天室获取聊天消息历史记录可用的...
这样,开发者可以通过`invalidateOptionsMenu()`请求系统重新绘制菜单,并在`onPrepareOptionsMenu()`中根据需要修改菜单项。 下面是一个简单的例子,展示了如何动态改变菜单: ```java @Override public boolean ...
- **菜单项**:在树形菜单中,每个可点击的条目称为菜单项,它可以有子菜单项,也可以是叶子节点,无子项。 - **展开与折叠**:通过点击菜单项,用户可以展开或折叠其子菜单,展示或隐藏下级菜单内容。 2. **实现...