Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding > Coding Tutorials
You last visited: Today at 10:04

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Tutorial] GameHacking mit VB.Net [German]

Discussion on [Tutorial] GameHacking mit VB.Net [German] within the Coding Tutorials forum part of the General Coding category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jan 2010
Posts: 656
Received Thanks: 466
[Tutorial] GameHacking mit VB.Net [German]


GameHacking mit VB.Net by *GuideMan*

In diesem Tutorial werde ich euch zeigen wie man mit Cheat Engine und anschließend mit Visual Basic die Punkteanzahl in Solitär verändern kann.


Benötigte Software:
-
-

Fangen wir an

Zunächst öffnen wir Solitär (XP: Start > Alle Programme > Spiele > Solitär):


Gut. Als nächstes öffnen wir Cheat Engine und wählen den Prozess "sol.exe" aus. (Dieser steht für "Solitär.exe"):


In Cheat Engine haben wir nun ein umfangreiches Interface.
Ich habe auch das in diesem Bild beschrieben:


So. Da wir jetzt in Solitär 0 Punkte haben, suchen wir jetzt einfach mal nach 0.
Aber wie geht das?
Ihr gebt im Suchfeld "0" ein und klickt auf "First Scan".
Jetzt sucht Cheat Engine im Prozess "sol.exe" (Solitär) nach dem Wert 0.
Oh, jetzt haben wir aber ganz schön viele Adressen im Adress Fenster:


Das sind jetzt alles Adressen die den Wert "0" enthalten.
Jetzt wollen wir aber nur die Punkte Adresse haben.
Das heist wir spielen jetzt in Solitär solange bis wir einige Punkte haben.
Sagen wir, wir spielen solange bis wir 5 Punkte haben.
Das müsste ziemlich schnell gehen.

Jetzt wechseln wir schnell wieder zu Cheat Engine und geben im Suchfeld "5" ein und klicken auf "Next Scan"! Jetzt sucht Cheat Engine nach einem Wert der zuerst 0 war, jetzt aber 5 ist:


Jetzt kann es aber durchaus vorkommen das trotzdem noch sehr viele Adressen da sind.
Jetzt warten wir einfach bis in Solitär die Punkte wieder auf 0 gefallen sind und suchen in Cheat Engine nach 0. Wir klicken natürlich wieder auf "Next Scan".
Cheat Engine sucht jetzt nach einem Wert der zuerst "0" war, dann "5" wurde und jetzt wieder "0" ist.
Jetzt müsste nur noch eine Adresse übrig bleiben:


Das ist jetzt unsere Punkte Adresse.
Wenn wir jetzt doppelt auf die Adresse klicken, wird die Adresse unten hinzugefügt:


Jetzt können wir den Wert bliebig verändern.
Dazu klicken wir mit der Rechten Maustaste auf die Adresse im Unteren Fenster und klicken auf "Change Record" und dann auf "Value".
Jetzt öffnet sich ein kleines Fenster in dem wir einen neuen Wert eingeben können:


Dann klicken wir auf "OK" und wechseln zu Solitär.
Dort ist jetzt der neue Wert übernommen worden:


So, das war jetzt nicht sehr schwer, da die meiste Arbeit von Cheat Engine erledigt wurde.
Doch jetzt wollen wir diese mit Visual Basic.Net erledigen.


Zuerst öffnen wir die Microsoft Visual Basic 2008 Express Edition.
Jetzt haben wir ein noch größeres Interface als in Cheat Engine am Bildschrim.
Dieses werde ich euch auch jetzt wieder erklären:


Jetzt klicken wir oben auf "Datei" und dann auf "Neues Projekt".
Jetzt kommt ein Fenster auf dem wir verschiedene Vorlagen auswählen können.
Unter anderem gibt es dort auch Vorlagen für Hacks (*.dll) Files und ein Normales Programm.
Da wir nur Solitär "hacken" wollen, brauchen wir keine *.dll sondern nur ein Normales Programm.
Dazu wählen wir die "Windows Form-Anwendung" aus.
Jetzt können wir unserem Hack noch einen Namen geben. Nennen wir das Projekt doch "Solitär Hack".
Dann klicken wir auf "OK".
Die Visual Basic Express Edition wird nun unser Projekt vorbereiten.
Das kann einige Sekunden dauern.
Sobald dies geschehen ist, sehen wir wieder ein sehr umfangreiches Interface das ich wieder hier beschrieben habe:


Zunächst ziehen wir einen Button auf die Form.
Dazu klicken wir auf den Toolbox Button der Links neben der Form ist.
Dann öffnet sich ein Fenster in dem wir viele Steuerelemente auswählen können.
Die wichtigsten sind:
- Button
- Label
- Textbox
- Checkbox
- Radiobox
- Listbox
Wir klicken auf den Button und ziehen ihn auf die Form.
Dann klicken wir doppelt auf den Button.
Jetzt öffnet sich ein Codefenster:
Code:
Public Class Form1

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles  Button1.Click


    End Sub

End Class
Code:
Public Class Form1
Das ist die Einleitung der Form1.
Diese wird bei jeder Form benötigt.
Subs und Funktionen können nur ein einer gültigen Klasse (Class) ausgeführt werden.

Code:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dies ist die Einleitung eines Buttons.
Auch diese kann nur in einer gültigen Klasse (Class) getätigt werden.

Code:
End Sub
Schliest den Button wieder ab.

Code:
End Class
Schliest die Klasse (Class) wieder ab.

Jetzt schreiben wir zwischen
Code:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
und
Code:
End Sub
das hinein:
Code:
Dim p As Process() = Process.GetProcessesByName("sol.exe")
If Not p.Length = 0 Then
         Memory.Writememory(p, "&HAA0D8", "505", "4")
         Else
         MsgBox("Der Prozess sol.exe wurde nicht gefunden!")
End If
Aber was bedeutet das?

Code:
Dim p As Process() = Process.GetProcessesByName("sol.exe")
Hier wird die Varialbe "p" deklariert, und wir sagen ihr, dass sie der Prozess "sol.exe" sein soll.

Code:
If Not p.Length = 0 Then
Wenn der Prozess nicht leer ist, also wenn er existiert dann...

Code:
Memory.Write(p, "&HAA0D8", "505", "4")
Das ist jetzt die wichtige Stelle im Code.
Mit dieser Zeile ändern wir die Punkte bei Solitär in "500".
"p" ist der Prozess "sol.exe". Dies müssen wir angeben damit das Programm weiß in welchen Prozess die Adresse geändert werden muss.
"&HAA0D8" ist die Adresse des Wertes der Punkte.
"500" ist der Wert in die die Punkte geändert werden.
"4" sind die Bytes. Das ist für uns unwichtig.

