Macos 使用Firemonkey 2(FMX2)以跨平台方式设置鼠标位置

Macos 使用Firemonkey 2(FMX2)以跨平台方式设置鼠标位置,macos,delphi,firemonkey,Macos,Delphi,Firemonkey,Firemonkey 2(FMX2)中有一个接口 IFMXMouseService=接口(IInterface) [{2370205F-CF27-4DF6-9B1F-5EBC27271D5A}] 该接口只有一个GetMousePos函数。 但是我如何以跨平台的方式设置鼠标位置? 有什么想法吗 我想到的最好的办法是进行有条件编译,直到FMX中存在这种可能性——但我不知道如何通过Delphi为MACOSX设置鼠标位置。 我将非常感谢您的帮助。这是您需要的程序。您必须将macapi.coregraph

Firemonkey 2(FMX2)中有一个接口

IFMXMouseService=接口(IInterface) [{2370205F-CF27-4DF6-9B1F-5EBC27271D5A}]

该接口只有一个GetMousePos函数。 但是我如何以跨平台的方式设置鼠标位置? 有什么想法吗

我想到的最好的办法是进行有条件编译,直到FMX中存在这种可能性——但我不知道如何通过Delphi为MACOSX设置鼠标位置。
我将非常感谢您的帮助。

这是您需要的程序。您必须将macapi.coregraphics和macapi.cocoatypes添加到uses子句中

procedure setmousepos(x,y:single);

var aNSPoint:NSPoint;

begin
  aNSPoint.x:=x;
  aNSPoint.y:=y;
  CGWarpMouseCursorPosition(aNSPoint);
end;
当然,您可以通过一个TPointF来代替X,Y,但仍然需要分别设置NSPoint X和Y,因为NSPoint与TPointF不同

问候

戴夫·彼得斯
DP软件

www.dpsoftware.com/firemonkey

我一辈子都搞不懂你为什么要设置鼠标的位置。如果你试图点击另一个应用程序中的某个控件,有几种方法可以做到这一点,而不会影响用户的鼠标位置。(例如查找/获取控件的句柄并向其发送windows消息。)嗨,Marjan。GUI自动化不是我想设置鼠标位置的原因。嘿,甚至winapi都有这样的功能,所以我显然不是唯一想要它的人。我想在控件以动画方式关闭和打开时调整鼠标位置。例如:如果我将鼠标移出控制1,其宽度将减小,所有其他控件将向左移动。如果我无法通过宽度增量将鼠标位置设置为左侧,则用户必须始终手动将鼠标移回左侧。所以我真的很想在win和mac上设置鼠标位置。啊,好吧,我从没想过那个场景。一定是因为我倾向于避免动画(和声音)。可能是老式的,但嘿,我喜欢我的东西呆在一个地方:-)我明白你的意思。我哥哥告诉我的第一件事也是一样的。事实上,这是作为一种选择必须具备的特性之一。我的第一印象是,它可能会在一开始就打扰用户。但特别是在分辨率较小的屏幕上,它提供了巨大的好处。嗨-我接受这个答案,因为它用MAC原生方式解决了问题-但在FMX2中实现功能的正确方法是使用IFMX服务。有一个setcursor函数。这可能是因为不能通过鼠标设备设置光标。@RolandKossow您做了所有艰苦的工作来引用接口名和查找函数名,但完全忽略了在那里使用的类型是TCursor这一事实:它获取并设置。。。鼠标光标。不是这个职位。