Delphi-模拟(多)触摸输入

Delphi-模拟(多)触摸输入,delphi,touch,multi-touch,Delphi,Touch,Multi Touch,在delphi应用程序内部是否有模拟触摸输入的实际方法,如果有,是否也可以模拟多点触摸 问题示例:某些应用程序只接受某些操作的触摸输入 理想的解决方案示例:使用键盘键模拟触摸输入。能够使用“A”键模拟触摸坐标(x,y),使用“B”键模拟触摸坐标(x+n,y+m),并且能够一个接一个或同时按下两个键,这可能非常重要/非常理想。(此处3个键的物理限制应忽略)。我不知道多点触摸,但您可以模拟鼠标单击(单点触摸)。不适用于TWebBrowser、TMapView和TListView等内容。理论上,您可以

在delphi应用程序内部是否有模拟触摸输入的实际方法,如果有,是否也可以模拟多点触摸

问题示例:某些应用程序只接受某些操作的触摸输入


理想的解决方案示例:使用键盘键模拟触摸输入。能够使用“A”键模拟触摸坐标(x,y),使用“B”键模拟触摸坐标(x+n,y+m),并且能够一个接一个或同时按下两个键,这可能非常重要/非常理想。(此处3个键的物理限制应忽略)。

我不知道多点触摸,但您可以模拟鼠标单击(单点触摸)。不适用于TWebBrowser、TMapView和TListView等内容。理论上,您可以修改Firemonkey从硬件获取其多点触控数据的源代码,并在该点发送您自己的数据,但这超出了本答案的范围

function TForm1.FindControlAtPoint(aParent: TControl; aPos: TPointF): TControl;
var
  I: Integer;
  Control, ChildControl: TControl;
  S: String;
begin
  Result := nil;

  // Check all the child controls and find the one at the coordinates
  for I := aParent.Controls.Count – 1 downto 0 do
  begin
    Control := aParent.Controls[I];
    S := Control.ClassName;
    if Control.PointInObject(aPos.X, aPos.Y) then
    begin
      ChildControl := FindControlAtPoint(Control, aPos);
      if Assigned(ChildControl) and ChildControl.HitTest then
        Exit(ChildControl)
      else if Control.HitTest then
        Exit(Control);
    end;
  end;
end;

有一个演示项目可用。

感谢您的建议答案。投票,但是,我会等待,如果有人有更好的答案,关于多点触摸特别是接受…我不知道你问什么平台。如果我们知道这一点,我们可能会有更多的机会提供帮助@DavidHeffernan所说的平台你指的是Delphi的版本吗?不。虽然那也会有帮助。我们不知道你的程序运行在什么系统上。或者你的程序使用什么框架。我不是说具体的应用程序,而是在这里寻找一个相当通用的解决方案…Delphi现在可以针对windows、osx、iOS和Android。它在Windows上有VCL,在所有其他平台上有FMX。这个问题仍然没有提供我在这方面要求的任何信息。也许你所需要的只是发送WM_手势信息。很难知道。