【发布时间】:2017-01-01 23:53:26
【问题描述】:
我再一次需要你的帮助。 相信我,我已经搜索了数十次,但找不到太多有用的信息。
所以我正在做的这个项目背后的想法是将我的 vb.net windows 窗体应用程序附加到一个名为“反恐精英全球攻势”的游戏中,这不是作弊!
我的意图基本上是一些我可以在玩时查看的有用工具,例如时间等...
[问题] 我看过一些视频,其中已经完成,但相反,这意味着他们将现有进程附加到他们的 Windows 窗体,例如。我看到一个视频,其中一个人将 calc.exe 附加到他的 windows 窗体应用程序中,正如你所理解的,我想要相反的,我想将我的 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
【问题讨论】:
-
您尝试执行的操作可能无法实现,因为像 CS:GO 这样的游戏不包含标准窗口消息循环,或者它以不同方式忽略/处理某些消息。可以通过 DirectX 和挂钩将内容渲染到游戏屏幕上(注意 Valve 反作弊系统! - 也称为 VAC) 但这也意味着您必须自己进行命中测试和点击识别。
-
是的,我听说过一些关于 hooking 和诸如 ImGUI、DirectX 和 OpenGL 之类的东西,但那不是一些 c# c++ 的东西吗?我可以告诉你一个事实,我不擅长这些语言 :D 我几乎不懂 vb.net :D:D
-
DirectX 主要是 C++,但也有 .NET 包装器,例如 SlimDX 或 SharpDX,它们都适用于 C# 和 VB.NET。
标签: vb.net forms attachment