2017-01-01 7 views
0

もう一度私はあなたの助けが必要です。 私はこれを何十回も検索しましたが、有用な情報はほとんど見つかりませんでした。Windowsフォームアプリケーションを.exeプロセスに接続する方法

私はこのプロジェクトの背後にあるアイデアは、私のVB.NETのWindowsフォームアプリケーションを "カウンターストライクグローバルな攻撃"と呼ばれるゲームにつけることです、これはカンニングではありません!

私の意図は...などなど、時間など、基本的に私が遊んでいる間に見ることができるいくつかの有用なツールです

[問題] は私がしかし逆に、これが実行された場合には、いくつかのビデオを見てきました、つまり、既存のプロセスをWindowsフォームに接続したことを意味します。私は男がcalc.exeを彼のWindowsフォームアプリケーションに添付したビデオを見ました。わかっているように、私はそれとは反対に、私のウィンドウフォームを既存のアプリケーションに付けたいと思っています。

[私が試した事] だから私は何をしたか、彼のC#のコードをコピーしてvb.netにそれを翻訳し、それを周りに混ぜることだった、と私はひどくめちゃめちゃ:D

私は私のプロジェクトを実行するには、各プロセス(ゲーム&アプリケーション)の少なくとも200個のインスタンスを起動し、私はそれらをシャットダウンする私のPCを再起動する必要があるだろう:私はあなたのコードをよりこのように見て期待

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

CS:GOのようなゲームには標準のウィンドウメッセージループが含まれていないか、または特定のメッセージを違う方法で無視/処理するので、実行しようとしていることができない可能性があります。 DirectXとフック(_ ** VAC ** _とも呼ばれる_ ** Valve Anti-Cheat System ** _に注意してください)を介してゲーム画面に物を描画することは可能ですが、自分でヒットテストとクリックを認識することができます。 –

+0

さて、ImGUI、DirectX、OpenGLなどでフックや物事について少し聞いたことがありますが、C#++のものではありませんか? D:D –

+0

DirectXは主にC++ですが、C#とVBの両方で動作するSlimDXやSharpDXなどの.NETラッパーがあります。これらの言語では、ネット。 –

答えて

0

D:

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が使用されています。あなたはそこにハンドルを使用することはできません。それはまったく異なる何かを意味するからです。

+0

あなたの返事の人のおかげで、Idle_Mindさん、私は訂正を感謝します! –

+0

あなたの返事の男のおかげで、Idle_Mind、訂正ありがとう!これは問題を解決するようには見えませんでしたが、間違いなくいくつか変更されましたが、少なくとも今は200インスタンスを起動しません:D私の主な問題は、vb.netフォームをゲーム内に保つことでしたが、両方のプロセスを開始しましたが、単なるプロセスとして、ゲームの外に私のウィンドウのフォームを移動することができました。目的ではありませんでした。 –

関連する問題