znxia加个键盘钩子,就可以实现了附个我以前做的键盘钩子的程序让你参考一下{问题:我想让我的程序在运行时暂停下来,按任意键继续。如何做?项目:此程序就是为了这个目的而写的作者:阿永说明:由于要考虑到程序在任何情况下都能正常工作,所以采用钩 子技术来实现.}var Form1: TForm1; HookID: HHOOK; //记录钩子的ID号,以便能够释放钩子 PassKey: Boolean; //用于记录按键状态const WH_KEYBOARD_LL = 13;implementation{$R *.dfm}function LowLevelKeyboardProc(code: Integer; wparam: wparam; lparam: lparam): LRESULT stdcall;//钩子回调函数,具体资料参阅CSDNbegin Result := 1; //为了使按键不影响到其它控件,所以将返回值设为1,不让消息下传 if (code = 0) and (GetActiveWindow() = Form1.Handle) then PassKey := True; //发生按键时改变状态,修改此处可以 if GetActiveWindow() <> Form1.Handle then Result := CallNextHookEx(0, code, wparam, lparam); //当前窗口不活动时,将消息下传给其它程序。end;procedure WaiteKey();begin HookID := SetWindowsHookExW(WH_KEYBOARD_LL, @LowLevelKeyboardProc, Hinstance, 0); //创建钩子 while not PassKey do Application.HandleMessage//等待按键 PassKey := False; if HookID <> 0 then UnhookWindowsHookEx(HookID); //释放钩子end;procedure TForm1.Button1Click(Sender: TObject);var i: Integer;begin Memo1.Clear; Memo1.SetFocus; //为了测试所述功能,故将光标定在Memo控件上 for i := 0 to 1000 do begin Memo1.Lines.Add(Format('第%d行', )); if i = 500 then begin Memo1.Lines.Add('按任意键继续'); WaiteKey(); end end; ShowMessage('OK');end;