DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: newkeymark
今日帖子: 5
在线用户: 0
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/4/28 10:44:52
标题:
用程序修改注册表禁止系统开始菜单怎么做? 浏览:2727
加入我的收藏
楼主: 用程序修改注册表禁止系统开始菜单怎么做?
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 delphize (ゞ艾╃澤メ) ★☆☆☆☆ -
盒子活跃会员
2004/4/30 22:51:49
1楼: 什么禁止系统开始菜单啊?
可以禁止开始菜单里的运行、注销、关机……你到底要哪一样??
----------------------------------------------
燃烧18岁!让青春无悔!

Delphi天堂(QQ群):3701818 欢迎您的加入!
按此在新窗口浏览图片
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/5/3 11:01:10
2楼: 整个禁止 倒 理解力有问题!
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 delphize (ゞ艾╃澤メ) ★☆☆☆☆ -
盒子活跃会员
2004/5/3 12:05:40
3楼: 你的问题太叼钻了……
如果要禁止开始菜单里的运行、关机、注消、查找等等……还好说!
----------------------------------------------
燃烧18岁!让青春无悔!

Delphi天堂(QQ群):3701818 欢迎您的加入!
按此在新窗口浏览图片
作者:
男 delphize (ゞ艾╃澤メ) ★☆☆☆☆ -
盒子活跃会员
2004/5/3 12:12:03
4楼: 我只知道这么多啦!
*禁止修改开始菜单 
    修改 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer新建DWORD值NoChangeStartMenu键值为1 
*删除开始菜单中查找的历史记录 
    修改 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\DocFindSpecMRU删除右边的字符串值就可以了(删除文件的查找记录)或者HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FindComputerMRU删除字符串值就可以了 
*删除开始菜单的注销项 
    修改 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer新建二进制值NoLogOff键值为01000000 
*删除开始菜单的收藏夹项 
    修改 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer新建DWORD值NoFavoritesMenu,键值为1 
*删除Windows Update菜单 
    修改 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer新建DWORD值NoWundowsUpdate键值为1 
*删除开始菜单设置子菜单中 
    修改 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer新建DWORD值NoSetFolders键值为1 
*禁止开始菜单中设置的文件夹选项 
    修改 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer新建DWORD值NoFolderOptions键值为1 
*禁用开始菜单中设置的任务栏和开始菜单项 
    修改 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer新建DWORD值NoSetTaskbar键值为1 
*屏蔽设置菜单中的查找选项 
    修改 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer新建DWORD值NoFind键值为1 
*隐藏开始菜单中的子文件夹 
    修改 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer新建DWORD值NoStartMenuSubFolders键值为1 
*禁止开始菜单的运行项 
    修改 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer新建DWORD值NoRun键值为1 
*禁止开始菜单的关闭系统 
    修改 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer新建DWORD值NoClose键值为1。如果想对所有用户生效HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer新建DWORD值NoClose键值为1
----------------------------------------------
燃烧18岁!让青春无悔!

Delphi天堂(QQ群):3701818 欢迎您的加入!
按此在新窗口浏览图片
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/5/3 12:31:01
5楼: 建议你经常到 CSDN上走走 那里的问题比这里要有分量!
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 delphize (ゞ艾╃澤メ) ★☆☆☆☆ -
盒子活跃会员
2004/5/3 14:37:46
6楼: 干脆你就用API把开始菜单隐藏掉算了啊~~~
----------------------------------------------
燃烧18岁!让青春无悔!

Delphi天堂(QQ群):3701818 欢迎您的加入!
按此在新窗口浏览图片
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/5/3 14:44:39
8楼: 感谢 SELPHIL老大!
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 delphize (ゞ艾╃澤メ) ★☆☆☆☆ -
盒子活跃会员
2004/5/3 14:45:42
8楼: 七楼的方法好像不行啊!
----------------------------------------------
燃烧18岁!让青春无悔!

Delphi天堂(QQ群):3701818 欢迎您的加入!
按此在新窗口浏览图片
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/5/3 14:50:52
9楼: 是啊 他屏蔽的是 DisableRegistryTools  注册表 :)
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 delphize (ゞ艾╃澤メ) ★☆☆☆☆ -
盒子活跃会员
2004/5/3 14:52:01
10楼: bios你想要出什么软件啊??
----------------------------------------------
燃烧18岁!让青春无悔!

