Programación General > Visual Basic 6.0 e inferiores
Commondialog De Forma No Modal
(1/1)
elmango80:
Saludos a todos los participantes de este foro!
Estoy utilizando el objeto CommonDialog y tengo un problema, el cual radica en que este objeto cuando abre las ventanas de dialogo, lo hace de forma modal. Resulta que durante la ejecucion de mi programa estoy recibiendo constantemente datos por el puerto serial y siempre debo estar pendiente de esto, pero como sabran cuando se presenta un formulario de forma modal el programa deja de ejecutar cualquier codigo que pertenezca a otro formulario hasta que este se cierre.
Bueno agradeceria mucho si alguien me puede ayudar con este problema.
:devil: ----------- o ----------- :angel:
Brroz:
Hola elmango80.
Nuevamente la solución es usar un thread distinto. Usa un nuevo proceso para realizar la lectura del puerto:
Crea un programa independiente para atender la lectura del puerto. Luego llama una función de este estilo pasándo como parámetro la ruta y nombre de tal ejecutable:
--- Código: Text --- Option Explicit Private Const STILL_ACTIVE = &H103Private Const PROCESS_QUERY_INFORMATION = &H400Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessID As Long) As LongPrivate Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As LongPrivate Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Public Sub LeerPuerto(Byval ExeLeerPuerto as string) On Error GoTo Err_Sinc Dim l1 As Long, lRc As Long l1 = OpenProcess(PROCESS_QUERY_INFORMATION, False _ , Shell(ExeLeerPuerto, vbMinimizedNoFocus)) Do GetExitCodeProcess l1, lRc Sleep 100 DoEvents Loop While lRc = STILL_ACTIVE MsgBox "Finalizó la lectura del puerto" Exit Sub Err_Sinc: MsgBox "Fallo al intentar arrancar lectura del puerto." & String(2, vbCrLf) _ & "(" & Err.Number & ") " & Err.Description, vbCritical, "Sincronizar" End Sub Si quieres también puedes eliminar el ciclo y una vez lanzado el programa olvidarte.
Eso sí, si necesitas comunicación entre los dos programas... tendrás que currártelo. Mira si quieres este post por si te sirve http://foros.solocodigo.com/index.php?showtopic=13730 aunque roxiii aún no lo ha cerrado...
Suerte.
Navegación
Ir a la versión completa