ByVal [Résolu]

kitcarflo 22 Messages postés mercredi 6 décembre 2000Date d'inscription 10 août 2011 Dernière intervention - 28 mars 2011 à 09:41 - Dernière réponse : kitcarflo 22 Messages postés mercredi 6 décembre 2000Date d'inscription 10 août 2011 Dernière intervention
- 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 ?
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 28 mars 2011 à 09:58
3
Merci
ben ne le met pas ^^
suffit de bien déclarer ton API.

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

Merci Renfield 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de Renfield
Meilleure réponse
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 28 mars 2011 à 11:37
3
Merci
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

Merci Renfield 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de Renfield
kitcarflo 22 Messages postés mercredi 6 décembre 2000Date d'inscription 10 août 2011 Dernière intervention - 28 mars 2011 à 10:03
0
Merci
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.
Commenter la réponse de kitcarflo
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 28 mars 2011 à 10:24
0
Merci
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
Commenter la réponse de Renfield
kitcarflo 22 Messages postés mercredi 6 décembre 2000Date d'inscription 10 août 2011 Dernière intervention - 28 mars 2011 à 10:32
0
Merci
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
Commenter la réponse de kitcarflo
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 28 mars 2011 à 10:49
0
Merci
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
Commenter la réponse de Renfield
kitcarflo 22 Messages postés mercredi 6 décembre 2000Date d'inscription 10 août 2011 Dernière intervention - 28 mars 2011 à 11:01
0
Merci
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
Commenter la réponse de kitcarflo
kitcarflo 22 Messages postés mercredi 6 décembre 2000Date d'inscription 10 août 2011 Dernière intervention - 28 mars 2011 à 11:47
0
Merci
Ouaaaa sa marche, j'apprend un peu plus tous les jours. Maintenant il me reste un souci à régler et je serais bon.
Commenter la réponse de kitcarflo

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.