vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Windows API
Speicheradresse vom Typ Integer auslesen 
Autor: Jimknopf
Datum: 17.02.05 02:46

Hallo erstmal,

ich bin relativ ein Anfänger in Sachen VB und eigentlich ist mein Fachgebiet PHP, nur leider komme ich nicht drumherum mich mit VB zu beschäftigen.
Folgendes Problem:
Ich benötige ein Script, welches aller 30 sek. eine Webseite aufruft und einen Wert vom Typ String sendet. Dieser Wert soll von einem Spiel aus dem Speicher ausgelesen werden.
Soweit so gut, habe ich das auch hinbekommen und zwar habe ich die API "ReadProcessMemory" dazu benutzt.
Nur möchte ich aber auch zusätzlich noch eine andere Seite aufrufen und zwar genau dann, wenn das Spiel beendet ist. Und ganau an dieser Stelle fangen meine Probleme an!
Denn die Speicheradresse, welche den Wert für das Spielende hat, ist vom Typ Integer (1 Byte). Nur leider funtzt das bei mir mit den ReadProcessMemory nicht. Da der Wert im Speicher vom Typ Integer ausgibt. Hier mal ein Beispielcode:

'1. Adresse:  &H2F7E684 = Servername
'2. Adresse:  &H122A220 = Gibt beim laufenden Spiel 1und bei Spielende 0 zurück
 
 
Const hMemAddr = &H2F7E684  'Speicheradressen (siehe oben)
Const sProcessID = "Fenstertitel meines Games" 'das sagt eigentlich schon alles 
' ;)
 
Private Sub Form_Load()
 
   Dim hwnd As Long
   Dim pid As Long
   Dim pHandle As Long
 
 
   hwnd = FindWindow(vbNullString, sProcessID)
   If (hwnd = 0) Then
      MsgBox "Window not found!"
      Exit Sub
   End If
 
 
   GetWindowThreadProcessId hwnd, pid
 
   pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
   If (pHandle = 0) Then
      MsgBox "Couldn't get a process handle!"
      Exit Sub
   End If
   Timer1.Enabled = True
 
End Sub
 
 
Private Sub Timer1_Timer()
 
   ' Declare some variables we need
   Dim hwnd As Long
   Dim pid As Long
   Dim pHandle As Long
   Dim sOutput As String * 20 ' Logisch, definiert sOutput als String
 
   hwnd = FindWindow(vbNullString, sProcessID)
   If (hwnd = 0) Then Exit Sub
 
   GetWindowThreadProcessId hwnd, pid
 
 
   pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
   If (pHandle = 0) Then Exit Sub
 
   Call ReadProcessMemory(pHandle, hMemAddr, sOutput, 20, 0)
 
   Text1.Text = sOutput
 
   CloseHandle hProcess
End Sub
Das Modul:
Public Const PROCESS_ALL_ACCESS = &H1F0FFF
 
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName _
  As String, ByVal lpWindowName As String) As Long
Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, _
lpdwProcessId As Long) As Long
Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, _
ByVal lpBaseAddress As Any, ByVal lpBuffer As Any, ByVal nSize As Long, _
lpNumberOfBytesWritten As Long) As Long
Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, _
ByVal lpBaseAddress As Any, ByVal lpBuffer As Any, ByVal nSize As Long, _
lpNumberOfBytesWritten As Long) As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Bei diesem Code gibt er genau das aus, was er ausgeben sollte, nämlich den Servernamen des Spieles.
Aber sobald ich die zweite Adresse (welche den Wert: 0 oder 1 zurückgibt ) benutze und "sOutput" als Integer definiere, erhalte ich die Fehlermeldung, dass die Typen unverträglich sind.
Wie schaffe ich es die 1 bzw. die 0 auszulesen?
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Speicheradresse vom Typ Integer auslesen2.733Jimknopf17.02.05 02:46
Re: Speicheradresse vom Typ Integer auslesen1.779ModeratorMartoeng17.02.05 18:50
Re: Speicheradresse vom Typ Integer auslesen1.647Jimknopf17.02.05 20:06
Re: Speicheradresse vom Typ Integer auslesen1.708ModeratorMartoeng17.02.05 21:15
Re: Speicheradresse vom Typ Integer auslesen1.715Jimknopf17.02.05 22:14
Re: Speicheradresse vom Typ Integer auslesen1.668ModeratorMartoeng17.02.05 22:19
Re: Speicheradresse vom Typ Integer auslesen1.640Jimknopf17.02.05 23:17
Re: Speicheradresse vom Typ Integer auslesen1.626ModeratorMartoeng17.02.05 23:46
Re: Speicheradresse vom Typ Integer auslesen1.605Jimknopf18.02.05 02:31
Re: Speicheradresse vom Typ Integer auslesen1.638jens5218.02.05 09:23
Re: Speicheradresse vom Typ Integer auslesen1.643Jimknopf18.02.05 10:34
Re: Speicheradresse vom Typ Integer auslesen1.594jens5218.02.05 13:22
Re: Speicheradresse vom Typ Integer auslesen1.618Jimknopf18.02.05 14:14
Re: Speicheradresse vom Typ Integer auslesen1.672Jimknopf18.02.05 19:30
Re: Speicheradresse vom Typ Integer auslesen1.669ModeratorMartoeng18.02.05 19:41
Re: Speicheradresse vom Typ Integer auslesen1.661Jimknopf18.02.05 20:29
Re: Speicheradresse vom Typ Integer auslesen1.835ModeratorMartoeng18.02.05 20:50
Re: Speicheradresse vom Typ Integer auslesen1.690Jimknopf18.02.05 21:14
Re: Speicheradresse vom Typ Integer auslesen1.512Jimknopf09.03.05 12:47
Re: Speicheradresse vom Typ Integer auslesen1.634ModeratorMartoeng10.03.05 22:59
Re: Speicheradresse vom Typ Integer auslesen1.548Jimknopf12.03.05 09:28
Re: Speicheradresse vom Typ Integer auslesen1.637ModeratorMartoeng12.03.05 18:51

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel