Die "as Any" hab ich einfach mal durch Integer ersetzt, vll nicht die eleganteste Lösung aber mit Pinball hats schonmal funtkioniert. Wer nen besseren Vorschlag hat bitte posten. Könnte mir gut vorstellen dass die aktuelle Variante etwas buggy ist :s
Vondaher müssen die Deklarationen so aussehen:
Code:
Public Declare Function ReadProcessMem 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
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
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Integer, ByRef lpdwProcessId As Integer) As Integer
Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Integer, ByVal dwProcessId As Integer) As Integer
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Integer) As Integer
Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Integer) As Short
Declare Function Hotkey Lib "user32" Alias "GetAsyncKeyState" (ByVal key As Integer) As Short
Public Function WPM(ByRef gamewindowtext As String, ByRef Address As Integer, ByRef Value As Integer, ByRef bytes As Byte) As Object
Dim handle As Integer
Dim processID As Integer
Dim ProcessHandle As Integer
handle = FindWindow(vbNullString, gamewindowtext)
GetWindowThreadProcessId(handle, processID)
ProcessHandle = OpenProcess(&H1F0FFF, True, processID)
WriteProcessMemory(ProcessHandle, Address, Value, bytes, 0)
CloseHandle(ProcessHandle)
End Function
Public Function WPMbuf(ByRef gamewindowtext As String, ByRef Address As Integer, ByRef Value As Byte, ByRef bytes As Byte) As Object
Dim handle As Integer
Dim processID As Integer
Dim ProcessHandle As Integer
handle = FindWindow(vbNullString, gamewindowtext)
GetWindowThreadProcessId(handle, processID)
ProcessHandle = OpenProcess(&H1F0FFF, True, processID)
WriteProcessMemory(ProcessHandle, Address, Value, bytes, 0)
CloseHandle(ProcessHandle)
End Function
Public Function RPM(ByRef gamewindowtext As String, ByRef Address As Integer, ByRef Value As Integer, ByRef bytes As Integer) As Object
Dim handle As Integer
Dim processID As Integer
Dim ProcessHandle As Integer
handle = FindWindow(vbNullString, gamewindowtext)
GetWindowThreadProcessId(handle, processID)
ProcessHandle = OpenProcess(&H1F0FFF, True, processID)
ReadProcessMem(ProcessHandle, Address, Value, bytes, 0)
CloseHandle(ProcessHandle)
End Function
Function 'WPM' doesn't return a value on all code paths. A null reference exception could occur at run time when the result is used.
Soll irgendetwas mit "End Function" sein.
Wenn ich das Programm builde & es ausführe & dann im Game schieße, schließt sich das Game mit der Meldung "Memory Access Violating" _________________
Topmaster_ Tutorial Leser
Anmeldedatum: 15.09.2007 Beiträge: 32
Verfasst am: 03.01.2008, 07:50
DAnke Bahamut das du das in VB.Net umgesetzt hast:)
Nur ne Frage kann ich irgenwie die Interger-variable auslesen??
Weil ich möchte die nicht verändern sondern auslesen.
So z.b ich habe z.b WoW,Silkroad oder irgenwein mmopg wo die lvl,hp,mp anzeige ist(im game) die kann man ja herrauslesen von den dma-adressen die sich nicht verändern.
Kann man das dann auch irgenwie in VB.net umsetzten das z.b in label1.Text = DAs herrausgelesene ist???
IsT das dann auch die Selbe deklaration was für befehle muss man bentzten?
Mfg.TOpmaster
Kaali_ Tutorial Leser
Anmeldedatum: 14.12.2007 Beiträge: 42
Verfasst am: 03.01.2008, 09:39
Sehr schön ... bald kann jeder selbst seine Game-Trainer bauen
Gruß Kaali
Bahamut_ « Moderator »
Anmeldedatum: 12.12.2006 Beiträge: 250
Verfasst am: 03.01.2008, 10:18
Zitat:
Function 'WPM' doesn't return a value on all code paths. A null reference exception could occur at run time when the result is used.
Ist ganz normal, funktioniert deshalb trotzdem.
Zitat:
Wenn ich das Programm builde & es ausführe & dann im Game schieße, schließt sich das Game mit der Meldung "Memory Access Violating"
Hm würd mal sagen dann liegts eher am Spiel, mit Pinball z.b funktionierts wunderbar.
Zitat:
Nur ne Frage kann ich irgenwie die Interger-variable auslesen??
Weil ich möchte die nicht verändern sondern auslesen.