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

#751
Cita de: win_7 en 30 Agosto 2018, 05:50 AMNO. Es este de este enlace: http://rainysoft.cc/

Como ya digo, no es ni medianamente conocido, no merece la pena descargarlo para correr cierto riesgo, no hay resultados de opiniones, reviews o valoraciones en google, ni en reddit, ni siquiera tienen un email de contacto en su página web o al menos yo no lo veo a simple vista. Probablemente sea un software "seguro" con pésima popularidad y una página web muy cutre y ya está, pero si no quieres correr riesgos innecesarios y buscas un motor de wallpapers animados completamente fiable y con buenísimas valoraciones entonces mucho mejor es que te instales un programa llamado Wallpaper Engine desde la tienda de Steam por el módico precio de 3,99€ :


O sino, también tienes a tu disposición Deskscapes de Stardock:


Personálmente soy cliente desde hace muchos años de los productos de Stardock, es una compañía puntera en lo que respecta a tecnología de software de personalización para Windows, pero en este caso Wallpaper Engine en mi opinión merece bastante más la pena que comprar Deskscapes.

Saludos.
#752
Que yo sepa no hay software medianamente conocido por el nombre "Rain wallpaper", en mi opinión probablemente debes estar intentando referirte a cualquier wallpaper animado de lluvia que en inglés le hallan puesto de nombre "rain", o aun más probable es te estés refieriendo a la archiconocida y legendaria herramienta de personalización, Rainmeter...

[youtube=640,360]https://www.youtube.com/watch?v=zu7bxJ03h6k[/youtube]

Rainmeter es un programa tan seguro como de seguro sea tu sentido común, me explico, Rainmeter es un software veterano y desde sus inicios ya hace muchos años la gente empezó a aprovecharse de sus vulnerabilidades para infectar virus distribuidos en forma de skins y plugins para dicho programa, Rainmeter siempre ha sido muy explotable en ese sentido, siempre ha habido abundancia de skins y temas para Rainmeter en páginas conocidas y de las que en principio podriamos fiarnos como podría ser DeviantArt, que en realidad han sido virus.

El problema es que la gente suele descarga e instalar cualquier ***** sin asegurarse de su fiabilidad, de ahí que la seguridad del programa importe más bien poco y lo que realmente importa es tu sentido común, si te descargas un supuesto skin o plugin para Rainmeter y en su interior abres un fichero executable pues... la culpa no sería del programa, sino tuya.

Aquí tienes un comunicado oficial del Rainmeter Team donde explican lo que un usuario debe hacer para evitar o minimizar las posibilidades de ser infectado:


Saludos.
#753
¿Cómo silenciar el volumen de un proceso externo y/o cambiar su nivel de volumen?.

El siguiente código contiene varias definiciones nativas de la API de WASAPI, y una clase por nombre "AudioUtil" la cual contiene varios métodos estáticos que sirven como wrappers de esta API para lograr nuestro objetivo de forma sencilla y reutilizable.

Simplemente copiar y pegar directamente todo este bloque de código en una nueva clase:

Código (vbnet) [Seleccionar]
#Region " Option Statements "

Option Strict On
Option Explicit On
Option Infer Off

#End Region

#Region " Imports "

Imports System.ComponentModel
Imports System.Globalization
Imports System.Runtime.InteropServices

Imports ElektroKit.Interop.Win32

#End Region

#Region " Interoperability "

Namespace ElektroKit.Interop

#Region " Win32 API "

   Namespace Win32

#Region " EDataFlow "

       ''' <summary>
       ''' Defines constants that indicate the direction in which audio data flows between an audio endpoint device and an application.
       ''' </summary>
       ''' <remarks>
       ''' <see href="https://docs.microsoft.com/en-us/windows/desktop/api/mmdeviceapi/ne-mmdeviceapi-__midl___midl_itf_mmdeviceapi_0000_0000_0001"/>
       ''' </remarks>
       Public Enum EDataFlow As Integer
           Render
           Capture
           All
           EDataFlow_enum_count
       End Enum

#End Region

#Region " ERole "

       ''' <summary>
       ''' Defines constants that indicate the role that the system has assigned to an audio endpoint device.
       ''' </summary>
       ''' <remarks>
       ''' <see href="https://docs.microsoft.com/en-us/windows/desktop/api/mmdeviceapi/ne-mmdeviceapi-__midl___midl_itf_mmdeviceapi_0000_0000_0002"/>
       ''' </remarks>
       Public Enum ERole As Integer
           Console
           Multimedia
           Communications
           ERole_enum_count
       End Enum

#End Region

#Region " MMDeviceEnumerator "

       ''' <summary>
       ''' <c>CLSID_MMDeviceEnumerator</c>.
       ''' </summary>
       <ComImport>
       <Guid("BCDE0395-E52F-467C-8E3D-C4579291692E")>
       Public Class MMDeviceEnumerator
       End Class

#End Region

#Region " IMMDeviceEnumerator "

       ''' <summary>
       ''' Provides methods for enumerating multimedia device resources.
       ''' <para></para>
       ''' In the current implementation of the MMDevice API,
       ''' the only device resources that this interface can enumerate are audio endpoint devices.
       ''' <para></para>
       ''' A client obtains a reference to an <see cref="IMMDeviceEnumerator"/> interface by calling the CoCreateInstance.
       ''' <para></para>
       ''' The device resources enumerated by the methods in the IMMDeviceEnumerator interface are represented as
       ''' collections of objects with <see cref="IMMDevice"/> interfaces.
       ''' <para></para>
       ''' A collection has an IMMDeviceCollection interface.
       ''' The IMMDeviceEnumerator.EnumAudioEndpoints method creates a device collection.
       ''' </summary>
       ''' <remarks>
       ''' <see href="https://docs.microsoft.com/en-us/windows/desktop/api/mmdeviceapi/nn-mmdeviceapi-immdeviceenumerator"/>
       ''' </remarks>
       <ComImport>
       <InterfaceType(ComInterfaceType.InterfaceIsIUnknown)>
       <Guid("A95664D2-9614-4F35-A746-DE8DB63617E6")>
       Public Interface IMMDeviceEnumerator

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented1() As Integer

           <PreserveSig>
           Function GetDefaultAudioEndpoint(<[In]> <MarshalAs(UnmanagedType.I4)> ByVal dataFlow As EDataFlow,
                                            <[In]> <MarshalAs(UnmanagedType.I4)> ByVal role As ERole,
                                            <Out> <MarshalAs(UnmanagedType.Interface)> ByRef refDevice As IMMDevice) As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           Function NotImplemented2() As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           Function NotImplemented3() As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           Function NotImplemented4() As Integer

       End Interface

#End Region

