我再次需要您的帮助。 相信我,我已经搜索了几十次,但找不到太多有用的信息。如何将windows窗体应用程序附加到.exe进程
因此,我正在做这个项目背后的想法是将我的vb.net窗体表单应用程序附加到一个名为“反击全球攻势”的游戏中,这不是一个骗子!
我的意图基本上是一些有用的工具,我可以看一下,同时播放,如时间等等
[问题] 我看过一些影片,其中已完成这项工作,但相反,这意味着他们将现有的流程附加到他们的Windows窗体上,我看到一个视频,其中一个人将calc.exe附加到他的Windows窗体应用程序,并且正如你所理解的,我想要的是相反的,我想将我的Windows窗体附加到现有的应用程序中。
[事情我试过] 所以我做了什么,就是模仿他的C#代码,把它转变为vb.net和它周围的混合,我搞砸了严重:d
当我跑我的项目它开始ATLEAST 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 Anti-Cheat System ** _! - 也称为_ ** VAC ** _)将内容呈现到游戏屏幕上,但这也意味着您可能会自己做点击测试和点击识别。 –
是的,我听说过一些有关钩子和东西,与ImGUI,DirectX和OpenGL等,但不是一些c#C++的东西?我可以告诉你一个事实,我在这些语言中很糟糕:DI几乎不了解vb.net:D:D –
DirectX主要是C++,但有.NET封装器,如SlimDX或SharpDX,它们都可以在C#和VB中使用。净。 –