Delphi在系统菜单中添加菜单项
unit dy219; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs; type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
procedure sysmenu(var msg: twmmenuselect);message wm_syscommand;
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
begin
i := getsystemmenu(handle,false);
appendmenu(i,mf_separator,0,nil);
appendmenu(i,mf_string,100,'我的菜单(&E)');
end; procedure TForm1.sysmenu(var msg: twmmenuselect);
begin
if msg.IDItem = 100 then
showmessage('您选择了自己添加的菜单!')
else
inherited;
end; end.

API函数
function GetSystemMenu(hWnd:HWND;bRevert:BOOL):HMENU;stdcall;
参数说明:
hWnd: 所要取得系统菜单句柄的目标窗口句柄。
bRevert:是否修改原始菜单。
返回一个HMENU型的菜单句柄。
通过GetSystemMenu得到句柄后可以使用AppendMenu函数为系统菜单增加一个菜单项,该函数原型为:
function AppendMenu(hMenu:HMENU;uFlags,uIDNewItem:UNIT;lpNewItem:Pchar):BOOL;stdcall;
参数说明:
hMenu: 用GetSystemMenu函数得到的菜单句柄。
uFlag,uIDNewItem:菜单唯一标志,弹出菜单唯一标志。
lpNewItem:菜单的类型。
容易出现问题:
缺少代码 message wm_syscommand;这句代码的主要作用是:A window receives this message when the user chooses a commond from the window menu.而如果注释了inherited ,则所有系统菜单都不能用。
http://blog.csdn.net/zang141588761/article/details/51992368
Delphi在系统菜单中添加菜单项的更多相关文章
- mfc 小程序---在系统菜单中添加菜单项
1建立一个对话框工程:在dlg类里定义一个菜单指针m_pMenu,在对话框OnInitDialog函数里添加代码: m_pMenu=GetSystemMenu(FALSE);//获取系统菜单的指针 m ...
- CentOS7 系统菜单中添加快捷方式
一,在桌面新建一个文件 文件名随意,但必须带有.desktop的后缀名, 以Eclipse为例 vi /usr/share/applications/eclipse.desktop 二,在文件中写入如 ...
- 为Windows资源管理器右键菜单添加菜单项
为Windows资源管理器右键菜单添加菜单项 在Windows下命令行用的比较多,经常在资源管理器里翻到某个目录,若想要在此目录下跑命令,只能是打开cmd.exe,然后一路cd才能到达此目录. 每次都 ...
- ecshop后台添加菜单项,权限问题
ecshop后台自定义菜单涉及到几个重要的权限控制的文件,先做如下总结: 后台添加菜单项,并设置权限的步骤.:(以在系统模块添加申请友链菜单为例)commn.php : \language ...
- iOS:菜单控制器和菜单项:UIMenuController和UIMenuItem
菜单控制器和菜单项:弹出自定义的菜单栏窗口 提示: 1. Menu所处的View必须实现 – (BOOL)canBecomeFirstResponder, 且返回YES2. Menu所处的View必须 ...
- cocos2dx中的菜单项CCMenuItem及其五个子类的使用
/*CCMenuItem是一个虚基类,因此必须实现它的五个子类之一,再把子类对象赋给父类指针,相当于多态*/ CCMenuItem *fontItem = CCMenuItemFont::create ...
- [Firefox附加组件]0002.添加菜单项
Add-onSDK 还不能为火狐浏览器提供一个API添加新的菜单项.但它是可扩展的设计,所以任何人都可以建立和发布模块,使用插件开发者.大牛埃里克沃尔德写的MenuItems模块,能够使我们很方便的添 ...
- 在右键菜单中添加用Jupyter Notebook打开
在右键菜单中添加用Jupyter Notebook打开 为了把 Jupyter 的工作目录指定到某一个文件夹下,每次都要启动 CMD 终端, 然后激活 Anaconda 环境,再启动 Jupyter ...
- Android 向系统日历中添加事件
查了一天半,总算有点大概了.以下是自己的理解,有错误的地方望指正. android系统有日历功能,应用程序可以根据一些接口开发自己的功能,即使是日历app也是根据这些接口开发的,所以我们可以利用程序向 ...
随机推荐
- python request get
import requests from urllib import parse # 返回response resp = requests.get("https://www.baidu.co ...
- JUnit中@Test的运行顺序
原文链接: Test execution order 原文日期: 2012年12月06日 翻译日期: 2014年10月16日 翻译人员: 百里马 依照设计,Junit不指定test方法的运行顺序. 到 ...
- 容易遗忘的JS知识点整理—hasOwnProperty相关
为了判断一个对象是否包含自定义属性而不是原型链上的属性,我们需要使用继承自 Object.prototype 的 hasOwnProperty方法.hasOwnProperty 是 JavaScrip ...
- selenium 爬取空间说说
package cn.hb.util; import java.io.File; import java.io.FileWriter; import java.io.IOException; impo ...
- lucene 7.x 查询
@Test public void indexSearch() throws IOException, ParseException { //Termquery:精确string查询 // Query ...
- Vue中v-for不绑定key会怎样
Vue的v-for不绑定key,默认行为和绑定key="index"是差不多的,官方没有默认这种行为的情况下,会导致所有列表DOM重新渲染.key="index" ...
- 允许svn服务与WINDOWS自己主动启动
曾经的svnserve要想成为windows服务,必须依赖于svnservice或其它工具. 从Subversion1.4開始,Subversion本身就集成了Windows服务的工具. 将svn设置 ...
- C#7
C#7 阅读目录 out变量 元组(Tuples) 模式匹配(Pattern matching) 本地引用和返回(Ref locals and returns) 本地函数(Local function ...
- C# WPF 左侧菜单右侧内容布局效果实现
原文:C# WPF 左侧菜单右侧内容布局效果实现 我们要做的效果是这样的,左侧是可折叠的菜单栏,右侧是内容区域,点击左侧的菜单项右侧内容区域则相应地切换. wpf实现的话,我的办法是用一个tabcon ...
- 比较实时分布式搜索引擎(senseidb、Solr、elasticsearch)
1.它们是基于lucene的. 2.它们分布:sensedb它是multi-write;Solr的shards它是master-slave状态.基于pull策略:elasticsearch的shard ...