我看到了你的提示:TTouchKeyboard: send keystroke to other program
如何将密钥发送到同一个Delphi应用程序中的其他表单?
如何使用TTouchKeyboard调用表单? (显示,showModal,参数?)
谢谢!
答案 0 :(得分:1)
ShowModal是一个坏主意......你关注来电者......
您仍然可以使用与包含键盘的表单相同的提示,以便保持禁用...
然后,您可以添加一个属性,该属性具有应该获得击键的表单句柄。
最后,您破解TTouchKeyboard
将焦点设置为具有您之前设置的句柄的表单...
例如,您的TTouchKeyboard
黑客可能是这样的:
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。