Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Eleкtro

#8961
Hola,
Todo eso está muy bien, pero... ¿y si comentas en que lenguaje lo estás haciendo?...

Como iniciar un proceso externo: http://msdn.microsoft.com/en-us/library/system.diagnostics.process.start%28v=vs.100%29.aspx
process.start(".\AutoIt3.exe", "Argumentos si quieres")

Para lo del lapsus de tiempo usa un Timer si no tienes la necesidad de mostrar la cuenta regresiva: http://msdn.microsoft.com/en-us/library/system.timers.timer%28v=vs.90%29.aspx
timer1.interval = 5000 ' ms

...De lo contrario usa un TimeSpan junsto a un StopWatch si quieres ir mostrando la cuenta atrás hasta llegar a "00" "00" "00" en los TextBoxes: http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch%28v=vs.90%29.aspx   http://msdn.microsoft.com/en-us/library/system.timespan%28v=vs.90%29.aspx

Código (vbnet) [Seleccionar]
#Region " Time Remaining "

   ' [ Time Remaining ]
   '
   ' // By Elektro H@cker
   '
   ' Examples :
   ' CountDown_Start()

   Dim TotalTime As Long = 10000 ' ms
   Dim Time_Elapsed_Watch As New Stopwatch
   Dim Time_Remaining_Span As New TimeSpan()
   Dim WithEvents CountDown_Timer As New Timer

   Private Sub CountDown_Start()
       Time_Remaining_Span = TimeSpan.FromMilliseconds(TotalTime + 1000)
       Time_Elapsed_Watch.Start()
       CountDown_Timer.Start()
   End Sub

   Private Sub CountDown_Timer_Tick(sender As Object, e As EventArgs) Handles CountDown_Timer.Tick
       Dim TimeRemaining As TimeSpan = Time_Remaining_Span - Time_Elapsed_Watch.Elapsed

       Label1.Text = "Elapsed : " & _
                    String.Format("{0:00}:{1:00}:{2:00}", _
                    Time_Elapsed_Watch.Elapsed.Hours, _
                    Time_Elapsed_Watch.Elapsed.Minutes, _
                    Time_Elapsed_Watch.Elapsed.Seconds)

       Label2.Text = "TimeLeft: " & _
                     String.Format("{0:00}:{1:00}:{2:00}", _
                     CLng(Math.Floor(TimeRemaining.TotalHours)) Mod 999999999999999999, _
                     CLng(Math.Floor(TimeRemaining.TotalMinutes)) Mod 60, _
                     CLng(Math.Floor(TimeRemaining.TotalSeconds)) Mod 60)

       If TimeRemaining.TotalSeconds <= 0 OrElse Time_Elapsed_Watch.ElapsedMilliseconds > TotalTime Then
           Time_Elapsed_Watch.Reset()
           CountDown_Timer.Stop()
       End If

   End Sub

   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       CountDown_Start()
   End Sub

#End Region


EDITO: Como reproducir un archivo que no séa WAV:

Cita de: http://www.daniweb.com/software-development/vbnet/threads/119460/playing-mp3-file-with-vb.net
Código (vbnet) [Seleccionar]
    On Error GoTo ErrMsg
    AxMMControl1.Wait = True
    AxMMControl1.FileName = OpenFileDialog1.FileName
    AxMMControl1.Command = "Open"
    AxMMControl1.Command = "Play"
    Exit Sub
    ErrMsg:
    MsgBox(Err.Description)
    End Sub

O usando APIs: http://stackoverflow.com/questions/10244068/playing-a-wav-mp3-file-at-the-start-of-a-vb2010-windows-form


PD: Acerca de la interfaz yo modificaría "Ejecutar sonido" por "Reproducir sonido" y "Ejecutar programa" por "Iniciar proceso".

Saludos.
#8962
Redimensionar una imágen:

Código (vbnet) [Seleccionar]
#Region " Resize Image "

    ' [ Save Resize Image Function ]
    '
    ' Examples :
    '
    ' PictureBox1.Image = Resize_Image(System.Drawing.Image.FromFile("C:\Image.png"), 256, 256)

    Private Function Resize_Image(ByVal img As Image, ByVal Width As Int32, ByVal Height As Int32) As Bitmap
        Dim Bitmap_Source As New Bitmap(img)
        Dim Bitmap_Dest As New Bitmap(CInt(Width), CInt(Height))
        Dim Graphic As Graphics = Graphics.FromImage(Bitmap_Dest)
        Graphic.DrawImage(Bitmap_Source, 0, 0, Bitmap_Dest.Width + 1, Bitmap_Dest.Height + 1)
        Return Bitmap_Dest
    End Function

#End Region







Redimensionar una imágen a escala:

Código (vbnet) [Seleccionar]
#Region " Scale Image "

    ' [ Save Scale Image Function ]
    '
    ' Examples :
    '
    ' PictureBox1.Image = Scale_Image(System.Drawing.Image.FromFile("C:\Image.png"), 3) ' Scales to x3 of original size

    Private Function Scale_Image(ByVal img As Image, ByVal ScaleFactor As Single)
        Dim Bitmap_Source As New Bitmap(img)
        Dim Bitmap_Dest As New Bitmap(CInt(Bitmap_Source.Width * ScaleFactor), CInt(Bitmap_Source.Height * ScaleFactor))
        Dim Graphic As Graphics = Graphics.FromImage(Bitmap_Dest)
        Graphic.DrawImage(Bitmap_Source, 0, 0, Bitmap_Dest.Width + 1, Bitmap_Dest.Height + 1)
        Return Bitmap_Dest
    End Function

#End Region
#8963
@usherfiles

Para hacer un código más o menos legible (no para los demás, sinó especiálmente para ti), te recomiendo que la redirección la escribas al final del comando, no en medio,
y que agrupes las aplicaciones que vas a matar, que uses la indentación y los saltos de líena, en fín no arrejuntar todo el código línea por línea, la lectura de esos códigos es dificil cuando se trata de códigos muy largos.

Sobre el resto, puedes usar FOR para simplificar las cosas.

No cuesta nada hacer las cosas de forma ordenada:

Código original:
Código (DOS) [Seleccionar]
@ECHO OFF
start /wait taskkill>nul /IM explorer.exe /F
start /wait taskkill>nul /IM Teamviewer.exe /F
start /wait taskkill>nul /IM Teamviewer_Service.exe /F
start /wait taskkill>nul /IM tv_w32.exe /F
msg * Por favor espere un momento, Estamos tratando de conectarlo al servidor (esto puede tardar HASTA 2 minutos)
msg * Y no se preocupe ,el contador del ciber empieza luego de la comprobacion
Set verify=0
:verify
timeout>nul 3
set /a verify=%verify% + 1
IF %verify%==50 goto :verify65
IF EXIST "\\SERVERG4\Documentos c\Comprobador\Verificador.txt" goto :INICIO
IF NOT EXIST "\\SERVERG4\Documentos c\Comprobador\Verificador.txt" goto :verify
:VERIFY65
shutdown -r -f -t 4 -c "Disculpe, durante 2 minutos no se ha podido conectar con el servidor, Esta pc se reiniciará, si esto pasa mas de 2 veces, hable con el cajero de turno"
:INICIO
xcopy "\\SERVERG4\Documentos c\Comprobador de red\UPDATER.bat" C:\Windows\System32 /y
cls
START /W UPDATER.bat
START 3.vbs
exit


Código editado:
Código (dos) [Seleccionar]

@ECHO OFF

:: Set Apps
Set "Applications=Explorer.exe;Teamviewer.exe;Teamviewer_Service.exe;tv_w32.exe"

:: Close Apps
For %%# in (%Applications%) Do (start /w taskkill /IM "%%#" /F >nul)

:: Show Info
msg * Por favor espere un momento, Estamos tratando de conectarlo al servidor (esto puede tardar HASTA 2 minutos).
msg * Y no se preocupe, el contador del ciber empieza luego de la comprobacion.

:: Verify connectivity
For /L %%# in (1,1,50) Do (
Timeout 3 >nul
IF EXIST "\\SERVERG4\Documentos c\Comprobador\Verificador.txt" (Goto :INICIO)
)
Shutdown -r -f -t 4 -c "Disculpe, durante 2 minutos no se ha podido conectar con el servidor, Esta pc se reiniciará, si esto pasa mas de 2 veces, hable con el cajero de turno."
Exit

:INICIO
xcopy "\\SERVERG4\Documentos c\Comprobador de red\UPDATER.bat" "%WINDIR%\System32\" /y
cls
START /W "" "UPDATER.bat"
START /B "" "3.vbs"
Exit


Saludos.
#8964
Devuelve una lista con todos los valores de una enumeración

Código (vbnet) [Seleccionar]
   #Region " Get Enum Values "
   
      ' [ Get Enum Values Function ]
      '
      ' // By Elektro H@cker
      '
      ' Examples :
      ' For Each value In Get_Enum_Values(Of KnownColor)() : MsgBox(value) : Next
   
   Private Function Get_Enum_Values(Of T)() As List(Of String)
       Dim ValueList As New List(Of String)
       For Each value In System.[Enum].GetValues(GetType(T)) : ValueList.Add(value.ToString) : Next
       Return ValueList
   End Function
   
   #End Region







Como hacer un Loop sobre todos los colores conocidos:

Código (vbnet) [Seleccionar]
       For Each col In System.[Enum].GetValues(GetType(KnownColor))
           Dim mycolor As Color = Color.FromKnownColor(col)
           MsgBox(mycolor.ToString)
            MsgBox(mycolor.R)
            MsgBox(mycolor.G)
            MsgBox(mycolor.B)
       Next
#8965
Comprobar si una imagen contiene cierto color.

Esta función me ha costado la vida conseguirla, ya la pueden guardar bien xD...


Código (vbnet) [Seleccionar]
  Private Function Image_Has_Color(ByVal image As Image, ByVal color As Color) As Boolean

       Using Bitmap_Image = New Bitmap(image.Width, image.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb)

           Graphics.FromImage(Bitmap_Image).DrawImage(image, 0, 0)

           Dim Bitmap_Data = Bitmap_Image.LockBits(New Rectangle(0, 0, Bitmap_Image.Width, Bitmap_Image.Height), System.Drawing.Imaging.ImageLockMode.[ReadOnly], Bitmap_Image.PixelFormat)
           Dim Bitmap_Pointer As IntPtr = Bitmap_Data.Scan0

           Dim Pixel_Color As Int32
           Dim Result As Boolean = False

           For i = 0 To Bitmap_Data.Height * Bitmap_Data.Width - 1

               Pixel_Color = System.Runtime.InteropServices.Marshal.ReadInt32(Bitmap_Pointer, i * 4)

               If (Pixel_Color And &HFF000000) <> 0 AndAlso (Pixel_Color And &HFFFFFF) = (color.ToArgb() And &HFFFFFF) Then
                   Result = True
                   Exit For
               End If

           Next

           Bitmap_Image.UnlockBits(Bitmap_Data)
           Return Result

       End Using

   End Function


Ejemplo:
Código (vbnet) [Seleccionar]

   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       MsgBox(Image_Has_Color(System.Drawing.Image.FromFile("C:\imagen.jpg"), Color.FromArgb(240, 240, 240)))
   End Sub