Delphi天堂(QQ群):3701818 欢迎您的加入!
按此在新窗口浏览图片
作者:
男 sephil (NAILY Soft) ★☆☆☆☆ -
盒子中级会员
2004/5/3 14:52:28
9楼: 我看错题目了,哈哈
干脆屏蔽调Win键和开始按钮
----------------------------------------------
Copyright 2008 ? NAILY Soft

Click here to redirect to my home
Click here to redirect to my blog
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/5/3 14:57:22
11楼: 是毕业设计老大 偶的水平还早着呢!下世纪 可能考虑写个什么东西!
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 delphize (ゞ艾╃澤メ) ★☆☆☆☆ -
盒子活跃会员
2004/5/3 15:07:34
12楼: BIOS太歉虚了吧!如果说你没水平!那我就不用做人了!
----------------------------------------------
燃烧18岁!让青春无悔!

Delphi天堂(QQ群):3701818 欢迎您的加入!
按此在新窗口浏览图片
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/5/16 9:54:28
13楼: 最好要注册表的!
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 aeolus_x (风) ★☆☆☆☆ -
盒子活跃会员
2004/5/18 14:37:31
14楼: 屏蔽掉开始按钮 

--------------------------------------------------------------------------------

procedure TForm1.Button1Click(Sender: TObject); 
begin 
{Disable the start button} 
EnableWindow(FindWindowEx(FindWindow('Shell_TrayWnd', nil),0, 'Button', nil),false); 
end; 

procedure TForm1.Button2Click(Sender: TObject); 
begin 
{Enable the start button} 
EnableWindow(FindWindowEx(FindWindow('Shell_TrayWnd', nil),0,'Button',nil),true); 
end;  
注意:如果按win键还是可以弹出开始菜单的   

----------------------------------------------
-我还是新手
作者:
男 aeolus_x (风) ★☆☆☆☆ -
盒子活跃会员
2004/5/18 14:37:53
15楼: 全面禁止WINDOWS 
诸位朋友,你是否曾经有过全面禁止Windows的想法呢?就是诸如禁止Windows桌面、任务栏(包括工具栏的快速启动区域、右下角的通知区域、开始按钮、任务按钮等)、系统按键(包括“Ctrl+Alt+Del”、“Alt+Tab”、“Ctrl+Esc”、“Start-button”等等)、屏幕保护,还有最后的禁止关机。禁止就是不能对它们进行操作,你要是不愿意禁止,你还可以隐藏,把这些统统隐藏起来。

要禁止桌面、任务栏必须知道,当桌面的背景图片刚刚显现,注意这时的屏幕是没有桌面图标和任务栏的,也就是说,它们都是在系统启动后才装入系统的,并不是系统的核心部分。通过对系统当前所有窗体的搜索可以知道,它们都是窗体 (当然,并不是普通的窗体),且都拥有自己的句柄,这样,我们就可以用ShowWindow(Wnd, SW_HIDE)来隐藏它们,或者用EnableWindow(Wnd, False)来禁止它们,是不是很简单。关键是要获得它们的句柄,这可以用FindWindow获得,而用FindWindow必须知道所找窗体的类名。下面先列出我们要用到的类名:

Shell_TrayWnd 任务栏整条

TrayNotifyWnd 任务栏的右下角通知区域

Button 任务栏上的开始按钮

ReBarWindow32 任务栏的工具栏和任务按钮

TrayClockWClass 通知区域的小时钟

ShellDll_DefView 桌面图标

Progman 程序管理器

1. 禁止/隐藏整条任务栏
procedure TForm1.Button1Click(Sender: TObject);

Var Wnd: THandle;

begin

Wnd:= FindWindow('Shell_TrayWnd', nil);

//用下面这一句实现隐藏

if Wnd <> 0 then ShowWindow(Wnd, SW_HIDE);

//用下面这一句实现禁止

if Wnd <> 0 then EnableWindow(Wnd, False);

end;

禁止和隐藏最好只用一个,因为隐藏了,你无处去按,等于禁止;禁止了,失去了作用,藏不藏都无关紧要。最后别忘了恢复正常必须用ShowWindow(Wnd, SW_SHOW)和EnableWindow(Wnd, True)。

注:以下2~6只列出如何使用FindWindow

2. 隐藏任务栏的右下角通知区域
Wnd:= FindWindow('Shell_TrayWnd', nil);

Wnd:=FindWindowEx(Wnd, HWND(0),'TrayNotifyWnd', nil);

