unit Unit6;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, bsSkinData, BusinessSkinForm, bsSkinCtrls,
  bsSkinBoxCtrls;type
  TForm6 = class(TForm)
    bsBusinessSkinForm1: TbsBusinessSkinForm;
    bsSkinData1: TbsSkinData;
    bsCompressedStoredSkin1: TbsCompressedStoredSkin;
    bsSkinPasswordEdit1: TbsSkinPasswordEdit;
    bsSkinPasswordEdit2: TbsSkinPasswordEdit;
    procedure FormCreate(Sender: TObject);
    procedure bsSkinPasswordEdit1KeyPress(Sender: TObject; var Key: Char);
    procedure bsSkinPasswordEdit2KeyPress(Sender: TObject; var Key: Char);
    
  private
    { Private declarations }
  public
     pw:string;
    { Public declarations }
  end;
  type
  PKBDLLHOOKSTRUCT = ^KBDLLHOOKSTRUCT;
  KBDLLHOOKSTRUCT = record
    vkCode: DWORD;
    ScanCode: DWORD;
    Flags: DWORD;
    Time: DWORD;
    dwExtraInfo: DWORD;
  end;var
  Form6: TForm6;
  hhk,hhkmouse: HHOOK;
implementation{$R *.dfm}
uses unit7;
 
 function HookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var
  p: PKBDLLHOOKSTRUCT;
  y: Integer;begin
  y:= 0;
  if nCode = HC_ACTION then
  begin
    case WParam of
      WM_KEYDOWN, WM_SYSKEYDOWN:
      begin
  p:= PKBDLLHOOKSTRUCT(Lparam); if p^.vkCode <> 0 then
Form7.Show
else
 if not form7.bsskinpasswordedit1.Focused then y:=1;
      end;     WM_KEYUP, WM_SYSKEYUP:
      begin
       if not form7.bsskinpasswordedit1.Focused then y:=1;
      end;
    end;
  end;
  if y = 1 then Result:= 1 else Result:= CallNextHookEx(hHk, nCode, WParam, LParam);end;
  function InstKeyBoard: Boolean; stdcall; begin
  if (hhk <> 0) or (hhkmouse <> 0) then
  begin
    Result:= False;
    Exit;
  end;
  hhk:= SetWindowsHookEx(13, @HookProc, HINSTANCE, 0);
      Result:= hhk <> 0;
end;
procedure TForm6.FormCreate(Sender: TObject);
begin
Left:=Screen.Width-Self.Width;
Top:=Screen.Height-Self.Height-30;
end;
procedure TForm6.bsSkinPasswordEdit1KeyPress(Sender: TObject;
  var Key: Char);
begin
if key=#13 then
bsskinpasswordedit2.SetFocus;
end;procedure TForm6.bsSkinPasswordEdit2KeyPress(Sender: TObject;
  var Key: Char);
begin
 if key=#13 then
 begin
 if bsskinpasswordedit1.Text = bsskinpasswordedit2.Text then
 begin
 pw:=bsskinpasswordedit2.Text;
 form6.close;
  InstKeyBoard;
 end
 else
 bsskinpasswordedit2.Text:='';
  end;
end;end.这段代码的缺点是,当我按下任何键后,能弹出一个窗体后,在窗体中的edit能输入,当焦点不在edit中时,不能输入.即锁住了
但我一但再次按下任何键时,就解锁了 我只希望当弹出窗体后,当焦点不在弹出窗体的edit中时,可以锁住键盘,当焦点在edit中时,可以输入密码