我的工具(www.ljtd.net - 没有广告,就像有人想测试问题一样)我的英雄联盟有问题。让我们说除了一点点错误之外它都能正常工作。对于那些不了解比赛的人。这是一个像DotA一样的MOBA。
我现在的问题是我的工具是一个叠加层并显示游戏的其他信息。所以当点击这个工具时,点击不应该影响游戏行为(你应该留在游戏中,好像什么也没发生)。这就是我使用 SetForegroundWindow 的原因。游戏正在重新获得焦点,而且游戏中的小地图也在推动。但有时单击我的工具有另一种不寻常的行为。游戏仍然成为焦点。但是在小地图上行驶现在就好像你实际上按住那里的鼠标左键一样。
所以我的问题是为什么它有时与小地图一起正常工作,而50%的情况则没有。许多其他用户也有同样的问题。所以我认为这不是游戏或Windows配置。有没有办法更好地关注像英雄联盟这样的游戏?以下是 SetForegroundWindow 的一些代码:
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
Public Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hwnd As IntPtr) As Int32
Public tHandle As Long = FindWindow(vbNullString, "League of Legends (TM) Client")
Public Sub SetForeground()
SetForegroundWindow(tHandle)
End Sub
这个小片段实际上是游戏的焦点。如果您对该项目感兴趣或想进一步了解。看看这里:Complete Source code
感谢您提出的任何想法=)
只是为了表明我已经寻找其他方法了。这是一个带有相同结果的。总是小地图有点儿错误:
Public Structure PointAPI
Public x As Integer
Public y As Integer
End Structure
Module Module_SetMouseclick
Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Integer, ByVal dx As Integer, ByVal dy As Integer, ByVal cButtons As Integer, ByVal dwExtraInfo As Integer)
Public Declare Auto Function SetCursorPos Lib "User32.dll" (ByVal X As Integer, ByVal Y As Integer) As Long
Declare Function GetCursorPos Lib "user32.dll" (ByRef lpPoint As PointAPI) As Boolean
Private Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP As Integer = &H4
Public x, y As Integer
Public Sub Position_Click(ByVal x As Integer, ByVal y As Integer, ByVal click As Boolean)
SetCursorPos(x, y)
If click Then
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 1)
Else
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 1)
End If
End Sub
End Module
在其他地方我用
访问此功能Module_SetMouseclick.Position_Click(500, 500, True)
Module_SetMouseclick.Position_Click(500, 500, False)
在500,500像素处左击鼠标的作用是什么。正如我所说的那样,只是给前景加上 SetForegroundWindow 。
答案 0 :(得分:0)
解决方案是:
SetBackupCursorPos()
Position_Click(Module_Generate.ScreenWidth / 2, Module_Generate.ScreenHeight / 2, True)
Threading.Thread.Sleep(100)
Position_Click(x, y, False)
延迟现在可行。在100毫秒以下它仍然有100个一切似乎没问题。