#Region " IMMDevice "

       ''' <summary>
       ''' Provides methods for enumerating multimedia device resources.
       ''' <para></para>
       ''' In the current implementation of the MMDevice API,
       ''' the only device resources that this interface can enumerate are audio endpoint devices.
       ''' <para></para>
       ''' A client obtains a reference to an <see cref="IMMDeviceEnumerator"/> interface by calling the CoCreateInstance.
       ''' <para></para>
       ''' The device resources enumerated by the methods in the IMMDeviceEnumerator interface are represented as
       ''' collections of objects with <see cref="IMMDevice"/> interfaces.
       ''' <para></para>
       ''' A collection has an IMMDeviceCollection interface.
       ''' The IMMDeviceEnumerator.EnumAudioEndpoints method creates a device collection.
       ''' </summary>
       ''' <remarks>
       ''' <see href="https://docs.microsoft.com/en-us/windows/desktop/api/mmdeviceapi/nn-mmdeviceapi-immdevice"/>
       ''' </remarks>
       <ComImport>
       <InterfaceType(ComInterfaceType.InterfaceIsIUnknown)>
       <Guid("D666063F-1587-4E43-81F1-B948E807363F")>
       Public Interface IMMDevice

           <PreserveSig>
           Function Activate(ByRef ref¡d As Guid, ByVal clsCtx As Integer, ByVal activationParams As IntPtr,
                             <MarshalAs(UnmanagedType.IUnknown)> ByRef refInterface As Object) As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented1() As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented2() As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented3() As Integer

       End Interface

#End Region

#Region " IAudioSessionControl "

       ''' <summary>
       ''' Enables a client to configure the control parameters for an audio session and to monitor events in the session.
       ''' </summary>
       ''' <remarks>
       ''' <see href="https://docs.microsoft.com/en-us/windows/desktop/api/audiopolicy/nn-audiopolicy-iaudiosessioncontrol"/>
       ''' </remarks>
       <ComImport>
       <InterfaceType(ComInterfaceType.InterfaceIsIUnknown)>
       <Guid("F4B1A599-7266-4319-A8CA-E70ACB11E8CD")>
       Public Interface IAudioSessionControl

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented1() As Integer

           <PreserveSig>
           Function GetDisplayName(<Out> <MarshalAs(UnmanagedType.LPWStr)> ByRef refDisplayName As String) As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented2() As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented3() As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented4() As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented5() As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented6() As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented7() As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented8() As Integer

       End Interface

#End Region

#Region " IAudioSessionControl2 "

       ''' <summary>
       ''' Enables a client to configure the control parameters for an audio session and to monitor events in the session.
       ''' <para></para>
       ''' The IAudioClient.Initialize method initializes a stream object and assigns the stream to an audio session.
       ''' </summary>
       ''' <remarks>
       ''' <see href="https://docs.microsoft.com/en-us/windows/desktop/api/audiopolicy/nn-audiopolicy-iaudiosessioncontrol"/>
       ''' </remarks>
       <ComImport>
       <InterfaceType(ComInterfaceType.InterfaceIsIUnknown)>
       <Guid("BFB7FF88-7239-4FC9-8FA2-07C950BE9C6D")>
       Public Interface IAudioSessionControl2

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented1() As Integer

           <PreserveSig>
           Function GetDisplayName(<Out> <MarshalAs(UnmanagedType.LPWStr)> ByRef refDisplayName As String) As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented2() As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented3() As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented4() As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented5() As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented6() As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented7() As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented8() As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented9() As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented10() As Integer

           <PreserveSig>
           Function GetProcessId(<Out> ByRef refValue As UInteger) As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented11() As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented12() As Integer

       End Interface

#End Region

#Region " IAudioSessionEnumerator "

       ''' <summary>
       ''' Enumerates audio sessions on an audio device.
       ''' </summary>
       ''' <remarks>
       ''' <see href="https://docs.microsoft.com/en-us/windows/desktop/api/audiopolicy/nn-audiopolicy-iaudiosessionenumerator"/>
       ''' </remarks>
       <ComImport>
       <InterfaceType(ComInterfaceType.InterfaceIsIUnknown)>
       <Guid("E2F5BB11-0570-40CA-ACDD-3AA01277DEE8")>
       Public Interface IAudioSessionEnumerator

           <PreserveSig>
           Function GetCount(ByRef refSessionCount As Integer) As Integer

           <PreserveSig>
           Function GetSession(ByVal sessionCount As Integer, ByRef refSession As IAudioSessionControl) As Integer

       End Interface

#End Region

#Region " IAudioSessionManager2 "

       ''' <summary>
       ''' Enables an application to manage submixes for the audio device.
       ''' </summary>
       ''' <remarks>
       ''' <see href="https://docs.microsoft.com/en-us/windows/desktop/api/audiopolicy/nn-audiopolicy-iaudiosessionmanager2"/>
       ''' </remarks>
       <ComImport>
       <InterfaceType(ComInterfaceType.InterfaceIsIUnknown)>
       <Guid("77AA99A0-1BD6-484F-8BC7-2C654C9A9B6F")>
       Public Interface IAudioSessionManager2

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented1() As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented2() As Integer

           <PreserveSig>
           Function GetSessionEnumerator(<Out> <MarshalAs(UnmanagedType.Interface)> ByRef refSessionEnum As IAudioSessionEnumerator) As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented3() As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented4() As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented5() As Integer

           <EditorBrowsable(EditorBrowsableState.Never)>
           <PreserveSig>
           Function NotImplemented6() As Integer

       End Interface

#End Region

#Region " ISimpleAudioVolume "

       ''' <summary>
       ''' Enables a client to control the master volume level of an audio session.
       ''' </summary>
       ''' <remarks>
       ''' <see href="https://docs.microsoft.com/en-us/windows/desktop/api/audioclient/nn-audioclient-isimpleaudiovolume"/>
       ''' </remarks>
       <ComImport>
       <InterfaceType(ComInterfaceType.InterfaceIsIUnknown)>
       <Guid("87CE5498-68D6-44E5-9215-6DA47EF883D8")>
       Public Interface ISimpleAudioVolume

           <PreserveSig>
           Function SetMasterVolume(<[In]> <MarshalAs(UnmanagedType.R4)> ByVal levelNormalization As Single,
                                <[In]> <MarshalAs(UnmanagedType.LPStruct)> ByVal eventContext As Guid) As Integer

           <PreserveSig>
           Function GetMasterVolume(<Out> <MarshalAs(UnmanagedType.R4)> ByRef refLevelNormalization As Single) As Integer

           <PreserveSig>
           Function SetMute(<[In]> <MarshalAs(UnmanagedType.Bool)> ByVal isMuted As Boolean,
                        <[In]> <MarshalAs(UnmanagedType.LPStruct)> ByVal eventContext As Guid) As Integer

           <PreserveSig>
           Function GetMute(<Out> <MarshalAs(UnmanagedType.Bool)> ByRef refIsMuted As Boolean) As Integer

       End Interface

#End Region

   End Namespace

#End Region

#Region " Inter-process Communication "

   Namespace IPC

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Contains audio related utilities to apply on external processes.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       Public NotInheritable Class AudioUtil

#Region " Constructors "

           ''' ----------------------------------------------------------------------------------------------------
           ''' <summary>
           ''' Prevents a default instance of the <see cref="AudioUtil"/> class from being created.
           ''' </summary>
           ''' ----------------------------------------------------------------------------------------------------
           <DebuggerNonUserCode>
           Private Sub New()
           End Sub

