problemas con GetModuleFileNameExA.

Iniciado por rembolso, 15 Marzo 2012, 19:46 PM

0 Miembros y 1 Visitante están viendo este tema.

rembolso

hola. e decido jugar con algunas apis, para eso quiese enlistar en un listview los procesos, sus pid, y su ruta pero tengo un inconveniente con la ruta ...
Código (vb) [Seleccionar]
'veran en vb6 con esta api no tengo ningun problema :

Private Declare Function GetModuleFileNameExA Lib "PSAPI.DLL" (ByVal _  
   hProcess As Long, _  
   ByVal hModule As Long, ByVal _  
   lpFilename As String, _  
   ByVal nSize As Long) As Long


y adapte la api en .net de esta forma

Código (vbnet) [Seleccionar]
<System.Runtime.InteropServices.DllImport("PSAPI.DLL")> _
   Private Shared Function GetModuleFileNameExA(ByVal hWnd As System.IntPtr, ByVal hModule As Int32, ByVal lpFilename As String, ByVal nSize As Int32) As Integer
   End Function


pero al querer adquirir la ruta de cierto proceso no sale nada  porque sera ?
mi codigo

Código (vbnet) [Seleccionar]

       Dim Proceso As Process, ret As Integer, hola As String

       For Each Proceso In Process.GetProcesses

           If Proceso.ProcessName = "notepad" Then

               hola = Space(255)
               ret = GetModuleFileNameExA(Proceso.Handle, 0, hola, 255)
             
               MsgBox(Len(Microsoft.VisualBasic.Left(hola, ret))) ' no optengo nada ??
           Else
             
           End If


       Next


Alguna sugerencia. gracias ..
:( :( :( :(

seba123neo

no hace falta usar api para eso:

Código (vbnet) [Seleccionar]
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
            For Each p As Process In Process.GetProcesses()
                Debug.WriteLine(p.Modules(0).FileName)
            Next p
        Catch p As Exception
            Debug.WriteLine(p.ToString)
        End Try
    End Sub
End Class


saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

rembolso

a ok . muchas gracias. pero  lo que pasa de esa forma esque cuando lo invoco tengo el mensaje de permiso denegado . por eso me tiro mas a las apis  ;-)