我正在玩GTA SA:MP。它使用DirectX,如果你是服务器上的AFK,你会自动被踢,我想在我离开的时候把它放在服务器上。 我尝试创建一个VBScript,在8分钟后自动按W然后循环,但它实际上不起作用。玩家不会移动。
代码:
Dim a
Dim antiafk
set antiafk=createobject("wscript.shell")
msgbox "Atentie! Ca sa opriti scriptul, trebuie sa il opriti NUMAI din Task Manager. Nu exista alta cale."
Do until a=5
wscript.sleep 480000
antiafk.sendkeys "w"
Loop
有什么想法吗?
答案 0 :(得分:0)
SendKeys
方法将一个或多个击键发送到活动窗口。使用AppActivate
方法首先激活您的应用程序窗口。
脚本是您的脚本的简化版本,没有8分钟循环和notepad.exe
而不是您的应用程序名称。
option explicit
On Error Goto 0
Dim antiafk
set antiafk=createobject("wscript.shell")
Dim lngPID, booSuccess, foo
lngPID = getlngPID()
If lngPID = 0 Then
foo = antiafk.Popup( "No instance found", 5, _
"29445451", vbOKOnly + vbCritical)
Else
booSuccess = antiafk.AppActivate( lngPID)
If not booSuccess Then
foo = antiafk.Popup( "AppActivate Method unsuccesfull", 5, _
"29445451", vbOKOnly + vbExclamation)
Else
antiafk.sendkeys "w"
End If
End If
Function getLngPID()
getLngPID = 0
Dim strComputer
Dim objWMIService, colProcessList, objProcess
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'Notepad.exe'")
'find appropriate and suitable Process ID
For Each objProcess in colProcessList
getLngPID = objProcess.ProcessId
Next
End Function