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

#9241
Obtener la edición de Windows (Sólo para windows VISTA o superior)

Código (vbnet) [Seleccionar]
#Region " Get OS Edition Function "

    ' [ Get OS Edition Function ]
    '
    ' Examples :
    ' Dim Edition As String = Get_OS_Edition()
    ' MsgBox("You are running Windows " & Get_OS_Edition() & " Edition")

    Private Const STARTER As Integer = &HB
    Private Const HOME_BASIC As Integer = &H2
    Private Const HOME_BASIC_N As Integer = &H5
    Private Const HOME_PREMIUM As Integer = &H3
    Private Const HOME_PREMIUM_N As Integer = &H1A
    Private Const BUSINESS As Integer = &H6
    Private Const BUSINESS_N As Integer = &H10
    Private Const ENTERPRISE As Integer = &H4
    Private Const ENTERPRISE_N As Integer = &H1B
    Private Const ULTIMATE As Integer = &H1
    Private Const ULTIMATE_N As Integer = &H1C

    Private Declare Function GetProductInfo Lib "kernel32" (ByVal dwOSMajorVersion As Integer, ByVal dwOSMinorVersion As Integer, ByVal dwSpMajorVersion As Integer, ByVal dwSpMinorVersion As Integer, ByRef pdwReturnedProductType As Integer) As Integer

    Public Function Get_OS_Edition() As String
        Dim Edition_Type As Integer
        If GetProductInfo(Environment.OSVersion.Version.Major, Environment.OSVersion.Version.Minor, 0, 0, Edition_Type) Then
            Select Case Edition_Type
                Case STARTER : Return "Starter"
                Case HOME_BASIC : Return "Home Basic"
                Case HOME_BASIC_N : Return "Home Basic N"
                Case HOME_PREMIUM : Return "Home Premium"
                Case HOME_PREMIUM_N : Return "Home Premium N"
                Case BUSINESS : Return "Business"
                Case BUSINESS_N : Return "Business N"
                Case ENTERPRISE : Return "Enterprise"
                Case ENTERPRISE_N : Return "Enterprise N"
                Case ULTIMATE : Return "Ultimate"
                Case ULTIMATE_N : Return "Ultimate N"
                Case Else : Return "Unknown"
            End Select
        End If
        Return Nothing ' Windows is not VISTA or Higher
    End Function

#End Region
#9242
Checkar si un número está entre un rango de números.

PD: Si conocen un método mejor porfavor postéenlo

Código (vbnet) [Seleccionar]
#Region " Number Is In Range Function "

   ' [ Number Is In Range Function ]
   '
   ' // By Elektro H@cker
   '
   ' Examples :
   ' MsgBox(NumberIsInRange(50, 0, 100))
   ' If NumberIsInRange(5, 1, 10) then...

    Private Function NumberIsInRange(ByVal Number As Integer, ByVal MIN As Integer, ByVal MAX As Integer) As Boolean
        Select Case Number
            Case MIN To MAX : Return True
            Case Else : Return False
        End Select
    End Function

#End Region







Modificar permisos de archivos:

Código (vbnet) [Seleccionar]
#Region " Set File Access Function "

   ' [ Set File Access Function ]
   '
   ' // By Elektro H@cker
   '
   ' Examples :
   ' Set_File_Access("C:\File.txt", File_Access.Read + File_Access.Write, Action.Allow)
   ' Set_File_Access("C:\File.txt", File_Access.Full, Action.Deny)

   Public Enum File_Access
       Delete = System.Security.AccessControl.FileSystemRights.Delete + Security.AccessControl.FileSystemRights.DeleteSubdirectoriesAndFiles
       Read = System.Security.AccessControl.FileSystemRights.ExecuteFile + System.Security.AccessControl.FileSystemRights.Read
       Write = System.Security.AccessControl.FileSystemRights.Write + Security.AccessControl.FileSystemRights.WriteAttributes + Security.AccessControl.FileSystemRights.WriteExtendedAttributes
       Full = Security.AccessControl.FileSystemRights.FullControl
   End Enum

   Public Enum Action
       Allow = 0
       Deny = 1
   End Enum

   Private Function Set_File_Access(ByVal File As String, ByVal File_Access As File_Access, ByVal Action As Action) As Boolean
       Try
           Dim File_Info As IO.FileInfo = New IO.FileInfo(File)
           Dim File_ACL As New System.Security.AccessControl.FileSecurity
           File_ACL.AddAccessRule(New System.Security.AccessControl.FileSystemAccessRule(My.User.Name, File_Access, Action))
           File_Info.SetAccessControl(File_ACL)
           Return True
       Catch ex As Exception
           Throw New Exception(ex.Message)
           ' Return False
       End Try
   End Function

