500分求救!! 我有个程序可以隐藏窗体上所有可见的东西,当然也能够完成你要的任务了,我可以发给你,在2000下可以实现,留下你的mail,我明天发给你,准备接你的500分了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //屏蔽Ctrl+Esc、Alt+Tab、和Alt+Escunit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormKeyPress(Sender: TObject; var Key: Char); private { Private declarations } public { Public declarations } end; {按键消息的结构,Delphi中也没有,自己定义吧。这也就我为什么说用C写 这样的程序更好的原因之一。还必须注意的是这个结构在Windows NT 4 sp3以上系统 中才能使用} tagKBDLLHOOKSTRUCT = packed record vkCode: DWORD; //虚拟键值 scanCode: DWORD; //扫描码值(没有用过,我也不懂^_^) {一些扩展标志,这个值比较麻烦,MSDN上说得也不太明白,但是 根据这个程序,这个标志值的第六位数(二进制)为1时ALT键按下为0相反。} flags: DWORD; time: DWORD; //消息时间戳 dwExtraInfo: DWORD; //和消息相关的扩展信息 end; KBDLLHOOKSTRUCT = tagKBDLLHOOKSTRUCT; PKBDLLHOOKSTRUCT = ^KBDLLHOOKSTRUCT; //这个是低级键盘钩子的索引值,Delphi中没有,必须自己定义const WH_KEYBOARD_LL = 13; //定义一个常量好和上面哪个结构中的flags比较而得出ALT键是否按下const LLKHF_ALTDOWN = $20;var Form1: TForm1; hhkLowLevelKybd: HHOOK;implementation{功能:低级键盘钩子的回调函数,在里面过滤消息参数:nCode 是Hook的标志WParam 表示消息的类型LParam 是一个指向我们在上面定义的哪个结构KBDLLHOOKSTRUCT的指针返回值:如果不是0的话windows就把这个消息丢掉,程序就不会再收到这个消息了。}function LowLevelKeyboardProc(nCode: Integer; WParam: WPARAM; LParam: LPARAM): LRESULT; stdcall;var fEatKeystroke: BOOL; p: PKBDLLHOOKSTRUCT;begin Result := 0; fEatKeystroke := FALSE; p := PKBDLLHOOKSTRUCT(lParam); //nCode值为HC_ACTION时表示WParam和LParam参数包涵了按键消息 if (nCode = HC_ACTION) then begin //拦截按键消息并测试是否是Ctrl+Esc、Alt+Tab、和Alt+Esc功能键。 { case wParam of WM_KEYDOWN, WM_SYSKEYDOWN, WM_KEYUP, WM_SYSKEYUP:} fEatKeystroke := ((p.vkCode = VK_TAB) and ((p.flags and LLKHF_ALTDOWN) <> 0)) or ((p.vkCode = VK_ESCAPE) and ((p.flags and LLKHF_ALTDOWN) <> 0)) or ((GetKeyState(VK_CONTROL) and $8000) <> 0);// end; end; showmessage(inttostr(p.vkcode)); showmessage(inttostr(p.flags)); if fEatKeystroke = True then Result := 1; if nCode <> 0 then Result := CallNextHookEx(0, nCode, wParam, lParam);end;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);begin //设置低级键盘钩子 if hhkLowLevelKybd = 0 then begin hhkLowLevelKybd := SetWindowsHookExW(WH_KEYBOARD_LL, LowLevelKeyboardProc, Hinstance, 0); if hhkLowLevelKybd <> 0 then MessageBox(Handle, '低级键盘钩子设置成功!', '提示', MB_OK) else MessageBox(Handle, '低级键盘钩子设置失败!', '提示', MB_OK); end else MessageBox(Handle, '低级键盘钩子已设置!', '提示', MB_OK);end;procedure TForm1.Button2Click(Sender: TObject);begin //卸载低级键盘钩子 if hhkLowLevelKybd <> 0 then if UnhookWindowsHookEx(hhkLowLevelKybd) <> False then begin MessageBox(Handle, '低级键盘钩子卸载成功!', '提示', MB_OK); hhkLowLevelKybd := 0; end else MessageBox(Handle, '低级键盘钩子卸载失败!', '提示', MB_OK) else MessageBox(Handle, '没有发现低级键盘钩子!', '提示', MB_OK);end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);begin //在Form关闭的时候检测,如果没有卸载钩子就卸载之 if hhkLowLevelKybd <> 0 then UnhookWindowsHookEx(hhkLowLevelKybd);end;procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);begin showmessage(Key);end;end. 看一下下~~~~~~~u2m(随波逐流,漂泊一生)可不可以给我你的代码呀?[email protected] 我的email:[email protected]谢谢各位!! 求助RemObjects.三层演示代码的提示出错问题 在线等待:请帮忙. 关于ping问题! 求高人指点 我现在能在Delphi执行之前把分辨率改成800*600但是调整完屏幕的刷新率只是60赫兹有那位能帮一帮忙,深表感谢 关于保存方面的问题,解决后立即送分!!!决不食言! 请教工控高手 各位朋友,请教一下有关存储过程记录号的一个小问题,一定结帐。 我愿意解答串口问题? 请教一个问题:如何编写一个位于最最上层的窗口,像oicq那样(我发现它能够位于最最上层) SQL 触发器 哪里有delphi6的补丁?谢谢!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
{按键消息的结构,Delphi中也没有,自己定义吧。这也就我为什么说用C写
这样的程序更好的原因之一。还必须注意的是这个结构在Windows NT 4 sp3以上系统
中才能使用}
tagKBDLLHOOKSTRUCT = packed record
vkCode: DWORD; //虚拟键值
scanCode: DWORD; //扫描码值(没有用过,我也不懂^_^)
{一些扩展标志,这个值比较麻烦,MSDN上说得也不太明白,但是
根据这个程序,这个标志值的第六位数(二进制)为1时ALT键按下为0相反。}
flags: DWORD;
time: DWORD; //消息时间戳
dwExtraInfo: DWORD; //和消息相关的扩展信息
end;
KBDLLHOOKSTRUCT = tagKBDLLHOOKSTRUCT;
PKBDLLHOOKSTRUCT = ^KBDLLHOOKSTRUCT; //这个是低级键盘钩子的索引值,Delphi中没有,必须自己定义
const
WH_KEYBOARD_LL = 13;
//定义一个常量好和上面哪个结构中的flags比较而得出ALT键是否按下
const
LLKHF_ALTDOWN = $20;var
Form1: TForm1;
hhkLowLevelKybd: HHOOK;
implementation
{
功能:低级键盘钩子的回调函数,在里面过滤消息
参数:nCode 是Hook的标志
WParam 表示消息的类型
LParam 是一个指向我们在上面定义的哪个结构KBDLLHOOKSTRUCT的指针
返回值:如果不是0的话windows就把这个消息丢掉,程序就不会再收到这个消息了。
}function LowLevelKeyboardProc(nCode: Integer;
WParam: WPARAM; LParam: LPARAM): LRESULT; stdcall;
var
fEatKeystroke: BOOL;
p: PKBDLLHOOKSTRUCT;
begin
Result := 0;
fEatKeystroke := FALSE;
p := PKBDLLHOOKSTRUCT(lParam);
//nCode值为HC_ACTION时表示WParam和LParam参数包涵了按键消息
if (nCode = HC_ACTION) then
begin
//拦截按键消息并测试是否是Ctrl+Esc、Alt+Tab、和Alt+Esc功能键。
{ case wParam of
WM_KEYDOWN,
WM_SYSKEYDOWN,
WM_KEYUP,
WM_SYSKEYUP:}
fEatKeystroke :=
((p.vkCode = VK_TAB) and ((p.flags and LLKHF_ALTDOWN) <> 0)) or
((p.vkCode = VK_ESCAPE) and ((p.flags and LLKHF_ALTDOWN) <> 0)) or
((GetKeyState(VK_CONTROL) and $8000) <> 0);
// end;
end;
showmessage(inttostr(p.vkcode));
showmessage(inttostr(p.flags)); if fEatKeystroke = True then
Result := 1;
if nCode <> 0 then
Result := CallNextHookEx(0, nCode, wParam, lParam);end;
{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
//设置低级键盘钩子
if hhkLowLevelKybd = 0 then
begin
hhkLowLevelKybd := SetWindowsHookExW(WH_KEYBOARD_LL,
LowLevelKeyboardProc, Hinstance, 0);
if hhkLowLevelKybd <> 0 then
MessageBox(Handle, '低级键盘钩子设置成功!', '提示', MB_OK)
else
MessageBox(Handle, '低级键盘钩子设置失败!', '提示', MB_OK);
end
else
MessageBox(Handle, '低级键盘钩子已设置!', '提示', MB_OK);
end;procedure TForm1.Button2Click(Sender: TObject);
begin
//卸载低级键盘钩子
if hhkLowLevelKybd <> 0 then
if UnhookWindowsHookEx(hhkLowLevelKybd) <> False then
begin
MessageBox(Handle, '低级键盘钩子卸载成功!', '提示', MB_OK);
hhkLowLevelKybd := 0;
end
else
MessageBox(Handle, '低级键盘钩子卸载失败!', '提示', MB_OK)
else
MessageBox(Handle, '没有发现低级键盘钩子!', '提示', MB_OK);
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//在Form关闭的时候检测,如果没有卸载钩子就卸载之
if hhkLowLevelKybd <> 0 then
UnhookWindowsHookEx(hhkLowLevelKybd);
end;procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
showmessage(Key);
end;end.
[email protected]
谢谢各位!!