VBScript和sendkeys不能与DirectX一起使用?

时间:2015-04-04 10:41:24

标签: vbscript directx sendkeys

我正在玩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

有什么想法吗?

1 个答案:

答案 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