3. 禁止/隐藏任务栏上的开始按钮
Wnd:=FindWindow('Shell_TrayWnd', nil);

Wnd:=FindWindowEx(Wnd, HWND(0),'Button', nil);

4. 禁止/隐藏任务栏的工具栏和任务按钮
Wnd:=FindWindow('Shell_TrayWnd', nil);

Wnd:=FindWindowEx(Wnd, HWND(0), 'ReBarWindow32', nil);

5. 隐藏通知区域的小时钟
Wnd:=FindWindow('Shell_TrayWnd', nil);

Wnd:=FindWindowEx(Wnd, HWND(0), 'TrayNotifyWnd', nil);

Wnd:=FindWindowEx(Wnd, HWND(0),'TrayClockWClass', nil);

6. 禁止/隐藏桌面图标
Wnd:=FindWindow('Progman', nil);

Wnd:=FindWindowEx(Wnd, HWND(0), 'ShellDll_DefView', nil);

以上2~6可以直接代入1的Button1Click过程中,以实现相应的功能。并且注意2和5只能隐藏,不能禁止(不信?你可以试试,没有危险的,Hehe)。

7. 在任务栏中隐藏本程序的按钮
Var XWndLong: integer;

begin

XWndLong:= GetWindowLong(Application.Handle,GWL_EXSTYLE);

ShowWindow(Application.Handle,SW_HIDE); //必须先隐藏程序窗口

SetWindowLong(Application.Handle,GWL_EXSTYLE, XWndLong or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW or WS_EX_TOPMOST);

ShowWindow(Application.Handle, SW_SHOW); //设置按钮隐藏后再恢复窗口

end;

恢复按钮显示用SetWindowLong(Application.Handle,GWL_EXSTYLE, XWndLong);

并且仍然需要两个ShowWindow,将Application.Handle改成其它程序的句柄还可以隐藏其它程序。

8. 从关闭程序对话框(按“Ctrl+Alt+Del”时出现)中隐藏本程序:
先在程序中的implementation前加上这么一句

function RegisterServiceProcess(dwProcessID,dwType:integer):integer; stdcall;external 'KERNEL32.DLL'; //调用系统的外部API函数

然后隐藏用RegisterServiceProcess(GetCurrentProcessID, 1);

恢复显示用RegisterServiceProcess(GetCurrentProcessID, 0);

9. 禁止系统键(包括“Ctrl+Alt+Del”、“Alt+Tab”、“Ctrl+Esc”、“Start-button”等等)
procedure TForm1.Button1Click(Sender:TObject);

var pv: integer;

begin

SystemParametersInfo(SPI_SCREENSAVERRUNNING,1, @pv,0);

end

恢复用SystemParametersInfo(SPI_SCREENSAVERRUNNING,0, @pv,0);

10. 禁止屏幕保护
先增加一过程如下:

procedure TForm1.AppMessage(var msg:TMsg; var Handled: boolean);

begin

if(msg.message = wm_SysCommand)and(msg.wParam = sc_ScreenSave)then

begin

Handled:= True; //禁止屏幕保护

MessageBeep(0); //加入自己的处理

MessageDlg('Screen-saver is Disabled!', mtWarning,[mbOk], 0);

end;

end;

然后用:

procedure TForm1.Button1Click(Sender:TObject);

begin

Application.OnMessage := AppMessage; //开启禁止功能

end;

关闭禁止功能用Application.OnMessage:= nil;

注意,程序必须处于活动(前台)状态,因为处于后台时无法截获屏幕保护开始的消息。

11. 禁止关机及退出程序
先增加一过程如下:

procedure TForm1.AppCloseQuery(Sender:TObject; var CanClose: Boolean);begin

CanClose:= False; //禁止关机及退出程序

MessageBeep(0);

MessageDlg('You Can't shutdown Windows or this application!', mtWarning,[mbOk], 0);

end;

然后用:

procedure TForm1.Button1Click(Sender:TObject);

begin

Form1.OnCloseQuery:= AppCloseQuery; //开启禁止功能

end;

关闭禁止功能用Form1.OnCloseQuery:= nil;

注:慎用该方法。
 

----------------------------------------------
-我还是新手
作者:
男 12521052 (混世生) ★☆☆☆☆ -
盒子活跃会员
2004/5/18 15:36:48
16楼: 我靠,,真強
----------------------------------------------
——混世生
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/5/18 20:09:01
17楼: 不要高兴太早 2000下都没这么简单了
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行89.84375毫秒 RSS