怎样禁用系统菜单项中的粘贴和删除这两个菜单项 如题,想用 API HOOK 获取当显示系统鼠标右键菜单的时候,怎样获取菜单项,并禁用其中的删除和粘贴两个项... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://hi.baidu.com/piaoliuxia/blog/item/9041e70955510e86d1581bc9.html这里有比较详细的HOOK解释 或者你自己重新编写一个鼠标右键的菜单应该是你自己的程序吧?那就自己编写一个没有“粘贴”和“删除”的菜单不过建议屏蔽掉delete和ctrl+V快捷键…… 目前已经知道怎样屏蔽系统菜单中的关闭了,方法类型,但是还没有解决问题,现把代码发上来,请大侠帮帮我。unit u_menuhook;interfaceuses Windows, Messages;var hhk: HHOOK; function HookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; function InstMenuHook: Boolean; stdcall; export; function UnInstMenuHook: Boolean; stdcall; export;implementationfunction HookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;var msg: PMsg; menu: HMENU;begin case nCode of MSGF_MENU: begin msg:= PMsg(lParam); if msg.hwnd <> 0 then begin menu:= GetSystemMenu(msg.hwnd, False); EnableMenuItem(menu, SC_CLOSE, MF_GRAYED); end; end; end; Result:= CallNextHookEx(hhk, nCode, wParam, lParam);end;function InstMenuHook: Boolean; stdcall; export;begin if hhk <> 0 then begin Result:= False; Exit; end; hhk:= SetWindowsHookEx(WH_SYSMSGFILTER, HookProc, HINSTANCE, 0); Result:= hhk <> 0;end;function UnInstMenuHook: Boolean; stdcall; export;begin if hhk <> 0 then begin UnhookWindowshookEx(hhk); hhk:= 0; end; Result:= hhk = 0;end;end. 或者哪位大侠知道Windows菜单中的删除和粘贴铵钮的 ID ,也请告知一下,好再有个思路找 HOOK TrackPopupMenu这个API函数,可以获取将要弹出的菜单的HMENU, 接下来用GetMenuItemCount获取菜单项目的数目,然后循环调用 GetMenuString,获取每个项目的文字,判断是否为删除和粘贴,如果是就EnableMenu Sqlite 不支持 中文路径问题! 关于软件注册的问题 DBgrid数据更新的定位问题,真急人阿? 讨论关于图片的问题 创建表时错误信息,不明白?? Delphi有没有执行SQL脚本的控件? 关于BGGrid的用法 求教:Delphi7写的用户登陆程序,关于区分大小写问题。 help....有关于combobox的一个问题? 怎样才能通过我的应用程序得知其它应用程序的一个控件的handle? 如何保证远程数据传送的安全性? 大家觉得d7和d2007哪个好用?
这里有比较详细的HOOK解释
应该是你自己的程序吧?那就自己编写一个没有“粘贴”和“删除”的菜单
不过建议屏蔽掉delete和ctrl+V快捷键……
Windows, Messages;var
hhk: HHOOK; function HookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
function InstMenuHook: Boolean; stdcall; export;
function UnInstMenuHook: Boolean; stdcall; export;implementationfunction HookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var
msg: PMsg;
menu: HMENU;
begin
case nCode of
MSGF_MENU:
begin
msg:= PMsg(lParam);
if msg.hwnd <> 0 then
begin
menu:= GetSystemMenu(msg.hwnd, False);
EnableMenuItem(menu, SC_CLOSE, MF_GRAYED);
end;
end;
end;
Result:= CallNextHookEx(hhk, nCode, wParam, lParam);
end;function InstMenuHook: Boolean; stdcall; export;
begin
if hhk <> 0 then
begin
Result:= False;
Exit;
end;
hhk:= SetWindowsHookEx(WH_SYSMSGFILTER, HookProc, HINSTANCE, 0);
Result:= hhk <> 0;
end;function UnInstMenuHook: Boolean; stdcall; export;
begin
if hhk <> 0 then
begin
UnhookWindowshookEx(hhk);
hhk:= 0;
end;
Result:= hhk = 0;
end;end.