Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/09/2011, 09:11
Avatar de davidcr
davidcr
 
Fecha de Ingreso: septiembre-2004
Ubicación: Cartago Costa Rica
Mensajes: 95
Antigüedad: 19 años, 7 meses
Puntos: 7
Respuesta: Enviar un "Enter" a una ventana tipo diálogo de otra aplicación conociendo

Hola,

Me imagino que ya has intentado todas las maneras posibles usando SendKeys ??

http://www.forosdelweb.com/f14/vb6-e...activa-830717/


Tambien te dejo este codigo.. Lo que hace es permitir cerrar una ventana de un tercero conociendo el nombre .exe ejecutandose. Talvez puedas modificarlo para que envie Enter en lugar de comando de cierre.


Cita:
Si necesitas cerrar una aplicación que se está ejecutando y sólo conoces el nombre del .exe puedes emplear algo como lo que veremos a continuación.

Mostraremos cómo obtener el nombre del exe(y otros datos) de todos los programas que se están ejecutando y cómo cerrar uno de esos procesos. En el ejemplo que acabo de hacer guardo los nombres y los identificadores de proceso en un listbox (es como una lista de tareas de windows) y pulsando un botón se cierra el proceso seleccionado.

Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Sub CloseHandle Lib "kernel32" (ByVal hPass As Long)
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 TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Const PROCESS_TERMINATE = &H1
Const PROCESS_CREATE_THREAD = &H2
Const PROCESS_VM_OPERATION = &H8
Const PROCESS_VM_READ = &H10
Const PROCESS_VM_WRITE = &H20
Const PROCESS_DUP_HANDLE = &H40
Const PROCESS_CREATE_PROCESS = &H80
Const PROCESS_SET_QUOTA = &H100
Const PROCESS_SET_INFORMATION = &H200
Const PROCESS_QUERY_INFORMATION = &H400
Const STANDARD_RIGHTS_REQUIRED = &HF0000
Const SYNCHRONIZE = &H100000
Const PROCESS_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

'Para llenar el listbox con los procesos
Sub RellenaLista()
Dim hSnapShot As Long
Dim uProceso As PROCESSENTRY32
Dim res As Long

List1.Clear
hSnapShot = CreateToolhelpSnapshot(2&, 0&)
If hSnapShot <> 0 Then
uProceso.dwSize = Len(uProceso)
res = ProcessFirst(hSnapShot, uProceso)
Do While res
List1.AddItem Left$(uProceso.szExeFile, InStr(uProceso.szExeFile, Chr$(0)) - 1)
List1.ItemData(List1.NewIndex) = uProceso.th32ProcessID
res = ProcessNext(hSnapShot, uProceso)
Loop
Call CloseHandle(hSnapShot)
End If

End Sub

'Para cerrar el proceso seleccionado
Private Sub Command1_Click()
Dim hProcess As Long, iResult As Long

If List1.ListIndex = -1 Then
Beep
MsgBox "Debe seleccionar una aplicación"
Else
hProcess = OpenProcess(PROCESS_TERMINATE, True, List1.ItemData(List1.ListIndex))
iResult = TerminateProcess(hProcess, 99)
CloseHandle hProcess
Sleep (100)
RellenaLista
End If
End Sub