#8966
.NET (C#, VB.NET, ASP) / [SOURCE] Splat
16 Mayo 2013, 18:55 PM



DESCRIPCIÓN
Splat es una utilidad de consola para generar los típicos "SplashScreen" (Mostrar una imagen durante un corto periodo de tiempo antes de iniciar un proceso).
Ocupa 35 kb así que es perfecta para añadirla a proyectos de .NET como a archivos autoextraibles de winrar, códigos Batch, etc.
Acepta png's con transparencia.

MODO DE EMPLEO

  • Syntax:

       Splat.exe [IMAGEFILE] [SWITCHES]

  • Switches:

       /Duration   | The Splash duration.    (Default: 5000)
       /FXDuration | The effects duration.   (Default: 1500)
       /FadeIN     | Enables FadeIN Effect.
       /FadeOUT    | Enables FadeOUT Effect.
       /Resize     | Resizes the image.
       /Location   | Relocates the image.
        /Clickable  | Enables click on image to close.
        /OnTop      | Set the image on top of other windows.
        /?          | Shows this help.


  • Switches values Syntax:

       /Duration   (ms)
       /FXDuration (ms)
       /Resize     (WidthXHeight)
       /Location   (X,Y)


  • Examples:

       Splat.exe "C:\Image.png"
       (Shows a image at the center of the screen for 3000 ms.)

       Splat.exe "C:\Image.png" /Resize 400x400 /Location 100,300
       (Shows a resized image to 200x400 px at 100,300 coordenates for 3000 ms.)

       Splat.exe "C:\Image.png" /Duration 6000 /FadeIN /FadeOUT /FXDuration 2000
       (Shows a image at the center of the screen with fade effects for 6000 ms.
       , plus 2000 ms for each effect then is a total of 10.000 ms.)


    NOTA: Usar el parámetro /Wait del comando Start para esperar a que el splashscreen finalize.
    start /W splat xmen.jpg

    DEMOSTRACIÓN

    [youtube=640,360]http://www.youtube.com/watch?v=yn4c9w50Z9U&feature=youtu.be[/youtube]


    DESCARGA
    http://elektrostudios.tk/Splat.zip
    Incluye código fuente y binários ya compilados.
#8967
Yo he sido comprensivo teniendo en cuenta que empezaste como hace una semana, pero no hace falta ser un experto para hacer las cosas de forma ordenada ocupando 1 solo archivo y no en decenas de archivos desperdigados, también es cuestión de gustos, yo prefiero simplicidad a cantidad.

De todas formas, si el dueño está contento, que más da las críticas que te digamos xD.

Para empezar a aprender Batch lo mejor es http://ss64.com/
También puedes echarle un vistazo a un tutorial que aún no he terminado: http://foro.elhacker.net/buscador-t375135.0.html
Y cuando ya consigas un buen nivel, mírate alguno de los códigos complejos de rob van der woude.

Saludos
#8968
Multimedia / Re: unir archivos de video
16 Mayo 2013, 16:13 PM
Cita de: MrSilver en 16 Mayo 2013, 13:23 PM¿sabeis de alguna aplicación que me permita idetentificar cada archivo y unirlos para volver a crear los videos enteros?
Algo así no existe, ¿como va a saber una máquina que video pertenece a otro si provienen de la misma cámara, con el mismo tamaño de imagen y el mismo framerate y audio?, literálmente SON TODOS IGUAL.

Pero de todas formas te hago saber que los programas "unidores/juntadores de video" se basa o bien en la enumaración de los videos (parte 1.avi, parte 2.avi), o bien hay algunos que se basan en el framerate y el tamaño de imagen de cada video para saber si uno pertenece a otro, pero lo que pides tu exáctamente (o lo que me ha parecido que pides)... no,
aunque de todas formas tampoco te costaría hacerlo manuálmente como ya te han dicho.

Saludos!
#8969
Sincéramente yo cobraría por el esfuerzo, es decir el tiempo condumido (una semana) más que por el trabajo en sí, y además me plantearía cobrar muy poco porque son archivos bat muy hardcodeados, ni de coña le cobraría a alguien 50 € al més por tocar esos bats, si es que hablasemos de archivos bat y no de cosas realmente programadas, aparte de demasiado aprovechado me parece ridículo y una verguenza para el programador, de por si yo no podría cobrar esos 50€ por entregar unos cuantos bats con unas pocas líneas escritas, pero que cada uno haga lo que quiera.

- Si el dueño añade un juego más, no va a funcionar porque los bats no harán nada con ese juego.
- Si el dueño quisiera modificar el nombre de alguna carpeta (Ej: "C:\Juegazos\half-Life 2"), no va a funcionar.
- Si el dueño modifica el nombre de red (ServerG4), no va a funcionar.
- Si el dueño actualiza a una versión superior de Windows, no va a funcionar (msgbox.exe faltará en el equipo).

Y todas esas modificaciones serán liosas de corregir por tí en un futuro porque has creado ni más ni menos que 18 archivos, y los que faltan como el "toff.exe".

- Esta orden no va a funcionar:
start /wait taskkill>nul /IM Dungeon Siege III.exe /F

- Este bat diréctamente no creo que funcionase como esperas:
Killer.bat
¿Intentas matar la CMD mientras intentas ejecutar un bat o una serie de bats en la CMD, porque? :-/

...Y la mayoria de los bat y vbs sólamente tienen 3-4 líenas de código, no se porque has tenido la necesidad de crear decenas de archivos para cumplir una sola función pero tienes que evitar hacer las cosas de esa manera, es un completo lio para cualquier que no sea tú.






En resumen todos esos bats están hardcodeados, codeados para cumplir cierta función dadas ciertas situaciones con ciertas caracteristicas, si una de esas caracteristicas/situaciones cambia por pequeño que séa el cambio, todo se va a ir a la *****.

1. Si realmente quieres que aprecien tu trabajo (dejando a un lado el detalle de que es puro Batch), haz algo dinámico, crea un archivo de configuración, donde el dueño dle cyber pueda agregar o eliminar las rutas de los juegos, eso como mínimo, aparte donde pueda especificar el nombre de red, y en resumen el nombre de todas las carpetas que se necesiten usar por si necesita modificar alguna en un futuro, así el se quedará contento. Y que los bat tomen los datos de dicho archivo de configuración.

2. Usa variables de entorno, eso de usar "c:\programdata\blablabla" no lo hagas porfavor.

3. Junta todos los bats en 1 solo, y los vbs también, que se escriban desde el archivo bat, no te cuesta nada agregar procedimientos al bat prinipal o juntarlos.

4. Documenta todo tu trabajo en un archivo de texto, como un archivo de ayuda para que el cliente sepa que tiene que tocar de los 20 bats y como tiene que hacerlo.

Saludos.
#8970
Cita de: Novlucker en 16 Mayo 2013, 05:19 AM
¿Estas utilizando el build que corresponde? :P

Si si Gracias Novlucker,  esto ya lo solucioné hace varios días usando el msbuild 4.0

Lo que no entiendo, es si mi proyecto apunta al FW3.5, ¿porque debo usar el msbuild 4.0 para compilarlo?, pero bueno.

un saludo!