Visual Basic - averiguar el "PID" de un proceso lanzado por vb

Life is soft - evento anual de software empresarial
 
Vista:

averiguar el "PID" de un proceso lanzado por vb

Publicado por Fancisco Martin (9 intervenciones) el 29/07/2005 14:03:18
Si Lanzo un aplicacion por ejemplo un CrystalReport desde vb, este cogera un Identificador de proceso "PID", Existe algun API que me diga que PID se le ha asignado ,

Mi problema es que tengo q presentar varios Crystal Reports uno detras de otro, de forma q cuando el usuario cierre uno yo pueda presentar el siguiente.
Si se que PID se le ha asignado podria hacer un bucle que de "no hacer hacer nada" hasta q el proceso fuera matado (osea que el usuario cerrara el crystalreport ) y aconinuacion lanzaria el siguiente.
Analogamente Si lanzo un docomento de word, y me interesa parar el programa hasta q el usuario cierre ese documento. sigo teniendo el mismo problema

Si me podeis ayudar os lo agradeceria un mucho

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:averiguar el

Publicado por Cecilia Colalongo (3116 intervenciones) el 29/07/2005 14:33:49
En el primer caso de Crystal Reports si trabajas con los objetos CRPE lo puedes controlar a través de los eventos por lo que no necesitas trabajar con las API's de procesos que de por sí en VB son bastante difíciles de implementar.

En cuanto a Word ocurre lo mismo, si trabajás con la referencia y los eventos (Dim WithEvents objWord As Word.Application) también lo puedes controlar por los mismos eventos y evitar trabajar con los PID.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 14
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

RE:averiguar el

Publicado por SuNcO (599 intervenciones) el 29/07/2005 21:38:35
Tambien puedes buscar la ventana con X titulo

' =================== En un modulo :

Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Public Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

Public TextoBuscar
Public ElHwnd As Double

Public Function EnumWindowsProc(ByVal hwnd As Long, ByVal lParam As Long) As Boolean
Dim lLength As Long
Dim strCaption As String

lLength = GetWindowTextLength(hwnd)
strCaption = String$(lLength, vbNullChar)
GetWindowText hwnd, strCaption, lLength + 1

If strCaption Like "*" & TextoBuscar & "*" Then
ElHwnd = hwnd
Form1.Timer1.Enabled = True
Form1.Timer2.Enabled = False
End If

EnumWindowsProc = True

End Function

' =================== En un Formulario :

Se ocupa un Boton y 2 Timers. Los Timers a Interval 100 y Enabled False

Private Sub Command1_Click()
TextoBuscar = "MSN Messenger"
Timer2.Enabled = True
ElHwnd = 0
End Sub

Private Sub Timer1_Timer()
If ElHwnd = 0 Then
Exit Sub
End If

If GetWindowTextLength(ElHwnd) = 0 Then
Timer1.Enabled = False
Timer2.Enabled = True
ElHwnd = 0
MsgBox "Cerrado"
' Aqu ipones otro TextoBuscar
End If
End Sub

Private Sub Timer2_Timer()
Call EnumWindows(AddressOf EnumWindowsProc, 0&)
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar