【问题标题】:TTouchKeyboard: send keystroke to same program?TTouchKeyboard:将击键发送到同一个程序?
【发布时间】:2011-10-07 17:18:12
【问题描述】:

我看到了你的提示:TTouchKeyboard: send keystroke to other program

如何将密钥发送到同一个 Delphi 应用程序中的另一个表单?

如何使用 TTouchKeyboard 调用表单? (显示,showModal,参数?)

谢谢!

【问题讨论】:

  • 你在说什么技巧?请给个链接。

标签: delphi key send


【解决方案1】:

ShowModal 是个坏主意...您将注意力集中在调用者...

您仍然可以对包含键盘的表单使用相同的提示,以保持禁用...

然后,您可以添加一个带有表单句柄的属性,该句柄应该获得击键。

最后,您破解TTouchKeyboard 以使用您之前设置的句柄将焦点设置到表单...

例如,您的TTouchKeyboard hack 可能是这样的:

type
  TMyKeyboard = class(TTouchKeyboard)
  protected
    procedure WndProc(var Message: TMessage); override;
  end;
type
  TForm1 = class(TForm)

...

  private
    fHandleOfTheTargetForm: HWND;
  public
    property HandleOfTheTargetForm: HWND read fHandleOfTheTargetForm write fHandleOfTheTargetForm;

...

procedure TMyKeyboard.WndProc(var Message: TMessage);
begin
  if (Assigned(Form1)) then
  begin
    if Form1.HandleOfTheTargetForm <> 0 then
    begin
      SetForegroundWindow(HandleOfTheTargetForm);
    end;
  end;
  inherited;
end;

您可以找到一个快速演示项目here

【讨论】:

  • 嗨 Whiler,我尝试了上面的提示,但不起作用。我可以通过邮件向您发送一个小项目,或者您向我发送一个正在运行的项目吗?我的电子邮件 jean@odypark.com.br,非常感谢!
  • @JeanAlysson:我在答案末尾添加了一个链接,其中包含一个演示项目。
  • 好的,谢谢你的帮助,但是有没有如何通过单击按钮调用 KeyboardForm,检索内容并在目标表单中设置并在需要时关闭它?
猜你喜欢
  • 2011-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-20
  • 1970-01-01
  • 1970-01-01
  • 2011-07-19
  • 2011-01-07
相关资源
最近更新 更多