Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Grave en 9 Noviembre 2007, 19:42 pm



Título: Id de procesos [VB.NET]
Publicado por: Grave en 9 Noviembre 2007, 19:42 pm
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:
Código:
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


Título: Re: Id de procesos [VB.NET]
Publicado por: gusman en 9 Noviembre 2007, 21:19 pm
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.


Título: Re: Id de procesos [VB.NET]
Publicado por: Grave en 12 Noviembre 2007, 20:30 pm
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


Título: Re: Id de procesos [VB.NET]
Publicado por: Grave en 13 Noviembre 2007, 21:35 pm
Solventado
Código:
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


Título: Re: Id de procesos [VB.NET]
Publicado por: mmob en 14 Noviembre 2007, 09:56 am
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.


Título: Re: Id de procesos [VB.NET]
Publicado por: elmaro en 6 Diciembre 2007, 15:41 pm
para usar el sleep pones esto

Código:
System.Threading.Thread.Sleep(2000)

2000 milisegundos = 2 segundos

saludos