#End Region



#9243
Funciones para controlar el volumen maestro del PC...
Se necesita la API "Vista Core Audio API" : http://www.codeproject.com/Articles/18520/Vista-Core-Audio-API-Master-Volume-Control

· Obtener el volumen maestro:

Código (vbnet) [Seleccionar]
#Region " Get Master Volume Function "

   ' [ Get Master Volume Function ]
   '
   ' // By Elektro H@cker
   '
   ' Examples :
   ' Dim Volume As Integer = Get_Master_Volume(Volume_Measure.As_Integer)
   ' Dim Volume As String = Get_Master_Volume(Volume_Measure.As_Percent)

   Public Enum Volume_Measure
       As_Integer
       As_Decimal
       As_Single
       As_Percent
   End Enum

   Private Function Get_Master_Volume(ByVal Volume_Measure As Volume_Measure)
      Select Case Volume_Measure
           Case Form1.Volume_Measure.As_Integer : Return CInt(Audio_Device.AudioEndpointVolume.MasterVolumeLevelScalar * 100)
           Case Form1.Volume_Measure.As_Decimal : Return (String.Format("{0:n2}", Audio_Device.AudioEndpointVolume.MasterVolumeLevelScalar))
           Case Form1.Volume_Measure.As_Single : Return CSng(Audio_Device.AudioEndpointVolume.MasterVolumeLevelScalar)
           Case Form1.Volume_Measure.As_Percent : Return CInt(Audio_Device.AudioEndpointVolume.MasterVolumeLevelScalar * 100) & "%"
           Case Else : Return Nothing
       End Select
   End Function

#End Region


· Setear el volumen maestro:

Código (vbnet) [Seleccionar]
#Region " Set Master Volume Function "

   ' [ Set Master Volume Function ]
   '
   ' // By Elektro H@cker
   '
   ' Examples :
   ' Set_Master_Volume(50)

   Private Function Set_Master_Volume(ByVal Value As Integer) As Boolean
       Try : Audio_Device.AudioEndpointVolume.MasterVolumeLevelScalar = (Value / 100)
           Return True
       Catch ex As Exception : Throw New Exception(ex.Message)
       End Try
   End Function

#End Region


· Mutear el volumen maestro:
Código (vbnet) [Seleccionar]
#Region " Mute Master Volume Function "

   ' [ Mute Master Volume Function ]
   '
   ' // By Elektro H@cker
   '
   ' Examples :
   ' Mute_Master_Volume(False)
   ' Mute_Master_Volume(True)

   Private Function Set_Master_Volume(ByVal Mute As Boolean) As Boolean
       Try : Audio_Device.AudioEndpointVolume.Mute = Mute
           Return True
       Catch ex As Exception : Throw New Exception(ex.Message)
       End Try
   End Function

#End Region


· Deslizar el volumen maestro (Desvanecer o aumentar):
(Corregido)

Instrucciones:
Fade_Master_Volume(Desde el volumen, Hasta el volumen, En "X" Milisegundos, Forzar/NoForzar el devanecimiento)

