Id de procesos [VB.NET]

Iniciado por Grave, 9 Noviembre 2007, 19:42 PM

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

Grave

Hola necesito ayuda con una funcion que devuelva las ids de procesos o algo parecido a la herramienta tasklist, para usarlo con la funcion AppAtivate, el codigo es este:

Dim ProcID as Integer
ProcID = CInt(TextBox1.Text)
AppActivate(ProcID)
My.Computer.Keyboard.SenKey(TextBox2.Text, True)
'Resto del codigo


Estoy aprendiendo y la verdad veo muy cutre que se tenga que escribir el ID del proceso (aunque tambien se puede escribir el titulo de la venta con una modificacion), lo que quisiera es que apareciera una pequeña lista en un listbox con los procesos y cuando se seleccione uno "ProcID" obtenga el valor de su ID, o tambien uno con los titulos de las ventanas, de paso si me ayudan con una funcion como el Sleep de VB6 porque a veces no envia las teclas si el cambio es muy rapido, espero y me ayuden
"y el conocimiento os hara libres"

Module Console1
   Console.Write("Hello Word")
   Console.ReadLine()
End Module
http://aion.cr0n0triger.operaunite.com/

gusman

Buenas.

Si quieres enumerar los procesos de la máquina, puedes extraer una matriz de procesos usando System.Diagnostics.Process.GetProcesses(), desde ahí puedes recorrer esta matriz para sacar la ID del mismo.

Un saludo.
No está muerto todo lo que yace y con extraños evos hasta la misma muerte puede morir.

Grave

Gracias por responder, eso de los nombres ya lo hice, pero de ahí a lo de las IDs no encontre nada, me serviria de mucho que me dijeras cual es la funcion para sacar las ID, o el algoritmo
"y el conocimiento os hara libres"

Module Console1
   Console.Write("Hello Word")
   Console.ReadLine()
End Module
http://aion.cr0n0triger.operaunite.com/

Grave

Solventado

Private Sub EnumProcesses()
' Enumerate all processes
Try
Dim Processes() As Process

' Timespans for individual process information
Dim tpt As TimeSpan
Dim tppt As TimeSpan
Dim tupt As TimeSpan

' Timespans for machine
Dim mtpt As TimeSpan
Dim mtppt As TimeSpan
Dim mtupt As TimeSpan

Dim i As Integer
Dim p As Process

If Not mcolProcesses Is Nothing Then
mcolProcesses = New Collection()
End If

If Me.lvProcesses.Items.Count > 0 Then
Me.lvProcesses.Items.Clear()
Me.lvProcessDetail.Items.Clear()
Me.lvThreads.Items.Clear()
End If
Processes = Process.GetProcesses()

For Each p In Processes
mcolProcesses.Add(p, p.Id.ToString())

' Get processor time and store
tppt = p.PrivilegedProcessorTime
tupt = p.UserProcessorTime
tpt = p.TotalProcessorTime

' Add the current process' times to total times.
mtpt = mtpt.Add(tpt)
mtppt = mtppt.Add(tppt)
mtupt = mtupt.Add(tupt)

' % User Processor Time
Dim strPUPT As String = CDbl(tupt.Ticks / tpt.Ticks).ToString("#0%")
' % Privileged Processor Time
Dim strPPPT As String = CDbl(tppt.Ticks / tpt.Ticks).ToString("#0%")

Dim strTPT As String
With tpt
strTPT = (.Days.ToString("00") & "." & .Hours.ToString("00") & ":" & .Minutes.ToString("00") & ":" & .Seconds.ToString("00"))
End With

With Me.lvProcesses.Items.Add(p.ProcessName & " (0x" & Hex(p.Id).ToLower() & ")")
.SubItems.Add(p.Id.ToString())
.SubItems.Add(strTPT)
.SubItems.Add(strPPPT)
.SubItems.Add(strPUPT)
End With
Next

' % Total User Processor Time
Dim mstrPUPT As String = CDbl(mtupt.Ticks / mtpt.Ticks).ToString("#0%")
' % Total Privileged Processor Time
Dim mstrPPPT As String = CDbl(mtppt.Ticks / mtpt.Ticks).ToString("#0%")

Dim mstrTPT As String
With mtpt
mstrTPT = (.Days.ToString("00") & "." & .Hours.ToString("00") & ":" & .Minutes.ToString("00") & ":" & .Seconds.ToString("00"))
End With

' Add entry for all processes
With Me.lvProcesses.Items.Add(PROCESS_NAME_TOTAL)
.SubItems.Add(PID_NA)
.SubItems.Add(mstrTPT)
.SubItems.Add(mstrPPPT)
.SubItems.Add(mstrPUPT)
End With
Catch exp As Exception
MessageBox.Show(exp.Message, exp.Source, MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
"y el conocimiento os hara libres"

Module Console1
   Console.Write("Hello Word")
   Console.ReadLine()
End Module
http://aion.cr0n0triger.operaunite.com/

mmob

No entiendo muy bien lo que quieres, pero puedes mirar esta direccion http://www.elguille.info/NET/dotnet/procesos.htm a ver si van por ahi los tiros.

elmaro

para usar el sleep pones esto

System.Threading.Thread.Sleep(2000)

2000 milisegundos = 2 segundos

saludos