So aber nun wird die stelle
"Memory.Write(p, "&HAA0D8", "505", "4")" blau unterringelt.
Warum?
Ganz einfach. Weil Visual Basic nicht weis was "Memory.Write" ist.
Um das Problem zu beheben klicken wir in der Toolleiste auf das 3. Symbol von links.
Dann öffnet sich ein Fenster.
Dort wählen wir das "Modul" aus und nennen es Memory.
Jetzt löschen wir den gesammten Code der in der Memory.vb ist und schreiben folgenden Code hinein:
Code:
Module Memory
    Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Integer, ByVal dwProcessId As Integer) As Integer
    Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
    Private Declare Function WriteFloatMemory Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Single, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
    Private Declare Function ReadFloat Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As IntPtr, ByVal lpBaseAddress As IntPtr, ByRef buffer As Single, ByVal size As Int32, ByRef lpNumberOfBytesRead As Int32) As Boolean
    Private Declare Function ReadProcessMemory Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Integer) As Integer
    Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
    Public RBuff As Long
    Public RBuff2 As Single
    Public RBuff3 As Integer

    Public Function Writememory(ByVal ProcessName As Process, ByVal Address As Integer, ByVal Value As Long, ByVal Bytes As Integer)
        Dim GameLookUp As Process() = Process.GetProcessesByName(ProcessName.ProcessName)

        If GameLookUp.Length = 0 Then

            End

        End If
        Dim processHandle As IntPtr = OpenProcess(&H1F0FFF, 0, GameLookUp(0).Id)

        WriteProcessMemory(processHandle, Address, Value, Bytes, Nothing)

        CloseHandle(processHandle)

    End Function

    Public Function ReadFloat(ByVal ProcessName As Process, ByVal Address As Single)

        Dim GameLookUp As Process() = Process.GetProcessesByName(ProcessName.ProcessName)

        If GameLookUp.Length = 0 Then

            End

        End If

        Dim processHandle As IntPtr = OpenProcess(&H1F0FFF, 0, GameLookUp(0).Id)

        ReadProcessMemory(processHandle, Address, RBuff, 4, Nothing)

        CloseHandle(processHandle)

        Return RBuff

    End Function

    Public Function WriteFloat(ByVal ProcessName As Process, ByVal Address As Integer, ByVal Value As Single)

        Dim GameLookUp As Process() = Process.GetProcessesByName(ProcessName.ProcessName)

        If GameLookUp.Length = 0 Then

            End

        End If

        Dim processHandle As IntPtr = OpenProcess(&H1F0FFF, 0, GameLookUp(0).Id)

        WriteFloatMemory(processHandle, Address, Value, 4, Nothing)

        CloseHandle(processHandle)

    End Function

    Public Function ReadLong(ByVal ProcessName As Process, ByVal Address As Integer)

        Dim GameLookUp As Process() = Process.GetProcessesByName(ProcessName.ProcessName)

        If GameLookUp.Length = 0 Then

            End

        End If

        Dim processHandle As IntPtr = OpenProcess(&H1F0FFF, 0, GameLookUp(0).Id)

        ReadProcessMemory(processHandle, Address, RBuff, 4, Nothing)

        CloseHandle(processHandle)

        Return RBuff

    End Function

    Public Function ReadFloatPointer(ByVal ProcessName As Process, ByVal Base As Integer, ByVal Offset As Short)

        Dim fullAddress As Long

        Dim GameLookUp As Process() = Process.GetProcessesByName(ProcessName.ProcessName)

        If GameLookUp.Length = 0 Then

            End

        End If

        Dim processHandle As IntPtr = OpenProcess(&H1F0FFF, 0, GameLookUp(0).Id)

        ReadProcessMemory(processHandle, Base, RBuff, 4, Nothing)

        fullAddress = RBuff + Offset

        ReadFloat(processHandle, fullAddress, RBuff2, 4, Nothing)

        Return RBuff2

        CloseHandle(processHandle)

    End Function

    Public Function ReadLongPointer(ByVal ProcessName As Process, ByVal Base As Integer, ByVal Offset As Short, ByVal Bytes As Integer)

        Dim fullAddress As Long

        Dim GameLookUp As Process() = Process.GetProcessesByName(ProcessName.ProcessName)

        If GameLookUp.Length = 0 Then

            End

        End If

        Dim processHandle As IntPtr = OpenProcess(&H1F0FFF, 0, GameLookUp(0).Id)

        ReadProcessMemory(processHandle, Base, RBuff, 4, Nothing)

        fullAddress = RBuff + Offset

        ReadProcessMemory(processHandle, fullAddress, RBuff3, Bytes, Nothing)

        Return RBuff3

        CloseHandle(processHandle)

    End Function

    Public Function WriteFloatPointer(ByVal ProcessName As Process, ByVal Base As Integer, ByVal Offset As Short, ByVal Value As Single)

        Dim fullAddress As Long

        Dim GameLookUp As Process() = Process.GetProcessesByName(ProcessName.ProcessName)

        If GameLookUp.Length = 0 Then

            End

        End If

        Dim processHandle As IntPtr = OpenProcess(&H1F0FFF, 0, GameLookUp(0).Id)

        ReadProcessMemory(processHandle, Base, RBuff, 4, Nothing)

        fullAddress = RBuff + Offset

        WriteFloatMemory(processHandle, fullAddress, Value, 4, Nothing)

        CloseHandle(processHandle)

    End Function

    Public Function WriteLongPointer(ByVal ProcessName As Process, ByVal Base As Integer, ByVal Offset As Short, ByVal Value As Long, ByVal Bytes As Integer)

        Dim fullAddress As Long

        Dim GameLookUp As Process() = Process.GetProcessesByName(ProcessName.ProcessName)

        If GameLookUp.Length = 0 Then

            End

        End If

        Dim processHandle As IntPtr = OpenProcess(&H1F0FFF, 0, GameLookUp(0).Id)

        ReadProcessMemory(processHandle, Base, RBuff, 4, Nothing)

        fullAddress = RBuff + Offset

        WriteProcessMemory(processHandle, fullAddress, Value, Bytes, Nothing)

        CloseHandle(processHandle)

    End Function

    Public Function NOP(ByVal ProcessName As Process, ByVal Address As Integer, ByVal value As Integer)

        Dim GameLookUp As Process() = Process.GetProcessesByName(ProcessName.ProcessName)

        If GameLookUp.Length = 0 Then

            End

        End If

        Dim processHandle As IntPtr = OpenProcess(&H1F0FFF, 0, GameLookUp(0).Id)

        WriteProcessMemory(processHandle, Address, value, 1, Nothing)

        CloseHandle(processHandle)

    End Function

End Module
Diese Code braucht nicht kommentiert werden da er nur eine vereinfachung der Windows API ist.
Er ermöglicht euch das schreiben von Memory Hacking in VB.Net.

Wenn ihr nun F5 drückt, startet das Programm.
Dann startet ihr Solitär und klickt auf den Button im Solitär Hack.
Jetzt müsstet ihr 500 Punkte haben. Oder halt die Punktanzahl die ihr im Code eingegeben habt.

Das war die überarbeitete Version von *GuideMan*
Ich hoffe das ihr das Tutorial verstanden habt. Wenn ja könnt ihr dieses Beispiel jetzt auf alles andere wie Online Games, Flash Games usw. übertragen.
COPYRIGHT BY *Guideman*.
Kopieren nicht erlaubt! Verlinken ist erlaubt.


Liebe Grüße, Michael.
*GuideMan* is offline  
Thanks
22 Users
Old 01/08/2010, 23:52   #2


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Öhh nimms mir nicht übel aber das ist doch How to I einfach für Basic
How to II ist für Adroxxx's zweites tut reserviert.
der name ist geschützt *g*

aber spaß bei seite:

Finde ich ganz gut, dass sowas auch mal für die anderen Sprachen gemacht wird....

allerdings solltest du das noch ein bisschen allgemeiner machen.
Ist nicht so gut, wenn man von deiner Dll abhängig ist
MrSm!th is offline  
Thanks
6 Users
Old 01/08/2010, 23:59   #3
 
elite*gold: 0
Join Date: Jan 2010
Posts: 656
Received Thanks: 466
Man ist nicht von meiner .DLL abhängig.
Man kann ja auch eigenen Code nehmen.
Ich denke nur, für den Anfang ist meine DLL am leichtesten zu bedienen.

Ich wusste nicht das der Name reserviert ist.
Sobald Adroxxx das 2. Tutorial heraus bringt, ändere ich den Namen gerne.

Und, was meinst du denn mit verallgemeinen?
*GuideMan* is offline  
Old 01/09/2010, 00:01   #4

 
Adroxxx's Avatar
 
elite*gold: 15
Join Date: Nov 2005
Posts: 13,021
Received Thanks: 5,324
Wo ist denn dein Gamehacking HowTo I ?

Ich will dir auch nicht zu nahe treten, aber einen wirklichen Sinn in diesem Tutorial sehe ich nicht. Genau das gleiche nur um einiges Ausfürhlicher gibt es bereits von mir. Also wieso machst du genau das gleiche?

Den Visual Basic Hack Coding teil, kann man auch nicht wirklich als Tutorial beschreiben.
Ich bin selbst öfters mal Oberflächlich und erkläre nur das nötigste, aber du erklärst da überhaupt nichts. Du sagst du hier nimmt die DLL, bindet die ein und Kopiert das, dahin.

Den Coding Teil hättest du etwas ausfürhlicher Beschreiben können und naja, ansich hätte es etwas mehr Sinn gemacht wenn du wenigstens eine andere Anwendung genommen hättest. Naja mir ist's aber wayne. Ist schließlich deine Arbeitszeit.
Adroxxx is offline  
Thanks
7 Users
Old 01/09/2010, 00:10   #5
 
elite*gold: 0
Join Date: Jan 2010
Posts: 656
Received Thanks: 466
Ich meinte das eher so das du "Teil 1" mit C++ machst und ich "Teil 2" mit VB.
Ich werde es heute Vormittag nach einer Mütze schlaf nochmal überarbeiten.

Liebe Grüße, Michael.
*GuideMan* is offline  
Old 01/09/2010, 00:15   #6


 
Cholik's Avatar
 
elite*gold: 4
Join Date: Aug 2008
Posts: 6,783
Received Thanks: 4,992
Ich würde empfehlen du benennst den Thread um, da es sonst nur Verwirrung stifftet. Denn wer das 1. HowTo (C++) durchgearbeitet hat und im 2. HowTo etwas anspruchsvolleres erwartet wird wohl leider etwas enttäuscht. Denn die Entwicklung C++ -> VB kann man ja nicht wirklich als Fortschritt bezeichnen.

Desweiteren finde ich, dass du nicht einfach den Threadtitel von jemandem nehmen kannst bzw die Threadserie und dann fortsetzen ohne dessen Zustimmung. Ich bitte dich also dem Thread einen neuen Titel zu geben bis heute Abend, da ich es ansonsten tue.

Danke
Cholik is offline  
Thanks
2 Users
Old 01/09/2010, 00:31   #7
 
elite*gold: 0
Join Date: Jan 2010
Posts: 656
Received Thanks: 466
#renamed.

Wie gesagt werde ich das Tutorial heute Vormittag nochmal überabeiten.
*GuideMan* is offline  
Old 01/09/2010, 00:31   #8

 
djpromo's Avatar
 
elite*gold: 20
Join Date: Jul 2004
Posts: 5,468
Received Thanks: 1,993
THEARDSERIE

THEARAT umbennen

Sobchak hat gesprochen
djpromo is offline  
Thanks
4 Users
Old 01/09/2010, 00:33   #9
 
^darkwing's Avatar
 
elite*gold: 0
Join Date: Sep 2009
Posts: 148
Received Thanks: 31
Ich denke es ist zum größten Teil der Titel der für eine kleine unruhe sorgt. Adroxxx hat ein einfach den Grundstein für eine Serie von Tut's geleget mit seinem "Gamehacking HowTo I".

Das mit CheatEngine könntest du eigentlich weg lassen. Es sei denn du willst vielleicht deine eigene Serie machen? Wäre dann natürlich gut, wenn das behandelt wird.

Den Punkt mit der DLL mag ich nicht. Mag sein das Anfänger damit besser klar kommen aber so schwierig ist es gar nicht OpenProcess, WPM, RPM usw. zu benutzen, dass es sich dafür lohnt eine DLL zu benutzen. Die Anfänger wissen vielleicht nicht ein Mal was eine DLL ist, was man damit machen kann oder eine DLL auch nicht immer gute Sachen enthalten kann.
Lieber paar Codezeilen kommentieren/erklären.
^darkwing is offline  
Old 01/09/2010, 00:35   #10
 
elite*gold: 0
Join Date: Jan 2010
Posts: 656
Received Thanks: 466
Quote:
Originally Posted by djpromo View Post
THEARDSERIE

THEARAT umbennen

Sobchak hat gesprochen
Hab ich ja bereits gemacht.
Kann jemand diesen Thread pinnen, da es wirklich nicht gerade wenig Arbeit war, und ich wie gesagt das ganze noch einmal überarbeite.
*GuideMan* is offline  
Old 01/09/2010, 00:38   #11


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Quote:
Originally Posted by Walter Sobchak View Post
Ich würde empfehlen du benennst den Thread um, da es sonst nur Verwirrung stifftet. Denn wer das 1. HowTo (C++) durchgearbeitet hat und im 2. HowTo etwas anspruchsvolleres erwartet wird wohl leider etwas enttäuscht. Denn die Entwicklung C++ -> VB kann man ja nicht wirklich als Fortschritt bezeichnen.

