Advertisement
Guest User

Steam hook for battlenet

a guest
May 1st, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ' VB Script Document
  2. ' SteamOverlay hook for Warcraft via battle.net
  3.  
  4. 'option explicit
  5.  
  6. Launcher = "Battle.net.exe"
  7. ' alt:".\World of Warcraft\Wow-64.exe"
  8. Client = "Battle.net.exe"
  9. BattleNet = "Battle.net.exe"
  10. Bnet = true
  11.  
  12. ' if nothing was passed in, we are starting from scratch, so start the launcher
  13. If WScript.Arguments.length = 0 Then
  14. Home = WScript.ScriptFullName
  15. Home = Left(Home, InStr(Home, WScript.ScriptName)-1)
  16.  
  17. 'run the launcher
  18. Set objShell = WScript.CreateObject("Shell.Application")
  19. objShell.ShellExecute Launcher, "", Home
  20.  
  21. ' create the file that the elevated script will copy executables's path and commandline to
  22. set fso = CreateObject("Scripting.FileSystemObject")
  23. set tempfolder = fso.GetSpecialFolder(2)
  24. tempname = tempfolder & "\" & "steam.tmp"
  25. set tempfile = fso.CreateTextFile(tempname)
  26. tempfile.close()
  27.  
  28. 'run this script but signal that it needs to elevate by giving it the tempfile name as an argument
  29. Set objShell = CreateObject("Shell.Application")
  30. objShell.ShellExecute "wscript.exe", Chr(34) & WScript.ScriptFullName & Chr(34) & " " & tempname, "", "runas", 2
  31.  
  32. 'WScript.Echo "Waiting for other script to finish..."
  33. ' check every second if the temporary file has been updated with the commandline info
  34. Do While True
  35. 'check the filesize of the tempfile
  36. set tempfile = fso.GetFile(tempname)
  37. If tempfile.Size > 0 Then Exit Do
  38. WScript.Sleep 1000
  39. Loop
  40.  
  41. ExecutablePath = Home
  42. set tempfile = fso.OpenTextFile(tempname)
  43. CommandLine = tempfile.ReadLine
  44. tempfile.close()
  45.  
  46. Set objShell = CreateObject("Shell.Application")
  47. objShell.ShellExecute Client, CommandLine, ExecutablePath
  48.  
  49. fso.DeleteFile tempname
  50. WScript.Quit
  51. Else
  52. ' we are elevated now
  53. 'WScript.Echo "Waiting for launcher to start client..."
  54.  
  55. 'Get Windows Manager object
  56. Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")
  57.  
  58. ' check every second for client that was launched by launcher
  59. Do While bnet
  60. On Error Resume Next
  61.  
  62. 'Get info on processes named Client
  63. Set InstanceList = objWMIService.ExecQuery _
  64. ("Select * from Win32_Process Where Name = '" & Client & "'")
  65.  
  66. for Each Instance in InstanceList
  67. cmdline = Instance.CommandLine
  68.  
  69. 'we found the client we care about
  70. Instance.Terminate()
  71.  
  72. 'remove the exe path and name from the cmdline
  73. position = InStr(1, cmdline, """ ") + 1
  74. cleanCmdLine = Right(cmdline, Len(cmdline) - position)
  75.  
  76. tempname = WScript.Arguments(0)
  77. set fso = CreateObject("Scripting.FileSystemObject")
  78. If fso.FileExists(tempname) Then
  79. set tempfile = fso.OpenTextFile(tempname, 2)
  80. tempfile.WriteLine(cleanCmdLine)
  81. tempfile.close()
  82. End If
  83.  
  84. WScript.Quit
  85. Next
  86.  
  87. WScript.Sleep 1000
  88.  
  89. 'Get info on processes named BattleNet, exit if released.
  90. Set BNetList = objWMIService.ExecQuery _
  91. ("Select * from Win32_Process Where Name = '" & BattleNet & "'")
  92. for Each BnetI in BNetList
  93. bnetline = BnetI.CommandLine
  94. Next
  95. if bnetline = "" then bnet = false
  96.  
  97. Loop
  98. End If
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement