在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)
发布于 2012-09-20 05:12:11
调用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,则会引发异常。
发布于 2012-09-20 05:01:39
DirectCast在Delphi中的等价物是类型转换。
例如,将引用变量强制转换为类Form
VB: DirectCast(myRef, Form)
Deplhi: Form(myRef)https://stackoverflow.com/questions/12502654
复制相似问题