#End Region

#Region " Public Methods "

           ''' ----------------------------------------------------------------------------------------------------
           ''' <summary>
           ''' Mute the audio volume of the specified process.
           ''' </summary>
           ''' ----------------------------------------------------------------------------------------------------
           ''' <param name="pr">
           ''' The <see cref="Process"/>.
           ''' </param>
           ''' ----------------------------------------------------------------------------------------------------
           Public Shared Sub MuteApplication(ByVal pr As Process)

               Dim volume As ISimpleAudioVolume = AudioUtil.GetVolumeObject(pr)
               If (volume IsNot Nothing) Then
                   Dim guid As Guid = Guid.Empty
                   volume.SetMute(True, guid)
               End If

           End Sub

           ''' ----------------------------------------------------------------------------------------------------
           ''' <summary>
           ''' Unmute the audio volume of the specified process.
           ''' </summary>
           ''' ----------------------------------------------------------------------------------------------------
           ''' <param name="pr">
           ''' The <see cref="Process"/>.
           ''' </param>
           ''' ----------------------------------------------------------------------------------------------------
           Public Shared Sub UnmuteApplication(ByVal pr As Process)

               Dim volume As ISimpleAudioVolume = AudioUtil.GetVolumeObject(pr)
               If (volume IsNot Nothing) Then
                   Dim guid As Guid = Guid.Empty
                   volume.SetMute(False, guid)
               End If

           End Sub

           ''' ----------------------------------------------------------------------------------------------------
           ''' <summary>
           ''' Gets a value that determine whether the audio volume of the specified application is muted.
           ''' </summary>
           ''' ----------------------------------------------------------------------------------------------------
           ''' <param name="pr">
           ''' The <see cref="Process"/>.
           ''' </param>
           ''' ----------------------------------------------------------------------------------------------------
           ''' <returns>
           ''' Returns <see langword="True"/> if the application is muted, <see langword="False"/> otherwise.
           ''' </returns>
           ''' ----------------------------------------------------------------------------------------------------
           Public Shared Function IsApplicationMuted(ByVal pr As Process) As Boolean

               Dim volume As ISimpleAudioVolume = AudioUtil.GetVolumeObject(pr)
               If (volume IsNot Nothing) Then
                   Dim isMuted As Boolean
                   volume.GetMute(isMuted)
                   Return isMuted
               End If

               Return False

           End Function

           ''' ----------------------------------------------------------------------------------------------------
           ''' <summary>
           ''' Gets the audio volume level of the specified process.
           ''' </summary>
           ''' ----------------------------------------------------------------------------------------------------
           ''' <param name="pr">
           ''' The <see cref="Process"/>.
           ''' </param>
           ''' ----------------------------------------------------------------------------------------------------
           ''' <returns>
           ''' The audio volume, expressed in the range between 0 and 100.
           ''' </returns>
           ''' ----------------------------------------------------------------------------------------------------
           <DebuggerStepThrough>
           Public Shared Function GetApplicationVolume(ByVal pr As Process) As Integer

               Dim volume As ISimpleAudioVolume = AudioUtil.GetVolumeObject(pr)
               If (volume IsNot Nothing) Then
                   Dim levelNormalization As Single = Nothing
                   volume.GetMasterVolume(levelNormalization)
                   Return CInt(levelNormalization * 100)
               End If

               Return 100

           End Function

           ''' ----------------------------------------------------------------------------------------------------
           ''' <summary>
           ''' Sets the audio volume level for the specified process.
           ''' </summary>
           ''' ----------------------------------------------------------------------------------------------------
           ''' <param name="pr">
           ''' The <see cref="Process"/>.
           ''' </param>
           '''
           ''' <param name="volumeLevel">
           ''' The new volume level, expressed in the range between 0 and 100.
           ''' </param>
           ''' ----------------------------------------------------------------------------------------------------
           <DebuggerStepThrough>
           Public Shared Sub SetApplicationVolume(ByVal pr As Process, ByVal volumeLevel As Integer)

               If (volumeLevel < 0) OrElse (volumeLevel > 100) Then
                   Throw New ArgumentOutOfRangeException(paramName:=NameOf(volumeLevel),
                                                     actualValue:=volumeLevel,
                                                     message:=String.Format(CultureInfo.CurrentCulture,
                                                              "A value of '{0}' is not valid for '{1}'. '{1}' must be between 0 and 100.",
                                                              volumeLevel, NameOf(volumeLevel)))
               End If

               Dim volume As ISimpleAudioVolume = AudioUtil.GetVolumeObject(pr)
               If (volume IsNot Nothing) Then
                   Dim guid As Guid = Guid.Empty
                   volume.SetMasterVolume((volumeLevel / 100.0F), guid)
               End If

           End Sub

#End Region

#Region " Private Methods "

           ''' ----------------------------------------------------------------------------------------------------
           ''' <summary>
           ''' Enumerate all the <see cref="IAudioSessionControl2"/> of the default (<see cref="IMMDevice"/>) audio device.
           ''' </summary>
           ''' ----------------------------------------------------------------------------------------------------
           ''' <remarks>
           ''' Credits to @Simon Mourier: <see href="https://stackoverflow.com/a/14322736/1248295"/>
           ''' </remarks>
           ''' ----------------------------------------------------------------------------------------------------
           ''' <returns>
           ''' The resulting <see cref="IEnumerable(Of IAudioSessionControl2)"/>.
           ''' </returns>
           ''' ----------------------------------------------------------------------------------------------------
           <DebuggerStepperBoundary>
           Private Shared Iterator Function EnumerateAudioSessionControls() As IEnumerable(Of IAudioSessionControl2)

               ' Get the (1st render + multimedia) aodio device.
               Dim deviceEnumerator As IMMDeviceEnumerator = DirectCast(New MMDeviceEnumerator(), IMMDeviceEnumerator)
               Dim device As IMMDevice = Nothing
               deviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.Render, ERole.Multimedia, device)

               ' Activate the session manager.
               Dim IID_IAudioSessionManager2 As Guid = GetType(IAudioSessionManager2).GUID
               Dim obj As Object = Nothing
               device.Activate(IID_IAudioSessionManager2, 0, IntPtr.Zero, obj)
               Dim manager As IAudioSessionManager2 = DirectCast(obj, IAudioSessionManager2)

               ' Enumerate sessions for on this device.
               Dim sessionEnumerator As IAudioSessionEnumerator = Nothing
               manager.GetSessionEnumerator(sessionEnumerator)
               Dim sessionCount As Integer
               sessionEnumerator.GetCount(sessionCount)

               For i As Integer = 0 To (sessionCount - 1)
                   Dim ctl As IAudioSessionControl = Nothing
                   Dim ctl2 As IAudioSessionControl2
                   sessionEnumerator.GetSession(i, ctl)
                   ctl2 = DirectCast(ctl, IAudioSessionControl2)
                   Yield ctl2
                   Marshal.ReleaseComObject(ctl2)
                   Marshal.ReleaseComObject(ctl)
               Next i

               Marshal.ReleaseComObject(sessionEnumerator)
               Marshal.ReleaseComObject(manager)
               Marshal.ReleaseComObject(device)
               Marshal.ReleaseComObject(deviceEnumerator)
           End Function

           ''' ----------------------------------------------------------------------------------------------------
           ''' <summary>
           ''' Searchs and returns the corresponding <see cref="ISimpleAudioVolume"/> for the specified <see cref="Process"/>.
           ''' </summary>
           ''' ----------------------------------------------------------------------------------------------------
           ''' <remarks>
           ''' Credits to @Simon Mourier: <see href="https://stackoverflow.com/a/14322736/1248295"/>
           ''' </remarks>
           ''' ----------------------------------------------------------------------------------------------------
           ''' <param name="pr">
           ''' The <see cref="Process"/>.
           ''' </param>
           ''' ----------------------------------------------------------------------------------------------------
           ''' <returns>
           ''' The resulting <see cref="ISimpleAudioVolume"/>,
           ''' or <see langword="Nothing"/> if a <see cref="ISimpleAudioVolume"/> is not found for the specified process.
           ''' </returns>
           ''' ----------------------------------------------------------------------------------------------------
           <DebuggerStepperBoundary>
           Private Shared Function GetVolumeObject(ByVal pr As Process) As ISimpleAudioVolume

               For Each ctl As IAudioSessionControl2 In AudioUtil.EnumerateAudioSessionControls()
                   Dim pId As UInteger
                   ctl.GetProcessId(pId)

                   If (pId = pr.Id) Then
                       Return DirectCast(ctl, ISimpleAudioVolume)
                   End If
               Next ctl

               Return Nothing

           End Function

