在 VB.Net 中,您可以使用“DirectCast”将鼠标单击或其他事件发送到其他 DirectX 应用程序。
Delphi 中有类似的东西吗?或者有其他有用的方法吗?
Public Sub ClickToL(ByVal WindowHandle As IntPtr, ByVal X As Integer, ByVal Y As Integer)
Dim num As Integer = Me.MakeLong(X, Y)
Form1.SendMessage(WindowHandle, DirectCast(&H201, IntPtr), IntPtr.Zero, DirectCast(num, IntPtr))
Form1.SendMessage(WindowHandle, DirectCast(&H202, IntPtr), IntPtr.Zero, DirectCast(num, IntPtr))
End Sub
此示例将鼠标单击发送到最小化的应用程序 (DirectX)
最佳答案
您不需要强制转换来调用 SendMessage:
SendMessage(WindowHandle, WM_LBUTTONDOWN, 0, MakeLong(X, Y));
SendMessage(WindowHandle, WM_LBUTTONUP, 0, MakeLong(X, Y));
无论如何,您的 VB.net 代码错误地将 SendMessage 的第二个参数声明为 IntPtr。它应该是一个无符号的 32 位整数。
如果您确实需要在 Delphi 中实现强制转换,从一种类型到另一种类型您有两种选择。未经检查的 Actor 阵容,
X := SomeType(Y);
将 Y 转换为 SomeType 类型,无需运行时检查。或者检查类型转换,
X := Y as SomeClass;
如果 Y 不是 SomeClass,则会引发异常。
关于vb.net - Delphi相当于VB的 "DirectCast"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12502654/