请问如何在 NT 或者 WINDOWS 2000 里屏蔽键盘上的 "开始" 键?(200分)

  • 主题发起人 主题发起人 杨先彬
  • 开始时间 开始时间

杨先彬

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠好!
小弟在 windows 2000 下编程的时候遇上了点麻烦,恳请各位大侠不吝指教:
下面的程序主要是隐藏 windows 的任务条,可是按键盘上的 “开始” 键,任务条中的
“开始”菜单还是会弹出来,请教如何屏蔽键盘上的 "开始" 键?

procedure HideR;
var
wndHandle:THandle;
wndClass:array[0..50] of char;
begin
StrPcopy(@wndClass[0],'Shell_TrayWnd');
wndHandle:=FindWindow(@wndClass[0],nil);
ShowWindow(wndHandle,SW_HIDE);
end;
 
;可以通过截至消息屏蔽了系统键
下面是一个例子:
在private加入
procedure wmsyscommand(var msg:twmsyscommand);message wm_syscommand;
下面是过程代码:
procedure TForm1.wmsyscommand(var msg: twmsyscommand);
begin
if msg.CmdType<>SC_tasklist then
inherited;
end;
我来解释一下,当系统键按下就会发出一个wm_syscommand消息,如果msg.cmdtype等于
sc_tasklist表示启动开始菜单.上述代码是当时msg.mdtype=sctasklist
就不继承改消息的处理事件.
 
没那么简单吧
你拦的消息是对于你的程序来说的
 
;不知杨先彬屏蔽启动菜单有何目的,如果是想加一个桌面锁,那我写的那段代码
就行的通,只要做一个窗口跟桌面一摸一样且窗口充斥整个屏幕,那么我写的这个程序
就一定能截获这个消息.如果你需要源代码话.我这里有.
 
嘿嘿,
将键盘上的有关线剪了,就可以屏蔽了
 
把注册表中的KEY(我忘了)改为0
 
to lenbons:
截获SC_TACKLIST的方法好象不行啊!
 
TO leebons:
小弟正有此意搞个桌面锁,leebons 兄如果方便,请 E-MAIL 个例子给我吧。谢谢
小弟的E-MAIL:fddsa@netease.com
 
能行吗?Windows 2000 里面的 DirectX 程序即使要求独占系统,你按一下 Start
键开始菜单都会蹦出来。
 
请继续或结束
 
多人接受答案了。
 
; hwnd1:=findwindow('shell_traywnd',nil);
hwnd2:=getwindow(hwnd1,gw_child);
getclassname(hwnd2,pchar(buttonname),255);
showwindow(hwnd2,sw_hide);
这几行好象有效的,试一下吧
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
689
import
I
后退
顶部