#End Region

       End Class

   End Namespace

#End Region

End Namespace

#End Region


Ejemplos de uso:

Código (vbnet) [Seleccionar]
Imports ElektroKit.Interop.IPC
Imports System.Linq


Código (vbnet) [Seleccionar]
' Get the process we want to modify.
' Note the process must have an audio mixer available to be able mute it and/or to modify its volume level.
' In other words, the process must have an audio signal enabled, like for example a videogame or a music player, or any other process with an audio output.
Dim pr As Process = Process.GetProcessesByName("process name").SingleOrDefault()


Código (vbnet) [Seleccionar]
' ----------------------- '
' GET OR SET VOLUME LEVEL '
' ----------------------- '

Dim volumeLevel As Integer ' resulting value of this variable will be in range of 0% to 100%.

' Get current process volume level.
volumeLevel = AudioUtil.GetApplicationVolume(pr)
Console.WriteLine(String.Format("Current volume level: {0}%", volumeLevel))

' Set process volume level to a new value.
AudioUtil.SetApplicationVolume(pr, 50) ' 50%
volumeLevel = AudioUtil.GetApplicationVolume(pr)
Console.WriteLine(String.Format("New volume level: {0}%", volumeLevel))


Código (vbnet) [Seleccionar]
' ------------------------ '
' MUTE OR UNMUTE A PROCESS '
' ------------------------ '

Dim isMuted As Boolean

' Mute the aplication.
AudioUtil.MuteApplication(pr)
isMuted = AudioUtil.IsApplicationMuted(pr)
Console.WriteLine(String.Format("Is appliaction properly muted: {0}", isMuted))

' Mute the aplication.
AudioUtil.UnmuteApplication(pr)
isMuted = AudioUtil.IsApplicationMuted(pr)
Console.WriteLine(String.Format("Is appliaction properly unmuted?: {0}", Not isMuted))


Eso es todo.
#754
Con respecto a Maduro tengo una pregunta para ustedes: ¿por qué nadie lo ANIQUILA ya de una vez?, lo pregunto en serio, si en teoría Venezuela es un país en pobreza absoluta con una población de 31,57 millones de habitantes y la mayoría de ellos fijian su punto de mira hacia un mismo objetivo en común (la ANIQUILACIÓN de Maduro), pues yo me pregunto cómo es posible que un dictador siga gobernando (vivito y coleando) en esas circunstancias.




................................

hay una gran diferencia entre pedir la muerte de alguien, y formular una pregunta por curiosidad para intentar comprender por que alguien tan despreciado por su pueblo no está muerto todavía con las ganas de sangre que en teoría tiene el pueblo.
#755
Cita de: Tachikomaia en 28 Agosto 2018, 09:02 AMaún Internet no me atrapó

eso debe ser por que todavía no viste ningún video de Jess Greenberg y sus hipnóticas y cautivadoras "sinfonías"...

[youtube=640,360]https://www.youtube.com/watch?v=d2RZXeQc5HU[/youtube]

por cierto, cómo pasan los años, 30 millones de visitas lleva ya el video, 29 de ellos son pajuelos salidillos (la mitad de ellos reincidentes), y el millón restante feminazis indignadas.

Saludos.
#756
Cita de: rigorvzla en 28 Agosto 2018, 03:01 AMya previamente habia logrado con ejemplos previos de elektro crear una aplicacion simple con parametros donde mostraba mensajes, solo que se presentaron los problemas como que se abria nuevamente la aplicacion, cosa que no es correcto, entre otras cosas.

Primero presentaste un problema, y se te ofrecieron dos soluciones (manipulación del registro de Windows, o desarrollo de una shell-extensión), luego presentaste un problema distinto y adicional que no habias comentado al principio: mantener una única instancia de tu app, y se te ofrecieron varias soluciones por mi parte con ejemplos completos y funcionales en el último post de la segunda página de este thread, que no los hayas querido o sabido aplicar es cosa tuya.

Lo comento, por que casi pareces insinuar que los problemas que te surgen sean culpa mía. Si desde un principio te expresaras con la suficiente claridad y comentando punto por punto todas y cada una de las cosas que quieres lograr hacer, todo sería más facil.




Ya que estamos, aquí te dejaré unos últimos ejemplos relacionados para mostrarte una alternativa de como lo puedes hacer. El primero demuestra una forma dinámica mediante clases de tipos genéricos, elegante y reutilizable para representar (definir) argumentos y también parsearlos en una aplicación:


...se podría decir que es una solución guiada para administrar la creación, el uso y el análisis de argumentos recibidos en la aplicación.

El segundo y último ejemplo demuestra una forma igualmente dinámica y elegante (mediante Xml) y además yo diría que incluso divertida al poder jugar con la colorización de forma dinámica, para representar la entrada de ayuda command-line mostrada por una aplicación:


Saludos.
#757
Cita de: El_Andaluz en 28 Agosto 2018, 00:44 AM
el asteroide 2016 NF23 pasará "muy cerca" de la Tierra (a algo menos de 5 millones de kilómetros o el equivalente a 13 veces la distancia entre la Tierra y la Luna) el próximo 29 de agosto. Según la NASA, el tamaño oscila entre los 70 y los 160 metros de ancho.

Esta roca espacial está considerada como "potencialmente peligrosa" por su cercanía con la Tierra.

p**a mierd@ de prensa sensacionalista...

#759
Noticias / Re: ¿Qué es el "Vamping"?
27 Agosto 2018, 07:04 AM
Este es el mejor remedio para acabar con el vamping:

#760
No soy partidario de ninguna religión, pero sobre todas las demás la religión islámica me resulta la más destructiva y dañina para la humanidad, no hay más que ver lo que los musulmanes son capaces de hacer por defender sus ideales, ataques suicidas con mochilas bombas, con armas de fuego, con aviones... un par de torres destruidas, miles de víctimas por aquí, otros miles por allá, así están siempre, MATANDO a los demás, ¿y dicen que van a poner la religión islámica como asignatura opcional?, venga hombre comedme los webos, nadie necesita aprender esa religión ni de forma opcional... solo va a servir para adoctrinar y crear más suicidas kamikazes de mierd@ que maten libremente en nuestras ciudades españolas "en nombre de Allah"...

Sinceramente, si tuviera que elegir, votaría obligado por una Cataluña independiente antes que por la asignatura opcional del Islam, por que en 10 años podría estar rodeado de gente nacida en valencia y convertida al islam con ganas de matar valencianos (o mejor dicho, católicos), hasta se podría volver peligroso salir a las calles valencianas si empiezan a hacer atentados en nombre del Islam y tal... no exagero, estas cosas siempre tienen un origen y como esto de la asignatura opcional del Islam se haga realidad entonces será el origen de futuros males y atentados en mi tierra por gente convertida, adoctrinada.

Puede que haya una parte buena y bondadosa en la religión islámica, pero me da exactamente igual, parece que esa parte buena nunca la aplican, solo saben matar y matar esos malditos fanáticos religiosos.

En fin, saludos.