请问有没有方法屏蔽键盘的输入?(50分)

  • 主题发起人 主题发起人 Iveny
  • 开始时间 开始时间
I

Iveny

Unregistered / Unconfirmed
GUEST, unregistred user!
就是说,想把键盘的所有键入都屏蔽掉,可以吗?
 
function BlockInput (fBlockInput : boolean) : DWord
stdcall
external 'user32.DLL'


{block input/ blockieren}

procedure TForm1.Button1Click(Sender: TObject)

begin
BlockInput(true)

end


{unblock input / Blockierung aufheben}

procedure TForm1.Button2Click(Sender: TObject)

begin
BlockInput(false)

end


Note: Requires Windows 98/2000 or later.

You can unblock input by pressing

CTRL+ALT+DEL
别人的东西,你看看有用吗?
 
onkeydown

key:=0
 
同意南宫吹云的说法
 
首先,把你的窗体的KeyPreview设置成true,这点很重要.
然后在窗体的OnKeyPress
Key:=char(0);
 
可是,这样我用CTRL+ALT+SHIFT,一样可以关闭你的程序的啊?!
 
老兄啊!你要说清楚啊?
CTRL+ALT+SHIFT是系统级的了!
要用API!我以前程序里有,现在不知找不长得到1
 
TO Iveny:
onkeypress 事件:
key:=#0;
 
我指的是关闭系统热键的方法,
例如:CTRL+ALT+SHIFT、WIN+ESC、WIN+R、CTRL+ESC等,请问有什么方法?紧急!
 
将Form的FormStyle属性设为fsStayOnTop
将Form的WindowState属性设为wsMaximized
在Form的OnCreate事件处理过程中为Windows发送一个屏幕保护程序正在运行的消息
当程序结束时清除屏幕保护程序运行标志。
示例代码:

procedure TForm1.FormCreate(Sender: TObject);
var
temp: Integer;
begin
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, @temp, 0);
end;

procedure Form1.OnClose(Sender: TObject
var Action: TCloseAction);

var
temp: Integer;
begin
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, @temp, 0);
end;
 
其他键都暂时解决了,剩下ALT+F4,请问怎样屏蔽ALT+F4?
 
需要捕捉WM_SYSCOMMAND消息,然后作出判断。
procedure WMSysCommand(var Msg: TMessage);
begin
if Msg.wParam <> SC_CLOSE then
inherited;
end;

 
TO:VINE,你的代码运行时出错:
[Error] Unit1.pas(26): This form of method call only allowed in methods of derived types


请问能否给个可用的例子?
 
该方法的窗体只允许在导出类型的方法中???

不会的呵
你是怎么调试的?
 
请给个完整屏蔽系统ALT+F4的例子好吗?
 
这样屏蔽ALT+F4:
在Form 的KeyPress 中添加:
if (ssAlt in Shift) and (key = VK_F4) then key := 0;
 
win2k的系统健不行的
 
对四库全书提出的,稍做修改即可。
先把你的窗体的KeyPreview设置成true;然后在该窗体的onKeyDown事件写
if (ssAlt in Shift) and (key = VK_F4) then key := 0;
 
后退
顶部