在VB.Net中,您可以使用“DirectCast”将mousesclicks或其他事件发送到其他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)
答案 0 :(得分:3)
您不需要演员来调用SendMessage:
SendMessage(WindowHandle, WM_LBUTTONDOWN, 0, MakeLong(X, Y));
SendMessage(WindowHandle, WM_LBUTTONUP, 0, MakeLong(X, Y));
对于它的价值,您的VB.net代码错误地将SendMessage的第二个参数声明为IntPtr。它应该是无符号的32位整数。
如果您确实需要在Delphi中实现强制转换,从一种类型到另一种类型,您有两种选择。未经检查的演员,
X := SomeType(Y);
将Y转换为SomeType类型而不进行运行时检查。或者是经过检验的演员,
X := Y as SomeClass;
会引发异常,Y不是SomeClass。
答案 1 :(得分:2)
相当于DirectCast
的Delphi将是一个类型转换。
例如,向类Form
投射引用的参考:
VB: DirectCast(myRef, Form)
Deplhi: Form(myRef)