GetHProcExe probléme d'upgrade

VladDracula Messages postés 10 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 12 juin 2009 - 30 mars 2008 à 16:12
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 30 mars 2008 à 17:32

5 réponses

VladDracula Messages postés 10 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 12 juin 2009
30 mars 2008 à 16:16
o_O petit problème de message on dirais ... Pas moyen de réedit ?

J'ai une fonction en vb6 que je voudrais mettre en vb.net

Public Function GetHProcExe(ByRef strExeName As String) As Integer
Dim hSnap As Integer
'Create a snapshot of all of the processes, and information
'about them (saving the handle so we can iterate through the
'processes)
hSnap = CreateToolhelpSnapshot(2, 0)

Dim peProcess As PROCESSENTRY32
'UPGRADE_ISSUE: La fonction LenB n'est pas prise en charge. Cliquez ici : 'ms-help://MS.VSExpressCC.v80/dv_commoner/local/redirect.htm?keyword="367764E5-F3F8-4E43-AC3E-7FE0B5E074E2"'
peProcess.dwSize = LenB(peProcess)

Dim nProcess As Integer
nProcess = Process32First(hSnap, peProcess)

'Loop through the processes until we find the one we want
'and return its process handle
Do While nProcess
If StrComp(Trim(peProcess.szExeFile), strExeName, CompareMethod.Text) = 0 Then
GetHProcExe = OpenProcess(PROCESS_ALL_ACCESS, False, peProcess.th32ProcessID)
Exit Function
End If
peProcess.szExeFile = vbNullString
nProcess = Process32Next(hSnap, peProcess)
Loop
CloseHandle(hSnap)
End Function

Mon preblème est le LenB que j'ai changer par un Marshal.SizeOf mais sa marche pas ... J'ai une erreur de PInvoke.

Si quelqu'un peut m'aider sur ce coup la ce serais sympa ^^
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
30 mars 2008 à 16:43
As-tu essayer avec peProcess.dwSize = peProcess.Lenght

A vérifier le cas échéant si c'est bien la bonne valeur qui est renvoyer

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 mars 2008 à 16:58
Fuites mémoire, hSnap non refermé quand trouvé.

OpenProcess(PROCESS_ALL_ACCESS,...)
tu ne risques pas d''obtenir de handle souvent sous Vista avec ALL_ACCESS.

ciao...
BruNews, MVP VC++
0
VladDracula Messages postés 10 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 12 juin 2009
30 mars 2008 à 17:24
Hum ... PROCESSENTRY32 est une structure donc il ne possède pas de lenght ^^

Sinn bien vu BruNews pour la fuite de mémoire. Je suis encore sous XP ... le problème vient surtout du fait que peProcess n'a aucune valeur quand je lui demande sa taille ...

Un ami a compilé la source sous vb6 et sa marche nikel ... il lui fait le mm avertissement mais compile est exécute très bien.
0

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

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 mars 2008 à 17:32
Dans la boucle:
If StrComp(Trim(peProcess.szExeFile), strExeName, CompareMethod.Text) = 0 Then
GetHProcExe = OpenProcess(PROCESS_ALL_ACCESS, False, peProcess.th32ProcessID)
Exit Function
End If

il manque le CloseHandle(hSnap).

ciao...
BruNews, MVP VC++
0
Rejoignez-nous