截取esc信息問題 急!!!!!

ysgs129 2009-02-24 05:34:40
現在做的這個大程序,不管在哪里一按esc,就回到程序的初始狀態,現在希望能在一個form上,按esc,僅關閉此form,請問怎么實現啊?
...全文
59 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
willflyz 2009-02-26
  • 打赏
  • 举报
回复
写了钩子,测试通过,请参考

var
Form1: TForm1;
HookHandle:HHook;

implementation

{$R *.dfm}

function TestHookProc(Code:Integer;WParam:Longint;Msg:Longint):Longint;stdcall;
begin
if PMsg(Msg)^.Message = WM_KEYDOWN then
if PMsg(Msg)^.wParam = VK_ESCAPE then
begin
Showmessage('ESC Key Down!');
Form1.Close;
end;
Result:=CallNextHookEx(HookHandle,Code,WParam,Longint(@msg));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
HookHandle:=SetWindowsHookEx(WH_GETMESSAGE,TestHookProc,0,GetCurrentThreadID);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
UnHookWindowsHookEx(HookHandle);
end;

end.
gyk120 2009-02-25
  • 打赏
  • 举报
回复
比较麻烦的一个办法:在Form的窗体代码上做一个键盘钩子,钩住Esc键的ASCII码,如果相符就向自己的窗体发送WM_Close消息
bdmh 2009-02-25
  • 打赏
  • 举报
回复
其他方法,我没试过,但我想应该可以,就是重装windows消息函数,截获esc消息
bdmh 2009-02-25
  • 打赏
  • 举报
回复
简单点的话,在窗体放置一按钮,设置他为default,返回值为cancel
ysgs129 2009-02-25
  • 打赏
  • 举报
回复
怎么沒人回帖啊,自己頂下吧

5,390

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