请问如何才能屏蔽键盘上“windows”键?(100分)

  • 主题发起人 主题发起人 sakura12
  • 开始时间 开始时间
S

sakura12

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何才能屏蔽键盘上“windows”键?
 
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, ……)<br>不过这样的话,Control-Alt-Del, Alt-Tab, Control-Esc可都不能用了。
 
做一个钩子函数,将WIN键事件消息拦截下来,处理(当然是没有用的处理了)掉,返回0<br>这样系统将得不到这个消息,然后将你的程序窗口的showmainform设置为false,在任务栏<br>也要隐藏,最后注册为系统进程,这样别人看不到你程序的存在,但却在另外方面使WIN键<br>失去了作用,和屏蔽的作用是一样的,而且其他的键作用依然!不知道你是不是要这种效果
 
把它取了,哈哈哈<br>其实可以这样:<br>tempint:integer;<br>begin<br>SystemParametersInfo(SPI_SCREENSAVERRUNNING,1,@tempint,0);<br>end;
 
上面的人说的都十分的不错,还有一个更好的方法就是通过物理手段解决。<br>把那个键取下来!!!
 
关注。。。<br>我正好也要解决这个问题。<br>在win98下可以用<br>SystemParametersInfo(SPI_SCREENSAVERRUNNING,1,@tempint,0);<br>但是在win2000下没作用,至于用钩子函数解决,我还没有试过
 
这段程序最合适了<br><br>function LowLevelKeyboardProc(nCode:integer;WParam:WPARAM;LParam:LPARAM):LRESULT;stdcall;<br>&nbsp; var<br>&nbsp; &nbsp; fEatKeystroke:BOOL;<br>&nbsp; &nbsp; p:PKBDLLHOOKSTRUCT;<br>&nbsp; &nbsp; begin<br>&nbsp; &nbsp; result:=0;<br>&nbsp; &nbsp; fEatKeystroke := false;<br>&nbsp; &nbsp; p:=PKBDLLHOOKSTRUCT(lparam);<br>&nbsp; &nbsp; if (ncode=HC_ACTION) then<br>&nbsp; &nbsp; begin<br>&nbsp; &nbsp; case wparam of<br>&nbsp; &nbsp; WM_KEYDOWN,<br>&nbsp; &nbsp; WM_SYSKEYDOWN,<br>&nbsp; &nbsp; WM_KEYUP,<br>&nbsp; &nbsp; WM_SYSKEYUP:<br>&nbsp; &nbsp; featkeystroke :=(p.vkcode = VK_Lwin) or (p.vkcode = VK_Rwin)or (p.vkcode = VK_apps);<br>&nbsp; &nbsp; end;<br>&nbsp; &nbsp; end;<br>&nbsp; &nbsp; if featkeystroke = true then<br>&nbsp; &nbsp; result:=1;<br>&nbsp; &nbsp; if ncode &lt;&gt; 0 then<br>&nbsp; &nbsp; result := callnexthookex(0,ncode,wparam,lparam);<br>&nbsp; &nbsp; end;<br><br>procedure form1.lock;<br>begin<br>&nbsp; hhklowlevelkybd := setwindowshookexw(wh_keyboard_ll,LowlevelKeyboardproc,hinstance,0);<br>end;<br><br>锁住左右win键和application键,win98/nt/2000/xp都可以
 
扣下来~~~~~~~~~~
 
to 程云<br>&nbsp; 你那需要uses什么单元???
 
后退
顶部