Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Ejecutar Un Proceso En 2º Plano En Vb6

Iniciado por [EX3], 14 de Marzo de 2005, 05:20:04 PM

« anterior - próximo »

[EX3]

 Wenas. Me he encontrado con un pequeño bache dificil de superar en mi proyecto. Estoy implementando las funciones de reproduccion de audio con DirectShow, para reproducir musica, no efectos de sonido.

El problema lo tengo cuando queria implementar la opcion de Looping a la hora de reproducir algun archivo de audio, como hace DirectSound, que automaticamente si se lo indicas reproduce en bucle continuo un sonido, pero he mirado como implementar un procedimiento interno que se encargue de revisar cada cierto tiempo si la posicion de lectura del archivo de audio ha llegado al final del mismo para devolverlo a la posicion 0 y que siga reproduciendose en bucle continuo y resulta que para que lo haga automaticamente la dll y no me interrumpa la ejecucion del programa principal tendria que hacer que se ejecutase el procedimiento en 2º plano. Esto en VB se puede conseguir con un control Timer, pero claro, esto en caso de usar un formulario, en codigo no he logrado declarar un control Timer, y la otra solucion que me viene a la cabeza seria implementar un Thread pero esto es sinonimo de suicidio en VB ya que se vuelve peligrosamente inestable :S

Existe algun otro mecanismo para poder ejecutar un procedimiento en 2º plano o solo es posible mediante Threads?

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

[EX3]

 Solucionado, creando un Timer mediante el API de Windows, que al fin y al cabo es lo mismo que el control Timer del VB pero sin objeto o control grafico, se puede ejecutar un procedimiento cada x tiempo a la vez que se ejecuta el programa principal sin alterar la ejecucion de este. Un ejemplo sencillo:

Private Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long

Private Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long

Dim TimerId As Long, Var As Long

Public Sub CreateTimer(Interval As Long)
TimerId = SetTimer(0&, 0&, Interval, AddressOf ProcTimer)
End Sub

Public Sub DeleteTimer()
Call KillTimer(0&, TimerId)
End Sub

Public Sub ProcTimer()
'Codigo que ejecutara el Timer, igual que el evento _Timer del control Timer en VB.
End Sub

Luego llamas desde el programa a CreateTimer() pasandole como argumento el intervalo de tiempo que debe pasar para que se ejecute el evento del Timer, ProcTimer(), y con DeleteTimer() destruyes el Timer.

Esto al contrario que los Threads va de lujo en VB6 y al fin y al cabo era lo que pretendia hacer en su dia con los Threads, ejecutar procedimientos simultaneos, asi que ya he matado dos pajaros de un tiro  :lol:

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

samsaga2

 Dios! VB6!!!

Solo veo tres motivos para usarlo en algun proyecto:

1. Hay un proyecto gordo del que no se quiere convertir a VB7 porque su gran coste
2. No hay webs de gastarse pelas en otro licencia (que no me creo que hayas pagado una para el VB6).
3. Masoquismo puro y duro.. como me pone que VB6 me flagele con esa poco coherencia en un lenguaje y esa gran cantidad de bugs que me ponen a mil y que jamas seran resueltos.

Personalmente en este caso me decanto por el punto 3.

PD: no te lo tomes a mal, solo es cachondeo


[EX3]

 Buena replica, jeje :D

1. Aun prefiero esperar a que VB.NET se integre un poco mas, saco mas y mejor provecho (ojo, segun mi punto de vista y mis conocimientos) programando en VB6 que en VB.NET y eso que es mejor y mas potente el 2º.

2. Voy a serte sincero, y espero que no este mal mencionar esto en el foro, mi VB es mas pirata que el capitan garfio :P Todo el VS6 Edicion Empresarial (VS6 + MSDN + Ejemplos + Recursos + Utilidades), me costo hace 5 años ya 4000 ptas de las antiguas y a mi parecer me ha salido muy rentable. Sobre lo de las webs no te entiendo, si me lo puedes aclarar un poco te lo agradeceria ;)

3. No te lo voy a negar, soy poco masoca en este aspecto, me quejo de sus malas caracteristicas pero lo acabo usando jeje Algun dia sueño con migrar al todo poderoso C/C++ pero de momento me apaño de sobra para hacer mis historias con el ya anticuado VB6 ;)

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Douch

 Offtopic: Yo conseguí un Visual Studio 6 Edición Profesional prostituyendo mi mano durante 12 horas (uoh). Me enteré de que Micro$oft necesitaba gente para un proyecto de reconocimiento de escritura y estuve durante varias semanas (4 horas semanales) delante de un ordenador escribiendo sobre una pantalla táctil.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.