Hola muchachos.
Les pido ayuda con algo que quizás para mucho es una pavada.
He buscado en san google pero no he encontrado la solución.
He creado un simple archivo que ejecuta un archivo wav .
El problema es que se ejecuta, finaliza pero queda el proceso corriendo en memoria.
Si pongo Unload Me , se descarga el form de memoria pero no ejecuta el archivo.
Y con Me.Hide queda corriendo.


En form he escrito:

Private Sub Form_Load()
PlaySound "C:\sonido\Apagado de Windows XP.wav", SND_ASYNC
Me.Hide

End Sub

En un módulo:

Public Declare Function sndPlaySound Lib "winmm.dll" _
Alias "sndPlaySoundA" (ByVal lpszSoundName As String, _
ByVal uFlags As Long) As Long
Public Const SND_LOOP = &H8
Public Const SND_NODEFAULT = &H2
Public Const SND_SYNC = &H0
Public Const SND_ASYNC = &H1
Public Function PlaySound(FileName As String, F As Long) As Long
PlaySound = sndPlaySound(FileName, F)
End Function

¿Hace falta alguna Api para cerrar el proceso?

Gracias por su tiempo.
Imagen
Imagen
Si le pones un Timer al Unload ?

Private Sub Form_Load()
dim contador as integer = 1
PlaySound "C:\sonido\Apagado de Windows XP.wav", SND_ASYNC
Me.Hide
Tiemer1.Endable = True
End Sub

y en el timer un contador
que le de tiempo a ejecutar Playsound

Private Sub Timer1_....
contador = contador +1
if contador => 50 then
unload.mE
end if

algo mas o menos asi
Saludos
Imagen
Me marca en rojo esta línea: dim contador as integer = 1

Quité = 1, compilé y ejecuta, el problema es que me sale este cartel:

Run-time error 424
Objet required.

Al darle aceptar, efectivamente se cierra el proceso.
Imagen
Imagen
Ignaro mayor de BsAS escribió:Me marca en rojo esta línea: dim contador as integer = 1

Quité = 1, compilé y ejecuta, el problema es que me sale este cartel:

Run-time error 424
Objet required.

Al darle aceptar, efectivamente se cierra el proceso.
Se pone:

Código: Seleccionar todo

Dim contador As Integer
contador = 1
(en 2 lineas)
Imagen
El "contador" declarlo a nivel formulario
Otra alternativa seria utilizar un text1.text = 1
en el timer lo mismo pero en vez de "contador" utilizar el text
Text1.Text = Text1.Text + 1
la propiedad visible del text1 en "false " para que no se vea
Imagen
Bueno lo que entiendo es que se reproduce un sonido, cuando este termine la aplicación se cierra.

Puedes usar la Flag SND_SYNC, lo que hace que la API se reproduzca en el mismo thread que la aplicación, es como un WaitForObject, no devuelve el control del programa hasta que finalice, entonces el code quedaría así.

Código: Seleccionar todo

Private Sub Form_Load()
PlaySound "C:\sonido\Apagado de Windows XP.wav", SND_SYNC
Unload Me
End Sub
Saludos!
We do what we must, because, we can-> [www.youtube.com/watch?v=Y6ljFaKRTrI]
Pasa a saludar: NeoDark-Labs.BlogSpot.mx
<<<<Proyectos en curso>>>>
[+]Restauración de SSDT
[+]Driver v3 - Ocultar drivers
[+]Anti-rootkit
xserpientex escribió:El "contador" declarlo a nivel formulario
Otra alternativa seria utilizar un text1.text = 1
en el timer lo mismo pero en vez de "contador" utilizar el text
Text1.Text = Text1.Text + 1
la propiedad visible del text1 en "false " para que no se vea
Es que todo lo puse en el form, compañero.
Aclaro que la idea es ejecutar el archivo remotamente y obvio que no se vea.
Orlando9427, gracias . Veré como implementar esa Api que ya la había visto en una aplicación para ejecutar archivos de música. Pero el código es bastante extenso...
Imagen
Imagen
Ignaro mayor de BsAS escribió:
xserpientex escribió:El "contador" declarlo a nivel formulario
Otra alternativa seria utilizar un text1.text = 1
en el timer lo mismo pero en vez de "contador" utilizar el text
Text1.Text = Text1.Text + 1
la propiedad visible del text1 en "false " para que no se vea
Es que todo lo puse en el form, compañero.
Aclaro que la idea es ejecutar el archivo remotamente y obvio que no se vea.
Orlando9427, gracias . Veré como implementar esa Api que ya la había visto en una aplicación para ejecutar archivos de música. Pero el código es bastante extenso...

Don pero si aqui orlando te coloco la solucion

PlaySound "C:\sonido\Apagado de Windows XP.wav", SND_ASYNC

PlaySound "C:\sonido\Apagado de Windows XP.wav", SND_SYNC


Tu colocas la bandera asyncrona SND_ASYNC(creo asi se escribe)
solo es cuestion de colocar sus opuesto.SND_SYNC
Private Sub Form_Load()
PlaySound "C:\sonido\Apagado de Windows XP.wav", SND_SYNC
End
End Sub
Indetectables RAT v.0.9.5

@Indetectables Team
Responder

Volver a “VB/.NET”