我需要你的帮助。 相信我,我已经搜索了好几十次,但找不到太多有用的信息。
所以我正在做的这个项目背后的想法是将我的vb.net windows窗体应用程序附加到一个名为“反击全球攻势”的游戏中,这不是作弊!
我的意图基本上是我在比赛时可以看到的一些有用的工具,比如时间等...
[问题] 我已经看过很少的视频,这已经完成了,但相反,这意味着他们将现有的流程附加到他们的Windows窗体,例如。我看到一个视频,其中一个人将calc.exe附加到他的Windows窗体应用程序,你可以理解,我想要相反,我想将我的窗体表单附加到现有的应用程序。
[我试过的事] 所以我所做的就是复制他的C#代码,将其翻译成vb.net并混合使用,我搞砸了很多:D
当我运行我的项目时,它会启动每个进程的至少200个实例(游戏和应用程序),我必须重启我的电脑才能关闭它们:D
Imports System.Windows.Forms
Imports System.Threading
Imports System.Diagnostics
Imports System.Runtime.InteropServices
Partial Public Class CubicCheat
Inherits Form
Public Sub New()
InitializeComponent()
End Sub
<DllImport("USER32.DLL")> _
Private Shared Function SetParent(hwc As IntPtr, hwp As IntPtr) As IntPtr
End Function
Private Sub CubicCheat_Load(sender As Object, e As EventArgs) Handles MyBase.Load
HookCsgo()
End Sub
Function HookCsgo()
Dim csgo As Process = Process.Start("C:\Program Files (x86)\Steam\steamapps\common\Counter-Strike Global Offensive\csgo.exe")
Dim cubic As Process = Process.Start("C:\Users\redfa_000\Documents\Visual Studio 2012\Projects\C++ Projekter\Crazy Tutorials\CubicHook\CubicHook\bin\Debug\CubicHook.exe")
Thread.Sleep(500)
cubic.WaitForInputIdle()
SetParent(cubic.MainWindowHandle, csgo.Handle)
Dispose()
End Function
End Class
答案 0 :(得分:0)
我希望您的代码看起来更像这样:
Dim csgo As Process
Dim csgoFileName As String = "C:\Program Files (x86)\Steam\steamapps\common\Counter-Strike Global Offensive\csgo.exe"
Dim csgoMatches As Process() = Process.GetProcessesByName(System.IO.Path.GetFileNameWithoutExtension(csgoFileName))
If csgoMatches.Length = 0 Then
csgo = Process.Start(csgoFileName)
csgo.WaitForInputIdle()
Else
csgo = csgoMatches(0)
End If
Dim cubic As Process
Dim cubicFileName As String = "C:\Users\redfa_000\Documents\Visual Studio 2012\Projects\C++ Projekter\Crazy Tutorials\CubicHook\CubicHook\bin\Debug\CubicHook.exe"
Dim cubicMatches() As Process = Process.GetProcessesByName(System.IO.Path.GetFileNameWithoutExtension(cubicFileName))
If cubicMatches.Length = 0 Then
cubic = Process.Start(cubicFileName)
cubic.WaitForInputIdle()
Else
cubic = cubicMatches(0)
End If
SetParent(cubic.MainWindowHandle, csgo.MainWindowHandle)
请注意,在SetParent()调用中,我们在两个位置使用MainWindowHandle
。你不能在那里使用Handle,因为它意味着完全不同的东西。