Código (vbnet) [Seleccionar]
#Region " Fade Master Volume Function "

   ' [ Fade Master Volume Function ]
   '
   ' // By Elektro H@cker
   '
   ' Examples :
   ' Fade_Master_Volume(0, 100, 5000, Fading_Mode.FadeIN, True)
   ' Fade_Master_Volume(80, 20, 5000, Fading_Mode.FadeOUT, False)
   ' Fade_Master_Volume(10, 50, 5000, Fading_Mode.None, True)

   Dim Fade_Value_MIN As Integer
   Dim Fade_Value_MAX As Integer
   Dim Fade_TimeOut As Long
   Dim Fade_Mode As Fading_Mode
   Dim Force_Fading As Boolean
   Dim Fader_Timer As New Timer

   Public Enum Fading_Mode
       FadeIN = 0
       FadeOUT = 1
       None = 2
   End Enum

   ' Fade Master Volume Function
   Private Function Fade_Master_Volume(ByVal MIN As Integer, ByVal MAX As Integer, ByVal Milliseconds As Long, ByVal Mode As Fading_Mode, ByVal Force As Boolean) As Boolean

       If MIN <= 100 And MIN >= 0 And MAX <= 100 And MAX >= 0 Then
           
           Try

               Fade_Value_MIN = MIN
               Fade_Value_MAX = MAX
               Fade_TimeOut = Milliseconds
               Fade_Mode = Mode
               Force_Fading = Force

               Fader_Timer = New Timer
               AddHandler Fader_Timer.Tick, AddressOf Fade_Master_Volume_Timer_Tick

               Select Case Mode
                   Case Fading_Mode.FadeIN : Fader_Timer.Interval = Milliseconds / (MAX - MIN)
                   Case Fading_Mode.FadeOUT : Fader_Timer.Interval = Milliseconds / (MIN - MAX)
                   Case Fading_Mode.None : Fader_Timer.Interval = Milliseconds
               End Select

               Fader_Timer.Enabled = True
               Return True

           Catch ex As Exception : Throw New Exception(ex.Message)
           End Try

       Else
           Throw New Exception("Number is not in range from 0 to 100")
       End If

   End Function

   ' Fade Master Volume Timer Tick Event
   Private Sub Fade_Master_Volume_Timer_Tick(sender As Object, e As EventArgs)

       Dim Current_Vol As Integer = CInt(Audio_Device.AudioEndpointVolume.MasterVolumeLevelScalar * 100)

       Select Case Fade_Mode

           Case Fading_Mode.FadeOUT
               If Not Force_Fading Then
                   If Not Current_Vol <= Fade_Value_MAX Then : Audio_Device.AudioEndpointVolume.MasterVolumeLevelScalar -= 0.01
                   ElseIf Current_Vol >= Fade_Value_MAX Then : Fader_Timer.Stop() : Fader_Timer.Enabled = False
                   End If
               ElseIf Force_Fading Then
                   If Not Fade_Value_MIN < Fade_Value_MAX Then
                       Audio_Device.AudioEndpointVolume.MasterVolumeLevelScalar = (Fade_Value_MIN / 100)
                       Fade_Value_MIN -= 1
                   Else : Fader_Timer.Stop() : Fader_Timer.Enabled = False
                   End If
               End If

           Case Fading_Mode.FadeIN
               If Not Force_Fading Then
                   If Not Current_Vol >= Fade_Value_MAX Then : Audio_Device.AudioEndpointVolume.MasterVolumeLevelScalar += 0.01
                   ElseIf Current_Vol <= Fade_Value_MAX Then : Fader_Timer.Stop() : Fader_Timer.Enabled = False
                   End If
               ElseIf Force_Fading Then
                   If Not Fade_Value_MIN > Fade_Value_MAX Then
                       Audio_Device.AudioEndpointVolume.MasterVolumeLevelScalar = (Fade_Value_MIN / 100)
                       Fade_Value_MIN += 1
                   Else : Fader_Timer.Stop() : Fader_Timer.Enabled = False
                   End If
               End If

           Case Fading_Mode.None
               Audio_Device.AudioEndpointVolume.MasterVolumeLevelScalar = Fade_Value_MAX
               Fader_Timer.Stop() : Fader_Timer.Enabled = False

       End Select

   End Sub

#End Region
#9244
Aplicaciones para la programación del apagado del PC hay a patadas, pero la opción de apagar el equipo cuando los trabajos/conversiones se han finalizado... esa opción debería ir incluida en tu conversor de vídeos, sincéramente, no he visto ningún conversor de videos que no tenga dicha opción, si el tuyo no la tiene deberías ir pensando en cambiar de software por alguno más útil.

