here its is guys

s Example I Used the game "WarRock"

Enjy!

Program Used : Visual Basic 2008

Code:
Option Strict On
Option Explicit On
Imports System.Runtime.InteropServices

Public Class Form1

    Const MEM_COMMIT As Integer = &H1000
    Const PAGE_READWRITE As Integer = &H4
    Const PROCESS_CREATE_THREAD As Integer = &H2
    Const PROCESS_VM_OPERATION As Integer = &H8
    Const PROCESS_VM_READ As Integer = &H10
    Const PROCESS_VM_WRITE As Integer = &H20


    <DllImport("kernel32.dll", SetLastError:=True, CallingConvention:=CallingConvention.Winapi)> _
    Public Shared Function OpenProcess(ByVal dwDesiredAccess As UInteger, <MarshalAs(UnmanagedType.Bool)> _
    ByVal bInheritHandle As Boolean, ByVal dwProcessId As Integer) As System.IntPtr
    End Function

    <DllImport("kernel32.dll", SetLastError:=True, CallingConvention:=CallingConvention.Winapi)> _
    Public Shared Function WriteProcessMemory(ByVal hProcess As System.IntPtr, ByVal lpBaseAddress As System.IntPtr, _
    ByVal lpBuffer As String, ByVal nSize As Int32, <Out()> ByRef lpNumberOfBytesWritten As Int32) As _
    <MarshalAs(UnmanagedType.Bool)> Boolean
    End Function

    <DllImport("kernel32.dll", SetLastError:=True, CallingConvention:=CallingConvention.Winapi)> _
    Public Shared Function VirtualAllocEx(ByVal hProcess As IntPtr, ByVal lpAddress As Int32, _
    ByVal dwSize As Int32, ByVal flAllocationType As UInteger, _
    ByVal flProtect As UInteger) As IntPtr
    End Function

    <DllImport("kernel32.dll", SetLastError:=True, CallingConvention:=CallingConvention.Winapi)> _
    Public Shared Function GetModuleHandle(ByVal lpModuleName As String) As IntPtr
    End Function

    <DllImport("kernel32.dll", SetLastError:=True, CallingConvention:=CallingConvention.Winapi)> _
    Public Shared Function GetProcAddress(ByVal hModule As IntPtr, ByVal lpProcName As String) As UIntPtr
    End Function

    <DllImport("kernel32.dll", SetLastError:=True, CallingConvention:=CallingConvention.Winapi)> _
    Public Shared Function CreateRemoteThread(ByVal hProcess As IntPtr, ByVal lpThreadAttributes As Int32, _
    ByVal dwStackSize As UInt32, ByVal lpStartAddress As UIntPtr, ByVal lpParameter As IntPtr, _
    ByVal dwCreationFlags As UInt32, ByRef lpThreadId As Int32) As IntPtr
    End Function

    <DllImport("kernel32.dll", SetLastError:=True, CharSet:=CharSet.Unicode, EntryPoint:="LoadLibraryA")> _
    Public Shared Function LoadLibrary(ByVal lpFileName As String) As IntPtr
    End Function

    Friend WithEvents OZ As New Timer
    Const TargetName As String = "WARROCK"
    Dim ExeName As String = IO.Path.GetFileNameWithoutExtension(Application.ExecutablePath)

    Private Sub InnjectionMethods_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.TopMost = True
        OZ.Interval = 25
        If IO.File.Exists(Application.StartupPath & "\" + ExeName + ".dll") Then
            Me.Label1.Text = "...Waiting For WarRock.exe"
            OZ.Start()
        Else
            Me.Label1.Text = "..." + ExeName + ".dll Not Found !"
        End If
    End Sub

    Private Sub OZs(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OZ.Tick
        Dim Target As Process() = Process.GetProcessesByName(TargetName)
        If Target.Length <> 0 Then
            Me.Label1.Text = "...WarRock Is Running"
            OZ.Stop()
            InjectToProcess()
        End If
    End Sub

    Sub InjectToProcess()
        Dim ExeName As String = IO.Path.GetFileNameWithoutExtension(Application.ExecutablePath)
        Dim Target As Process() = Process.GetProcessesByName(TargetName)
        Dim pHandle As IntPtr = OpenProcess(PROCESS_CREATE_THREAD Or PROCESS_VM_OPERATION Or PROCESS_VM_WRITE, False, Target(0).Id)
        Dim pszLibFileRemote As String = Application.StartupPath & "\" + ExeName + ".dll"
        Dim pfnStartAddr As UIntPtr = GetProcAddress(GetModuleHandle("Kernel32"), "LoadLibraryA")
        Dim TargetBufferSize As Int32 = Int(1 + Len(pszLibFileRemote))
        Dim LoadLibParamAdr As IntPtr = VirtualAllocEx(pHandle, 0, TargetBufferSize, MEM_COMMIT, PAGE_READWRITE)
        Dim Rtn As Integer = CInt(WriteProcessMemory(pHandle, LoadLibParamAdr, pszLibFileRemote, TargetBufferSize, 0))
        If Rtn <> 0 Then
            Label1.Text = "...Injection Succed!"
        Else
            Label1.Text = "...Injection Failed!"
        End If
        CreateRemoteThread(pHandle, 0, 0, pfnStartAddr, LoadLibParamAdr, 0, 0)
        Me.Close()
    End Sub


End Class


Process.GetProcessesByName(TargetName)