Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Enviar un "Enter" a una ventana tipo diálogo de otra aplicación conociendo su clase

Estas en el tema de Enviar un "Enter" a una ventana tipo diálogo de otra aplicación conociendo su clase en el foro de Visual Basic clásico en Foros del Web. Saludos a todos. Llevo gran parte del día intentando esto y no he dado con la solución. Tengo una aplicación desarrollada en Visual Basic 6 ...
  #1 (permalink)  
Antiguo 22/09/2011, 20:02
 
Fecha de Ingreso: septiembre-2011
Mensajes: 1
Antigüedad: 12 años, 7 meses
Puntos: 0
Pregunta Enviar un "Enter" a una ventana tipo diálogo de otra aplicación conociendo su clase

Saludos a todos.
Llevo gran parte del día intentando esto y no he dado con la solución.

Tengo una aplicación desarrollada en Visual Basic 6 y desde esta aplicación se abre un cuadro de diálogo de otra aplicación de un tercero que tiene un cuadro de texto y un botón tipo Aceptar establecido como Default.

Bien, lo que quiero hacer es, que desde mi aplicación hecha en Visual Basic 6, cuando se abra este cuadro de diálogo, enviarle cierta información de forma automática al cuadro de texto y de inmediato enviar la tecla Enter.


He estado haciendo intentos al saber la clase de la ventana de diálogo con el FindWindows. Hasta allí estoy bien, pues conozco la clase de la ventana de diálogo y esta función reconoce que está abierta dicha ventana..... lo que no he logrado aún es enviarle al cuadro de texto un string y que luego se envíe el Enter de forma automática.

Y aunado a todo esto, por ser una ventana de diálogo, aparentemente el código se "detiene" hasta que no se cierre.

Si alguien tiene la solución a algún experto sobre el tema me puede ayudar...

Saludos nuevamente.

Última edición por cdstefano; 22/09/2011 a las 20:03 Razón: Me faltó algo
  #2 (permalink)  
Antiguo 30/09/2011, 09:11
Avatar de davidcr  
Fecha de Ingreso: septiembre-2004
Ubicación: Cartago Costa Rica
Mensajes: 95
Antigüedad: 19 años, 6 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

Etiquetas: clase, enter, tipo, ventanas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:01.