delphi 在触摸键盘上输入密码,其他人看不到

p1tboqfb  于 2023-10-18  发布在  其他
关注(0)|答案(1)|浏览(88)

我有个安全问题。
在 Delphi 中,我使用的是Vcl.Touch.Keyboard.TTouchKeyboard,因为机器上没有真实的键盘。这台机器周围有4台显示器,它们都显示同一个屏幕。
在输入普通文本时没有问题,但是一旦用户必须在其中一个屏幕上输入密码,其他人就可以很容易地看到他正在输入的内容并检索密码!

Delphi 控件TTouchKeyboard显然没有提供任何隐藏鼠标光标以及不显示当前单击按钮的可能性。
如何禁用TTouchKeyboard的OnMouseDown事件而不更改此控件的源?还是有更好的解决办法?
另一种可能性是每次点击光学激活一个以上的字母以混淆“密码监视器”。但如何才能做到这一点呢?

eaf3rand

eaf3rand1#

TTouchKeyboard允许覆盖用于按钮的类。您可以从TKeyboardButton派生,覆盖Paint方法,当按钮StatedsPressed时跳过inherited调用。

type
  TMyKeyboardButton = class(TKeyboardButton)
  public
    procedure Paint(Canvas: TCustomCanvas = nil); override;
  end;

procedure TMyKeyboardButton.Paint(Canvas: TCustomCanvas);
begin
  if State <> TDrawState.dsPressed then
    inherited;
end;

要使用该类,请将其分配给keyboards DefaultButtonClass属性。

TouchKeyboard1.DefaultButtonClass := TMyKeyboardButton;

您可能需要切换其Layout属性来触发按钮的重新构建。

相关问题