VBScript和sendkeys不适用于DirectX?

VBScript和sendkeys不适用于DirectX?,vbscript,directx,sendkeys,Vbscript,Directx,Sendkeys,我在玩GTA SA:MP。它使用DirectX,如果你在服务器上是AFK,你会自动被踢,我想在我离开时让它在服务器上AFK。 我尝试创建一个VBScript,在8分钟后自动按W键,然后循环,但实际上它不起作用。球员一动不动 代码: 有什么想法吗?SendKeys方法会向活动窗口发送一个或多个按键。首先使用AppActivate方法激活应用程序窗口 该脚本是您的脚本的简化版本,没有8分钟循环和notepad.exe代替您的应用程序名 option explicit On Error Goto 0

我在玩GTA SA:MP。它使用DirectX,如果你在服务器上是AFK,你会自动被踢,我想在我离开时让它在服务器上AFK。 我尝试创建一个VBScript,在8分钟后自动按W键,然后循环,但实际上它不起作用。球员一动不动

代码:

有什么想法吗?

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

在执行此操作之前,您可能需要检查EULA,因为许多游戏中不允许使用AFK宏。
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