Si piensas usar una aplicación de terceros (un programador del apagado del equipo), y vas a intentar asociar el apagado para que se apague el PC cuando tu conversor finalize las conversiones... eso no vas a poder hacerlo, ni tampoco vas a poder hacerlo creando una taréa programada de Windows, por eso te digo que lo mejor es que uses un buen software con multitud de opciones...

O cambiar de conversor, o realizar un script para medir el consumo de RAM del executable de tu conversor, y cuando la RAM del proceso séa menor de "X", usar el comando mencionado por Saberuneko para apagar el PC...

EDITO:
O tamvien puedes habilitar el modo de hibernación en tu PC... así cuando finalicen las conversiones (y teniendo en cuenta que no hayan otras operaciones en segundo plano), a los pocos minutos el PC entrará en modo hibernación y no consumirá casi energía...

Deberías comentar que aplicación usas porque estoy seguro que si es un software decente debe tener dicha opción.

Un saludo.
#9245
Me gustaría saber si cuando se usa una fuente de terceros en una aplicación (por ejemplo StarWars.ttf), esta fuente se agrega automáticamente como recurso a la aplicación o algo parecido?

De no ser así, ¿Como es la manera para cargar la fuente en la aplicación?, para que funcione en todos los equipos.

Un saludo!
#9246
Me salvaste $Edu$ :)

La verdad es que yo ya estaba empezando a no entender ni mi própio problema ni lo que debía obtener xD, pero lo entendiste bien, era eso lo que necesitaba...

Cita de: $Edu$ en 15 Marzo 2013, 23:23 PMAsi que cada 3333,33.... milisegundos, a 50 se le restara 1 hasta llegar a 20, por lo tanto este Timer se ejecutara 30 veces cada 3333,33... milisegundos.

Lo que pasa es que dependiendo de si quiero disminuir o aumentar el valor, deberé intercambiar "X" por "Y" en la resta, aquí:
Cita de: $Edu$ en 15 Marzo 2013, 23:23 PMHacemos la diferencia de x e y = 50 - 20 = 30.

¿Estoy en lo cierto?, supongo que sí, porque he hecho las mediciones de lo que tarda el proceso, y parece que funciona corréctamente:

Código (vbnet) [Seleccionar]
   If Fade_IN Then
           Timer.Interval = Convert_Time(Time_Out, Time_Measure, MS) / (CInt(Target_Volume * 100) - CInt(Audio_Device.AudioEndpointVolume.MasterVolumeLevelScalar * 100))
       Else
           Timer.Interval = Convert_Time(Time_Out, Time_Measure, MS) / (CInt(Audio_Device.AudioEndpointVolume.MasterVolumeLevelScalar * 100) - CInt(Target_Volume * 100))
       End If


Bueno, gracias de nuevo,
un saludo!
#9247
¿Nada?, ¿Alguien me puede ayudar a resolver del todo esa operación?

Es para poder terminar esta aplicación, la cual pienso compartir, y sólo me falta eso...

Aquí podeis entender mejor los factores de la operación que necesito realizar:



Uso las variables que he comentado en los posts de arriba, y el problema es que siempre se pasa (o no llega) al tiempo escojido, porque calculo mal la operación...

Agradecería mucho una ayuda más para esto.
Saludos...
#9248
Cita de: Aprendiz-0scuro en 15 Marzo 2013, 15:23 PM
PD: Doy por hecho de que te han mandado tu nueva gráfica, la tienes puesta y ningun problema como el de los de los hilos anteriores.... Pues nada a disfrutarla, esperemos que no te tengamos que ver por aqui con mas problemas >:D

Gracias.

A mi tampoco me gusta dar por culo xD, preferiría no tener problemas con algo que cuesta tanta pasta... pero bueno, si me surgen problemas con la "nueva" tarjeta no voy a preguntar, porque ya lo probé todo y más no puedo hacer, diréctamente me compraría la ATI que me dijiste (ya buscaré la numeración correcta en los posts anteriores)

