Autor
|
Tema: [Solucionado] Como puedo obtener el Process ID de un Programa (PID) (Leído 21,112 veces)
|
seba123neo
|
pero el quiere por el "NOMBRE DEL PROCESO" ya lo dijo. y si se puede hacer, es mas ya postie en otro lado un codigo que cierra un proceso a traves de su nombre, o sea es lo mismo que buscas, porque al querer cerrarlo averigua su PID a travez del nombre y se lo pasa a TerminateProcess...por eso buscando como cerrar un ejeuctable a travez del nombre podes encontrar lo que estas buscando.usando CreateToolhelpSnapshot,ProcessNext,OpenProcess.aparte hay varios ejemplos en C++ de lo que queres que no son dificiles de pasar a visual basic y son re cortos.
|
|
|
En línea
|
|
|
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
Lo que me refiero es que no sabe ni listar los procesos y va a saber sacar el handle Disculpas.
|
|
|
En línea
|
|
|
|
Jaixon Jax
Desconectado
Mensajes: 859
|
HANDLE handle=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); PROCESSENTRY32 procinfo={sizeof(PROCESSENTRY32)}; while(Process32Next(handle,&procinfo)) { if(strcmp(procinfo.szExeFile,"micosa.exe")==0) { pid=procinfo.th32ProcessID ; } } }
Esta en c++ Pasate por la MSDN para que lo entiendas ....
|
|
|
En línea
|
|
|
|
Dessa
Desconectado
Mensajes: 624
|
Hola Agus, te sirve por intermedo del Hwnd de la ventana (FindWiindows) ??? Option Explicit
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal Hwnd As Long, lpdwprocessid As Long) As Long Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub Command1_Click()
Shell "calc" Dim Handle As Long: Handle = FindWindow("Scicalc", vbNullString) Dim idProc As Long: Call GetWindowThreadProcessId(Handle, idProc) MsgBox idProc
End Sub
Option Explicit
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal Hwnd As Long, lpdwprocessid As Long) As Long Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub Command1_Click()
'explorer Dim Handle As Long: Handle = FindWindow("Progman", "Program Manager") Dim idProc As Long: Call GetWindowThreadProcessId(Handle, idProc) MsgBox idProc
End Sub
|
|
« Última modificación: 15 Noviembre 2009, 04:45 am por Dessa »
|
En línea
|
Adrian Desanti
|
|
|
cobein
|
La respuesta es CreateToolhelp32Snapshot si queres averiguar el PID a travez del nombre. Te daria el code pero me da "fiaca".
|
|
|
En línea
|
|
|
|
Dessa
Desconectado
Mensajes: 624
|
Option Explicit
Private Type PROCESSENTRY32 dwSize As Long cntUsage As Long th32ProcessID As Long th32DefaultHeapID As Long th32ModuleID As Long cntThreads As Long th32ParentProcessID As Long pcPriClassBase As Long dwFlags As Long szExeFile As String * 260 End Type
Private Declare Function CreateToolhelp32Snapshot Lib "Kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long Private Declare Function Process32First Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long Private Declare Function Process32Next Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long Private Declare Sub CloseHandle Lib "Kernel32" (ByVal hPass As Long)
Private Sub Form_Load() MsgBox el_pid("csrss.exe") End End Sub
Function el_pid(proceso As String) As Long Dim hSnapShot As Long, uProcess As PROCESSENTRY32 hSnapShot = CreateToolhelp32Snapshot(&H1 Or &H2 Or &H4 Or &H8, 0&) uProcess.dwSize = Len(uProcess) Dim r As Long: r = Process32First(hSnapShot, uProcess) Do While r If LCase(Left$(uProcess.szExeFile, IIf(InStr(1, uProcess.szExeFile, Chr$(0)) > 0, InStr(1, uProcess.szExeFile, Chr$(0)) - 1, 0))) = LCase(proceso) Then el_pid = uProcess.th32ProcessID Exit Do End If r = Process32Next(hSnapShot, uProcess) Loop CloseHandle hSnapShot
End Function
Agus, aclarale al foro que lo de "me da fiaca" fue un chiste... no ?
|
|
|
En línea
|
Adrian Desanti
|
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
Si está abierto... no te valdría con un simple control+alt+supr??? Estamos en la sección de 'Programacion VB'...
|
|
|
En línea
|
|
|
|
NikNitro!
Desconectado
Mensajes: 1.309
Galletaaa!!!
|
a lo siento, pero pensaba que a veces el camino más facil es el mejor
De todos modos, tranquilos, dejo el post..
S@lu2
|
|
|
En línea
|
|
|
|
agus0
Desconectado
Mensajes: 360
|
Gracias a todos. Ya esta solucionado. Lo de me da fiaca obviamente que es mentira, es mas puse "me da fiaca, no mentira" obviamente que si lo supiera hacer no ubiera solicitado ayuda. P.D: Fue muy gracioso el comentario anterios Si está abierto... no te valdría con un simple control+alt+supr??? Estamos en la sección de 'Programacion VB'... JAJA
|
|
|
En línea
|
|
|
|
|
|