2015-04-04 55 views
0

我正在玩GTA SA:MP。它使用DirectX,如果你是服務器上的AFK,你會自動踢掉,而且我想在我離開時讓它在服務器上AFK。 我試圖創建一個8分鐘後自動按下W然後循環但實際上不起作用的VBScript。玩家不動。VBScript和sendkeys不能與DirectX一起使用?

代碼:

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

在執行此操作之前,您可能需要檢查EULA,因爲在許多遊戲中不允許使用AFK宏。 – Bob 2015-04-05 02:43:37

回答

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 
相關問題