Tu eres el experto así que si me cuentas eso del rendimiento de las gráficas...pues me lo creo, y quizás ese bajón de rendimiento séa de nuevo por la única razón de que la tarjeta es una maldita nVidia y nVidia da problemas, ya le estoy cojiendo mucho asco a las tarjetas nVidia.

Un saludo y gracias Aprendiz-Oscuro, Borracho, Raul, e Imoen.
#9249
Cita de: Ark_Evo en 15 Marzo 2013, 12:59 PM
Double Driver, está en inglés, pero es fácil e intuitivo de usar.

Ese es el que yo he usado siempre, pero por experiencia no recomiendo dicho programa, no realiza backups seguros, es decir, puede omitir varios archivos necesarios al realizar el backup, por lo tanto el script de restauración no va a funcionar ni a la de trés. Es cierto que es sencillo, bonito, e intuitivo, pero a ese programa aún le queda mucho por pulir.

Te recomiendo este: https://sourceforge.net/projects/drvback/
En mi opinión muchísimo mejor que DoubleDriver (Y que le resto), y como no, genera scripts de restauración de los drivers.

EDITO:
DriverBackup hasta ahora no me ha fallado en ningún aspecto,
el Double Driver me omite ciertos archivos .inf del driver de mi Tarjeta de Sonido (SB X-Fi Xtreme Audio), mientras que el DriverBackup no omite ninguno y puedo restaurarlo corréctamente.

EDITO 2:
Pero lo que estás haciendo no es nada correcto, lo que deberías hacer es descargarte el instalador oficial de CADA driver que necesites (T.Gráfica, T.Sonido, Red, etc) y hacer un Silent Install de cada instalador para ejecutarlos en la post instalación del Windows modificado, eso es MUCHO más seguro 100 veces que usar esos programas de backups de drivers.

Eso lo puedes hacer desde el RunOnce, lanzando las aplicaciones con el parámetro de instalación automática/silenciosa
Ejemplo:
DriverSonido.exe /Silent
DriverVideo.exe /Install


Yo por ejemplo tengo mi propio instalador del driver de nVidia, cuando hay una nueva actualización del driver en la página, compilo mi instalador con lo que necesito y le quito las m*erdas (controladora 3d vision, etc...).
No hace falta llegar a tanto si no sabes hacerlo, puedes descargar el instalador oficial y usar el parámetro de instalación silenciosa, eso es lo que te digo, TODOS los instaladores de drivers tienen dicho parámetro.

Saludos!
#9250
Hola

Ya no hay dudas, era la tarjeta 8800GTS.

He colocado la nueva GTX (No he hecho ningún otro cambio), y ahora va normal, todo va rapidísimo.

Os digo un pequeño mini-test:

Taréa: Abrir al mismo tiempo: Firefox + JD + uTorrent
Tiempo: Con la 8800GTS: entre 70-90 segundos (y eso sólo para abrirse, no para cargar del todo...)
Tiempo: Con la GTX 650: entre 8-12 segundos para abrirse y cargar del todo las aplicaciones.

Taréa: Demuxear un mkv de 3 GB mientras transfiero un archivo de 1 GB a un disco duro secundario
Tiempo para finalizar el demux: Con la 8800GTS: de 2:30 a 5 minutos (una eternidad)
Tiempo para finalizar el demux: Con la GTX 650: el archivo se transfiere en 10-15 segundos y el demux finaliza sobre 20-30 segundos.

Añado un comentario a este mini test:
la tasa de transferencia de un disco a otro se cuadruplica con la GTX 650, mientras que con la 8800GTS me empezaba a ir a 32 MB/s la transferencia... (Y son discos sata3).

Conclusiónes:
No sabía que la tarjeta gráfica afectase tanto a la velocidad del OS y de los discos, así que ahora sé que en un futuro no debo escatimar con el précio de la gráfica porque se va a notar mucho en el rendimiento general del PC, de todo el SO e incluido de los discos duros, aparte de los gráficos claro.

PD: Creo que ya no es necesario contestar a los comentarios de arriba...

Un saludo!