Desweiteren finde ich, dass du nicht einfach den Threadtitel von jemandem nehmen kannst bzw die Threadserie und dann fortsetzen ohne dessen Zustimmung. Ich bitte dich also dem Thread einen neuen Titel zu geben bis heute Abend, da ich es ansonsten tue.

Danke
lol genau das ist mir passiert.
Dachte eigentlich Adroxxx hat endlich sein How to II raus^^

edit:

also für sticky möchte ich noch die überarbeitete Version sehen.
momentan ist das keinen sticky wert

(bist du stickygeil? den satz schreibst du in jeden Thread O.o)
MrSm!th is offline  
Old 01/09/2010, 00:42   #12
 
elite*gold: 0
Join Date: Jan 2010
Posts: 656
Received Thanks: 466
*** bin Stickygeil
Naja, Ich schreibs nur in meine "Tutorial Threads", die in meiner Signatur zu finden sind.
*GuideMan* is offline  
Old 01/09/2010, 01:04   #13

 
Adroxxx's Avatar
 
elite*gold: 15
Join Date: Nov 2005
Posts: 13,021
Received Thanks: 5,324
Quote:
Originally Posted by ^darkwing View Post
Ich denke es ist zum größten Teil der Titel der für eine kleine unruhe sorgt. Adroxxx hat ein einfach den Grundstein für eine Serie von Tut's geleget mit seinem "Gamehacking HowTo I".
Die auch irgendwann fortgesetzt wird ;]


Quote:
Originally Posted by *GuideMan* View Post
Hab ich ja bereits gemacht.
Kann jemand diesen Thread pinnen, da es wirklich nicht gerade wenig Arbeit war, und ich wie gesagt das ganze noch einmal überarbeite.
Habs mal hier geadded:


Quote:
Originally Posted by MrSm!th View Post
lol genau das ist mir passiert.
Dachte eigentlich Adroxxx hat endlich sein How to II raus^^
Das nächste mal wenn du ein Gamehacking Tutorials II siehst, wird es meins sein :P
Adroxxx is offline  
Thanks
1 User
Old 01/09/2010, 01:17   #14
 
elite*gold: 0
Join Date: Jan 2010
Posts: 656
Received Thanks: 466
Quote:
Originally Posted by Adroxxx View Post
Habs mal hier geadded:
Danke
Gute Nacht.

Liebe Grüße, Michael.
*GuideMan* is offline  
Old 01/09/2010, 12:37   #15
 
12354's Avatar
 
elite*gold: 0
Join Date: Apr 2007
Posts: 943
Received Thanks: 132
Erst lässt du den Benutzer per Cheat Engine eine Adresse raussuchen um dann benutzt du einfach eine hardgecodete Adresse(hier die 0xAA0D8)?!
Für was machste dann den ganzen resten Teil?
Soll der User(der möglicherweise gar keine Ahnung hat) erraten dass er jetzt die Adresse im C&P Code umändern soll?

Die Kommentare in deinem Code sind meist sinnlos:
Quote:
' Deklaration einer Variable
Was wird hier eig deklariert? etc
Quote:
' Wenn der Prozess "sol.exe" existiert dann:
Das ist an dieser Stelle falsch!
Du gehst die Prozessliste durch und checkst bei jedem Prozess den Prozessnamen.
Wenn du schon Kommentare schreibst solltest du wirklich auch erklären was genau passiert.

Zum Code:
Du hättest nicht durch die Prozessliste durchloopen müssen, da du dir direkt den Prozess mit Namen "xyz" geben lassen kannst:
Code ist aus meinem (schon etwas älteren) WoW Bot :P
Code:
Dim pName As String = "WoW"
(...)
Dim p As Process() = Process.GetProcessesByName(pName)
If p.Length = 0 Then
    Console.WriteLine("WoW not found")
    Console.ReadLine()
    End
End If
12354 is offline  
Reply




All times are GMT +1. The time now is 10:05.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.