【发布时间】:2011-10-07 17:18:12
【问题描述】:
我看到了你的提示:TTouchKeyboard: send keystroke to other program
如何将密钥发送到同一个 Delphi 应用程序中的另一个表单?
如何使用 TTouchKeyboard 调用表单? (显示,showModal,参数?)
谢谢!
【问题讨论】:
-
你在说什么技巧?请给个链接。
我看到了你的提示:TTouchKeyboard: send keystroke to other program
如何将密钥发送到同一个 Delphi 应用程序中的另一个表单?
如何使用 TTouchKeyboard 调用表单? (显示,showModal,参数?)
谢谢!
【问题讨论】:
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。
【讨论】: