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
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.
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
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
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.
para usar el sleep pones esto
System.Threading.Thread.Sleep(2000)
2000 milisegundos = 2 segundos
saludos