ByVal

Résolu
kitcarflo Messages postés 22 Date d'inscription mercredi 6 décembre 2000 Statut Membre Dernière intervention 10 août 2011 - 28 mars 2011 à 09:41
kitcarflo Messages postés 22 Date d'inscription mercredi 6 décembre 2000 Statut Membre Dernière intervention 10 août 2011 - 28 mars 2011 à 11:47
Bonjour à tous le monde.

J’essaie de modifier un code de VB6 à VB.Net mais je suis bloqué sur une ligne.

Public Function GetFloat(ByVal Adress As Long) As Single
On Error Resume Next

hProcess = OpenProcess(PROCESS_READ_WRITE_QUERY, False, pid)
Test = ReadProcessMemory(hProcess, ByVal Address, sngbuffer, ByVal 4 ,0)
CloseHandle(hProcess)
GetFloat = sngbuffer
End Function

J'ai une erreur sur les 2 "ByVal" ou on me dit Expression attendu.

Sur tout le code, j'ai a peu prêt réussi à modifier le passage de VB6 à VB.Net sauf cette erreur.

Si quelqu'un se sent l'âme de m'aider ?

8 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
28 mars 2011 à 09:58
ben ne le met pas ^^
suffit de bien déclarer ton API.

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
28 mars 2011 à 11:37
normal, tu passes un Long dans ta procédure, il n'y a pas lieu.

déclare ton parametre en Integer, comme fait dans ta declaration d'API

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
3
kitcarflo Messages postés 22 Date d'inscription mercredi 6 décembre 2000 Statut Membre Dernière intervention 10 août 2011
28 mars 2011 à 10:03
Dévellope ton idée de déclarer l'api si tu veut bien.

J'ai éffectivement viré les ByVal, mais au final j'ai une érreur sur
"Test = ReadProcessMemory(hProcess, Address, sngbuffer, 4, 0)"

Address ==> "Address n'est pas déclaré, il peut être inaccessible en raison de son niveau de protection.

de la je peut générer soit :
- un Stub de méthode pour address
- un stub de propriété pour address
- un champ pour address.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
28 mars 2011 à 10:24
oui, tu as oublié un 'd'...

il faut voir ta declaration d'API, mais a priori ca roule comme tu l'a fait

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kitcarflo Messages postés 22 Date d'inscription mercredi 6 décembre 2000 Statut Membre Dernière intervention 10 août 2011
28 mars 2011 à 10:32
Excuse moi, je ne te suit pas trop, j'ai apprit tout seul la programmation VB.Net et apprend encore tous les jours.

j'ai oublié un 'd',,,, sa veut dire quoi ?

Pour les api voici:
'Option Strict Off
'Option Explicit On
Imports VB = Microsoft.VisualBasic
Imports System.Data.OleDb

Module Module1


    '=========================================================
    Private Declare Function GetForegroundWindow Lib "user32" () As Integer
    Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
    Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Integer, ByRef lpdwProcessId As Integer) As Integer
    Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Integer, ByVal blnheritHandle As Integer, ByVal dwAppProcessId As Integer) As Integer
    Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Integer) As Integer
    'Public Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Integer, ByRef lpBaseAddress As System.Delegate, ByRef lpBuffer As System.Delegate, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
    Public Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Integer, ByRef lpBaseAddress As Integer, ByRef lpBuffer As Single, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
    Public Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Integer, ByRef lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
28 mars 2011 à 10:49
place le ByVal ici :

Public Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer

et ajoutes le 'd' manquant au nom de ta variable :
Code Visual Basic :
Public Function GetFloat(ByVal Address As Long) As Single
On Error Resume Next

hProcess = OpenProcess(PROCESS_READ_WRITE_QUERY, False, pid)
Test = ReadProcessMemory(hProcess, Address, sngbuffer, ByVal 4 ,0)
CloseHandle(hProcess)
GetFloat = sngbuffer
End Function


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
kitcarflo Messages postés 22 Date d'inscription mercredi 6 décembre 2000 Statut Membre Dernière intervention 10 août 2011
28 mars 2011 à 11:01
Sérieux, pour le "d" de address, j'ai honte

Sinon j'ai effectué la manip que tu m'a dit au niveau de ByVal, la c'est une autre erreur qui apparaît. Je met en image l'erreur.
/URL Uploaded with ImageShack.us/img
0
kitcarflo Messages postés 22 Date d'inscription mercredi 6 décembre 2000 Statut Membre Dernière intervention 10 août 2011
28 mars 2011 à 11:47
Ouaaaa sa marche, j'apprend un peu plus tous les jours. Maintenant il me reste un souci à régler et je serais bon.
0
Rejoignez-nous