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

#4971
Cita de: okik en 19 Junio 2015, 23:33 PM"La secuencia no contiene elementos"

El error se explica por si mismo, te está indicando que la query de LINQ está vacía, ya que no se ha encontrado ningún elemento que cumpla las condiciones que especifiqué (en mi caso si funciona, con mi interfáz de red Ethernet), cambia esas condiciones.

saludos!
#4972
Solo por comentarlo, ten en cuenta que lo que estás haciendo aquí no es una metodología segura que puedas aplicar a otros PC's:
Citar
Código (vbnet) [Seleccionar]
ipv4Stats = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces(0).GetIPv4Statistics

Estás accediendo a un índice específico sin haber identificado previamente si ese índice "0" hace referencia a la interfáz de red que esté activa y transfiriendo datos.

Esas classes que estás utilizando exponen miembros para identificar el adaptador en concreto que realmente quieras, mediante la MAC, el nombre de la interfáz, las DNS, la Id, el hostname, o cómo prefieras hacer la comprobación, deberías mejorarlo basándote en alguno de esos parámetros.

Esto tampoco sería un método seguro, ya que no identifico la red en concreto que quiero mostrar, pero al menos excluyes bastantes otras posibles interfaces:
Código (vbnet) [Seleccionar]
Public Shared Function GetEthernetAdapters() As IEnumerable(Of NetworkInterface)

   Return From adapter As NetworkInterface In NetworkInterface.GetAllNetworkInterfaces
          Where adapter.NetworkInterfaceType = NetworkInterfaceType.Ethernet AndAlso
                adapter.Supports(NetworkInterfaceComponent.IPv4) AndAlso
                Not adapter.IsReceiveOnly AndAlso
                Not adapter.OperationalStatus = OperationalStatus.Down

End Function

Private Sub Timer1_Tick(sender As Object, e As EventArgs) _
Handles Timer1.Tick

   Dim ipv4Stats As IPv4InterfaceStatistics = GetEthernetAdapters.First.GetIPv4Statistics

   Label16.Text = String.Format("{0} Bytes.", CStr(ipv4Stats.BytesReceived))
   Label7.Text = String.Format("{0} Bytes.", CStr(ipv4Stats.BytesSent))

End Sub


Saludos!
#4973
Cita de: okik en 19 Junio 2015, 17:17 PMEs posible usar Webbrowser sin crear el control Webbrowser:

Código (vbnet) [Seleccionar]
Dim WB as new WebBrowser

Eso es como preguntar si puedes clickar un Botón de la UI de tu app, sin haber agregado ese botón a la UI, no tiene sentido, la respuesta obviamente es No.

El control WebBrowser no es más que un host, un control que hospeda una instancia embedida del proceso de InternetExplorer.

Cuando comprendemos eso, encontes podemos decir que si es posible utilizar un ""WebBrowser"" si ejecutas manualmente el proceso de IE y utilizas un motor de automatización como por ejemplo Microsoft UI automation, pero no te recomiendo que apliques esta técnica en absoluto, ya que la utilización de UI Automation es bastante tediosa incluso para llevar a cabo pequeñas tareas (ej: obtener el texto de la barrá de título de una ventana), requiere una alta comprensión sobre el significado y la funcionalidad de todos los miembros que componen las classes de Microsoft UI automation, que no son para nada pocos.

UI Automation Overview
( No te dejes confundir por que forme parte de WPF, se puede usar perfectamente bajo Windows Forms, y para hacerle un Spy cualquier tipo de aplicación )

Yo personalmente, para la automatización de IE (y cualquier otro navegador), te recomiendo utilizar la herramienta profesional Test Studio de Telerik, es la mejor herramienta que existe para esto (le da mil vueltas a iMacros), donde se puede generar un código funcional en VB.Net/C# para llevar a cabo la automatización y controlar hasta el más mínimo detalles. Es perfecto para controlar el comportamiento de los diálogos de archivo (creo que preguntaste algo respecto a los diálogos en otro post).

Telerik Test Studio (no confundir con Telerik Testing Framework)




Cita de: okik en 19 Junio 2015, 17:17 PMMe gustaría poder usar WebBrowser sin alojar nada en el caché.
sin alojar, cookies,  imágenes, scripts, etc en el disco. Es decir, que no se descargue nada en disco.

Cómo ya hemos dicho, el control WebBrowser es un host para InternetExplorer, y, comparte la configuración actual que el usuario tenga aplicada en InternetExplorer,
los diálogos, cookies, y etc, se manejan directamente por IE, no por el control WebBrowser, así que no puedes modificar el comportamiento de IE desde el "WebBrowser control".

Esto quiere decir que, si quieres desactivar el Caching y/o el almacenamiento de Cookies del WebBrowser, debes modificar directamente la configuración de InternetExplorer en el equipo actual para desactivar esas características.

About the Browser - MSDN




Cita de: okik en 19 Junio 2015, 17:17 PMcookies, cache

Cookies:
En Internet Explorer, click en el menú Herramientas -> Opciones de Internet -> Privacidad -> Avanzado - Administración de cookies -> Bloquear.
How to manage cookies in Internet Explorer 9 - Microsoft

Caching:
En Internet Explorer, click en el menú General -> Historial de navegación -> Elegir la opción de este tipo de cache.
plus:
How to Modify Caching Behavior in Internet Explorer 10

También puedes modificar la configuración de IE mediante el registro de Windows, en la clave que almacena la configuración de IE, pero no recuerdo exactamente la ruta de la clave de registro, puedes buscarla en Google.

También existaen algunas funciones de la API de Windows que sirven para modificar el comportamiento de IE.

Nota:
Es muy importante que comprendas que, si tienes pensado sitribuir tu app, por norma general ese tipo de cambios en el sistema no no son recomendables, ya que es un claro ejemplo de intrusismo agresivo en el sistema operativo del end-user, no se debe modificar la configuración de "X" programa externo a menos que el usuario lo haya permitido estando conforme a los cambios que se aplicarán.




Cita de: okik en 19 Junio 2015, 17:17 PMSólo para obtener información de una página como links o código

Si no necesitas navegar en la página entonces no necesitas usar IE (WebBrowser) ni el host de MSHTML ni nada parecido, puedes usar la Class HttpWebRequest/HttpWebResponse (entre otras) para realizar peticiones a una url y obtener la respuesta (el código fuente de la página).

HttpWebRequest Class (System.Net) - MSDN
HttpWebResponse Class (System.Net) - MSDN

Esa es la técnica que generálmente se utiliza para ese tipo de tareas, usar un WebBrowser es algo muy excesivo en caso de que no necesites navegar por la página de forma interactiva/visual.

Si necesitas usar la nevagación y necesitas desactivar cualquier tipo de caching, entonces en lugar de trastear con IE y la configuraciónd le usuario, es preferible que utilices un host de Firefox o Chrome para .Net (aunque tendrás que documentarte bien primero, ya que cambia mucho el nombre de los miembros de sus classes, y la manera de utilizarlos en comparación con un WebBrowser control).

Gecko FX

Saludos!
#4974
Puedes utilizar el gestor de descargas JDownloader, soporta videos normales y protegidos de Youtube (cómo los de Vevo, de música).

Imagino que otros gestores que le hacen la competencia a JD también tendrán soporte para Youtube, cómo IDM (Internet Download Manager).

Saludos
#4975
Un pequeño código para crear nuevas cuentas de usuario en el equipo.

Ejemplo de uso:
Código (vbnet) [Seleccionar]
       CreateUserAccount(username:="Elektro",
                         password:="",
                         displayName:="Elektro account.",
                         description:="This is a test user-account.",
                         canChangePwd:=True,
                         pwdExpires:=False,
                         groupSid:=WellKnownSidType.BuiltinAdministratorsSid)


Código fuente:
Código (vbnet) [Seleccionar]

   ''' ----------------------------------------------------------------------------------------------------
   ''' <remarks>
   ''' Title : Create user-account.
   ''' Author: Elektro
   ''' Date  : 19-June-2015
   ''' </remarks>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <example>
   ''' CreateUserAccount(username:="Elektro",
   '''                   password:="",
   '''                   displayName:="Elektro Account.",
   '''                   description:="This is a test user-account.",
   '''                   canChangePwd:=True,
   '''                   pwdExpires:=False,
   '''                   groupSid:=WellKnownSidType.BuiltinAdministratorsSid)
   ''' </example>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Creates a new user account in the current machine.
   ''' This function does not adds the user to the machine.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <param name="username">
   ''' The user name.
   ''' </param>
   '''
   ''' <param name="password">
   ''' The user password.
   ''' If this value is empty, account is set to don't require a password.
   ''' </param>
   '''
   ''' <param name="displayName">
   ''' The display name of the user account.
   ''' </param>
   '''
   ''' <param name="description">
   ''' The description of the user account.
   ''' </param>
   '''
   ''' <param name="canChangePwd">
   ''' A value that indicates whether the user can change its password.
   ''' </param>
   '''
   ''' <param name="pwdExpires">
   ''' A value that indicates whether the password should expire.
   ''' </param>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <returns>
   ''' An <see cref="UserPrincipal"/> object that contains the user data.
   ''' </returns>
   ''' ----------------------------------------------------------------------------------------------------
   <DebuggerStepThrough>
   Public Shared Function CreateUserAccount(ByVal username As String,
                                            ByVal password As String,
                                            ByVal displayName As String,
                                            ByVal description As String,
                                            ByVal canChangePwd As Boolean,
                                            ByVal pwdExpires As Boolean) As UserPrincipal

       Using context As New PrincipalContext(ContextType.Machine)

           Dim user As New UserPrincipal(context)

           With user

               .Name = username

               .SetPassword(password)
               .PasswordNotRequired = String.IsNullOrEmpty(password)

               .DisplayName = displayName
               .Description = description

               .UserCannotChangePassword = canChangePwd
               .PasswordNeverExpires = pwdExpires

               .Enabled = True
               .Save()

           End With

           Return user

       End Using

   End Function

   ''' ----------------------------------------------------------------------------------------------------
   ''' <remarks>
   ''' Title : Add user-account.
   ''' Author: Elektro
   ''' Date  : 19-June-2015
   ''' </remarks>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <example>
   ''' AddUserAccount(username:="Elektro",
   '''                password:="",
   '''                displayName:="Elektro Account.",
   '''                description:="This is a test user-account.",
   '''                canChangePwd:=True,
   '''                pwdExpires:=False,
   '''                groupSid:=WellKnownSidType.BuiltinAdministratorsSid)
   ''' </example>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Adds a new user account in the current machine.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <param name="username">
   ''' The user name.
   ''' </param>
   '''
   ''' <param name="password">
   ''' The user password.
   ''' If this value is empty, account is set to don't require a password.
   ''' </param>
   '''
   ''' <param name="displayName">
   ''' The display name of the user account.
   ''' </param>
   '''
   ''' <param name="description">
   ''' The description of the user account.
   ''' </param>
   '''
   ''' <param name="canChangePwd">
   ''' A value that indicates whether the user can change its password.
   ''' </param>
   '''
   ''' <param name="pwdExpires">
   ''' A value that indicates whether the password should expire.
   ''' </param>
   '''
   ''' <param name="groupSid">
   ''' A <see cref="WellKnownSidType"/> security identifier (SID) that determines the account group where to add the user.
   ''' </param>
   ''' ----------------------------------------------------------------------------------------------------
   <DebuggerStepThrough>
   Public Shared Sub AddUserAccount(ByVal username As String,
                                    ByVal password As String,
                                    ByVal displayName As String,
                                    ByVal description As String,
                                    ByVal canChangePwd As Boolean,
                                    ByVal pwdExpires As Boolean,
                                    Optional ByVal groupSid As WellKnownSidType = WellKnownSidType.BuiltinUsersSid)

       Using context As New PrincipalContext(ContextType.Machine)

           Using user As UserPrincipal = CreateUserAccount(username, password, displayName, description, canChangePwd, pwdExpires)

               Using group As GroupPrincipal = GroupPrincipal.FindByIdentity(context, IdentityType.Sid, New SecurityIdentifier(groupSid, Nothing).Value)

                   group.Members.Add(user)
                   group.Save()

               End Using ' group

           End Using ' user

       End Using ' context

   End Sub

   ''' ----------------------------------------------------------------------------------------------------
   ''' <remarks>
   ''' Title : Add user-account.
   ''' Author: Elektro
   ''' Date  : 19-June-2015
   ''' </remarks>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <example>
   ''' AddUserAccount(user:=myUserPrincipal, groupSid:=WellKnownSidType.BuiltinAdministratorsSid)
   ''' </example>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Adds a new user account in the current machine.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <param name="user">
   ''' An <see cref="UserPrincipal"/> object that contains the user data.
   ''' </param>
   '''
   ''' <param name="groupSid">
   ''' A <see cref="WellKnownSidType"/> security identifier (SID) that determines the account group where to add the user.
   ''' </param>
   ''' ----------------------------------------------------------------------------------------------------
   <DebuggerStepThrough>
   Public Shared Sub AddUserAccount(ByVal user As UserPrincipal,
                                    Optional ByVal groupSid As WellKnownSidType = WellKnownSidType.BuiltinUsersSid)

       Using context As New PrincipalContext(ContextType.Machine)

           Using group As GroupPrincipal = GroupPrincipal.FindByIdentity(context, IdentityType.Sid, New SecurityIdentifier(groupSid, Nothing).Value)

               group.Members.Add(user)
               group.Save()

           End Using ' group

       End Using ' context

   End Sub
#4977
Una Class para manipular archivos de texto.

Diagrama de clase:


Ejemplo de uso:
Código (vbnet) [Seleccionar]
       Using txtFile As New TextfileStream("C:\File.txt", Encoding.Default)

           txtFile.Lock()

           txtFile.Lines.Add("Test")
           txtFile.Lines(0) = "Hello World!"
           txtFile.Save()

           Dim lineIndex As Integer
           Dim lineCount As Integer = txtFile.Lines.Count
           Dim textFormat As String =
               Environment.NewLine &
               String.Join(ControlChars.NewLine,
                           From line As String In txtFile.Lines
                           Select String.Format("{0}: {1}",
                           Interlocked.Increment(lineIndex).ToString(New String("0"c, lineCount.ToString.Length)), line))

           Console.WriteLine(String.Format("FilePath: {0}", txtFile.Filepath))
           Console.WriteLine(String.Format("Encoding: {0}", txtFile.Encoding.WebName))
           Console.WriteLine(String.Format("Lines   : {0}", textFormat))

       End Using


Código fuente:
Código (vbnet) [Seleccionar]
' ***********************************************************************
' Author   : Elektro
' Modified : 18-June-2015
' ***********************************************************************
' <copyright file="TextfileStream.vb" company="Elektro Studios">
'     Copyright (c) Elektro Studios. All rights reserved.
' </copyright>
' ***********************************************************************

#Region " Usage Examples "

'Using txtFile As New TextfileStream("C:\File.txt")
'
'    txtFile.Lock()
'
'    txtFile.Lines.Add("Test")
'    txtFile.Lines(0) = "Hello World!"
'    txtFile.Save()
'
'    Dim lineIndex As Integer
'    Dim lineCount As Integer = txtFile.Lines.Count
'    Dim textFormat As String =
'        Environment.NewLine &
'        String.Join(ControlChars.NewLine,
'                    From line As String In txtFile.Lines
'                    Select String.Format("{0}: {1}",
'                    Interlocked.Increment(lineIndex).ToString(New String("0"c, lineCount.ToString.Length)), line))
'
'    Console.WriteLine(String.Format("FilePath: {0}", txtFile.Filepath))
'    Console.WriteLine(String.Format("Encoding: {0}", txtFile.Encoding.WebName))
'    Console.WriteLine(String.Format("Lines   : {0}", textFormat))
'
'End Using

#End Region

#Region " Option Statements "

Option Strict On
Option Explicit On
Option Infer Off

#End Region

#Region " Imports "

Imports Microsoft.Win32.SafeHandles
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.IO
Imports System.Linq
Imports System.Text

#End Region

#Region " Textfile "

''' <summary>
''' Reads and manages the contents of a textfile.
''' It encapsulates a <see cref="System.IO.FileStream"/> to access the textfile.
''' </summary>
Public NotInheritable Class TextfileStream : Implements IDisposable

#Region " Properties "

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Gets the textfile path.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <value>
   ''' The textfile path.
   ''' </value>
   ''' ----------------------------------------------------------------------------------------------------
   Public ReadOnly Property Filepath As String
       Get
           Return Me.filepathB
       End Get
   End Property
   ''' <summary>
   ''' (Backing field)
   ''' The textfile path.
   ''' </summary>
   Private ReadOnly filepathB As String

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Gets the textfile <see cref="Encoding"/>.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <value>
   ''' The textfile <see cref="Encoding"/>.
   ''' </value>
   ''' ----------------------------------------------------------------------------------------------------
   Public ReadOnly Property Encoding As Encoding
       Get
           Return Me.encodingB
       End Get
   End Property
   ''' <summary>
   ''' (Backing field)
   ''' The textfile <see cref="Encoding"/>.
   ''' </summary>
   Private ReadOnly encodingB As Encoding = Encoding.Default

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Gets or sets the textfile lines.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <value>
   ''' The textfile lines.
   ''' </value>
   ''' ----------------------------------------------------------------------------------------------------
   Public Property Lines As TexfileLines
       Get
           Return Me.linesB
       End Get
       Set(ByVal value As TexfileLines)
           Me.linesB = value
       End Set
   End Property
   ''' <summary>
   ''' (Backing field)
   ''' The textfile lines.
   ''' </summary>
   Private linesB As TexfileLines

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Gets the <see cref="System.IO.FileStream"/> instance that exposes a <see cref="System.IO.Stream"/> around the textfile.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <value>
   ''' The <see cref="System.IO.FileStream"/> instance.
   ''' </value>
   ''' ----------------------------------------------------------------------------------------------------
   Private ReadOnly Property fs As FileStream
       Get
           Return Me.fsB
       End Get
   End Property
   ''' <summary>
   ''' (Backing Field)
   ''' The <see cref="System.IO.FileStream"/> instance that exposes a <see cref="System.IO.Stream"/> around the textfile.
   ''' </summary>
   Private ReadOnly fsB As FileStream

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Gets a <see cref="Microsoft.Win32.SafeHandles.SafeFileHandle"/> object that represents the operating system file handle of the textfile.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <value>
   ''' A <see cref="Microsoft.Win32.SafeHandles.SafeFileHandle"/> object that represents the operating system file handle of the textfile.
   ''' </value>
   ''' ----------------------------------------------------------------------------------------------------
   Public ReadOnly Property FileHandle As SafeFileHandle
       Get
           Return Me.fs.SafeFileHandle
       End Get
   End Property
   ''' <summary>
   ''' (Backing Field)
   ''' A <see cref="Microsoft.Win32.SafeHandles.SafeFileHandle"/> object that represents the operating system file handle of the textfile.
   ''' </summary>
   Private ReadOnly fileHandleB As SafeFileHandle

#End Region

#Region " Sub-Classes "

   ''' <summary>
   ''' Defines a <see cref="System.Collections.Generic.List(Of String)"/> that contains the text-lines of a textfile.
   ''' </summary>
   Partial Public NotInheritable Class TexfileLines : Inherits List(Of String)

#Region " Properties "

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Gets the number of blank elements actually contained in the <see cref="System.Collections.Generic.List(Of T)"/>.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <value>
       ''' The number of blank elements actually contained in the <see cref="System.Collections.Generic.List(Of T)"/>.
       ''' </value>
       ''' ----------------------------------------------------------------------------------------------------
       Public ReadOnly Property CountBlank As Integer
           Get
               Return (From line As String In Me
                       Where String.IsNullOrEmpty(line) OrElse
                             String.IsNullOrWhiteSpace(line)).Count
           End Get
       End Property

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Gets the number of non-blank elements actually contained in the <see cref="System.Collections.Generic.List(Of T)"/>.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <value>
       ''' The number of non-blank elements actually contained in the <see cref="System.Collections.Generic.List(Of T)"/>.
       ''' </value>
       ''' ----------------------------------------------------------------------------------------------------
       Public ReadOnly Property CountNonBlank As Integer
           Get
               Return (From line As String In Me
                       Where Not String.IsNullOrEmpty(line) AndAlso
                             Not String.IsNullOrWhiteSpace(line)).Count
           End Get
       End Property

#End Region

#Region " Constructors "

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Initializes a new instance of the <see cref="TexfileLines"/> class.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       Public Sub New()
       End Sub

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Initializes a new instance of the <see cref="TexfileLines"/> class.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <param name="lines">
       ''' The text-lines.
       ''' </param>
       ''' ----------------------------------------------------------------------------------------------------
       Public Sub New(ByVal lines As IEnumerable(Of String))

           Me.AddRange(lines)

       End Sub

#End Region

#Region " Public Methods "

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Randomizes the elements of the <see cref="System.Collections.Generic.List(Of T)"/>.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <returns>
       ''' An <see cref="IEnumerable(Of String)"/> that contains the randomized elements.
       ''' </returns>
       ''' ----------------------------------------------------------------------------------------------------
       <DebuggerStepThrough>
       Public Function Randomize() As IEnumerable(Of String)

           Dim rand As New Random

           Return From line As String In Me
                  Order By rand.Next

       End Function

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Removes the elements at the specified indexes of the <see cref="System.Collections.Generic.List(Of T)"/>.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <param name="indexes">
       ''' The zero-based indexes of the elements to remove.
       ''' </param>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <exception cref="IndexOutOfRangeException">
       ''' </exception>
       ''' ----------------------------------------------------------------------------------------------------
       <DebuggerStepThrough>
       Public Overloads Sub RemoveAt(ByVal indexes As IEnumerable(Of Integer))

           Dim lineCount As Integer = Me.Count

           Select Case indexes.Max

               Case Is < 0, Is > lineCount
                   Throw New IndexOutOfRangeException()

               Case Else
                   Dim tmpRef As IEnumerable(Of String) =
                       Me.Select(Function(line As String, index As Integer)
                                     Return New With
                                            {
                                                Key .line = line,
                                                Key .index = index + 1
                                            }
                                 End Function).
                          Where(Function(con) Not indexes.Contains(con.index)).
                          Select(Function(con) con.line)

                   Me.Clear()
                   Me.AddRange(tmpRef)
                   tmpRef = Nothing

           End Select

       End Sub

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Removes all leading and trailing occurrences of a set of characters from all the elements of the <see cref="System.Collections.Generic.List(Of T)"/>.
       ''' </summary>  
       ''' ----------------------------------------------------------------------------------------------------
       ''' <param name="trimChars">
       ''' An array of Unicode characters to remove.
       ''' If <paramref name="trimChars"></paramref> is <c>Nothing</c> or an empty array, Unicode white-space characters are removed instead.
       ''' </param>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <returns>
       ''' The <see cref="IEnumerable(Of String)"/> that remains after all occurrences of the specified characters are removed from the start and the end of the elements.
       ''' </returns>
       ''' ----------------------------------------------------------------------------------------------------
       <DebuggerStepThrough>
       Public Function Trim(Optional ByVal trimChars As Char() = Nothing) As IEnumerable(Of String)

           Return From line As String In Me
                  Select line.Trim(trimChars)

       End Function

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Removes all leading occurrences of a set of characters from all the elements of the <see cref="System.Collections.Generic.List(Of T)"/>.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <param name="trimChars">
       ''' An array of Unicode characters to remove.
       ''' If <paramref name="trimChars"></paramref> is <c>Nothing</c> or an empty array, Unicode white-space characters are removed instead.
       ''' </param>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <returns>
       ''' The <see cref="IEnumerable(Of String)"/> that remains after all occurrences of the specified characters are removed from the start of the elements.
       ''' </returns>
       ''' ----------------------------------------------------------------------------------------------------
       <DebuggerStepThrough>
       Public Function TrimStart(Optional ByVal trimChars As Char() = Nothing) As IEnumerable(Of String)

           Return From line As String In Me
                  Select line.TrimStart(trimChars)

       End Function

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Removes all trailing occurrences of a set of characters from all the elements of the <see cref="System.Collections.Generic.List(Of T)"/>.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <param name="trimChars">
       ''' An array of Unicode characters to remove.
       ''' If <paramref name="trimChars"></paramref> is <c>Nothing</c> or an empty array, Unicode white-space characters are removed instead.
       ''' </param>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <returns>
       ''' The <see cref="IEnumerable(Of String)"/> that remains after all occurrences of the specified characters are removed from the end of the elements.
       ''' </returns>
       ''' ----------------------------------------------------------------------------------------------------
       <DebuggerStepThrough>
       Public Function TrimEnd(Optional ByVal trimChars As Char() = Nothing) As IEnumerable(Of String)

           Return From line As String In Me
                  Select line.TrimEnd(trimChars)

       End Function

#End Region

   End Class

#End Region

#Region " Constructors "

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

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Initializes a new instance of the <see cref="TextfileStream"/> class.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <param name="filepath">
   ''' The textfile path.
   ''' If the path doesn't exists, the file will be created.
   ''' </param>
   '''
   ''' <param name="encoding">
   ''' The file encoding used to read the textfile.
   ''' If <paramref name="encoding"></paramref> value is <c>Nothing</c>, an attempt to detect the encoding will be realized,
   ''' if the attempt to detect the file encoding fails, <see cref="Encoding.Default"/> will be used.
   ''' </param>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <exception cref="FileNotFoundException">
   ''' File not found.
   ''' </exception>
   ''' ----------------------------------------------------------------------------------------------------
   <DebuggerStepThrough>
   Public Sub New(ByVal filepath As String,
                  Optional ByVal encoding As Encoding = Nothing)

       If Not File.Exists(filepath) Then
           Throw New FileNotFoundException(message:="File not found.", fileName:=filepath)

       Else
           Me.filepathB = filepath
           Me.encodingB = encoding

           If Me.encodingB Is Nothing Then
               Me.encodingB = Me.GetEncoding
           End If

           Me.linesB = New TexfileLines(File.ReadAllLines(Me.filepathB, Me.encodingB))
           Me.fsB = New FileStream(filepath, FileMode.OpenOrCreate)

       End If

   End Sub

#End Region

#Region " Public Methods "

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Prevents other processes from reading or writing to the textfile.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   <DebuggerStepThrough>
   Public Sub Lock()

       Me.fsB.Lock(0, Me.fsB.Length)

   End Sub

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Allows access by other processes to read or write to a textfile that was previously locked.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   <DebuggerStepThrough>
   Public Sub Unlock()

       Me.fsB.Unlock(0, Me.fsB.Length)

   End Sub

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Closes the current stream and releases any resources (such as sockets and file handles) associated with the current stream.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   <DebuggerStepThrough>
   Public Sub Close()
       Me.fsB.Close()
   End Sub

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Save the lines of the current textfile, in the current textfile.
   ''' Note that the <see cref="Save"></see> method should be called to apply any realized changes in the lines of the textfile
   ''' before disposing this <see cref="TextfileStream"></see> instance.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <param name="encoding">
   ''' The file encoding used to write the textfile.
   ''' </param>
   ''' ----------------------------------------------------------------------------------------------------
   <DebuggerStepThrough>
   Public Sub Save(Optional ByVal encoding As Encoding = Nothing)

       If encoding Is Nothing Then
           encoding = Me.encodingB
       End If

       Dim bytes As Byte() = encoding.GetBytes(Me.ToString)

       Me.fs.SetLength(bytes.Length)
       Me.fs.Write(bytes, 0, bytes.Length)

   End Sub

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Save the lines of the current textfile, in the target textfile.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <param name="filepath">
   ''' The target filepath where to save the text.
   ''' </param>
   '''
   ''' <param name="encoding">
   ''' The file encoding used to write the textfile.
   ''' </param>
   ''' ----------------------------------------------------------------------------------------------------
   <DebuggerStepThrough>
   Public Sub Save(ByVal filepath As String,
                   Optional ByVal encoding As Encoding = Nothing)

       If encoding Is Nothing Then
           encoding = Me.encodingB
       End If

       Using fs As New FileStream(filepath, FileMode.OpenOrCreate)

           Dim bytes As Byte() = encoding.GetBytes(Me.ToString)

           fs.SetLength(bytes.Length)
           fs.Write(bytes, 0, bytes.Length)

       End Using

   End Sub

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Returns a <see cref="String"/> that represents this instance.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <returns>
   ''' A <see cref="String"/> that represents this instance.
   ''' </returns>
   ''' ----------------------------------------------------------------------------------------------------
   <DebuggerStepThrough>
   Public Overrides Function ToString() As String

       Return String.Join(ControlChars.NewLine, Me.linesB)

   End Function

#End Region

#Region " Private Methods "

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Determines the <see cref="Encoding"/> of the current textfile.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <returns>
   ''' If the encoding can be detected, the return value is the detected <see cref="Encoding"/>,
   ''' if the encoding can't be detected, the return value is <see cref="Encoding.Default"/>.
   ''' </returns>
   ''' ----------------------------------------------------------------------------------------------------
   <DebuggerStepThrough>
   Private Function GetEncoding() As Encoding

       Dim encoding As Encoding = Nothing
       Dim bytes As Byte() = File.ReadAllBytes(Me.filepathB)

       For Each encodingInfo As EncodingInfo In encoding.GetEncodings()

           Dim currentEncoding As Encoding = encodingInfo.GetEncoding()
           Dim preamble As Byte() = currentEncoding.GetPreamble()
           Dim match As Boolean = True

           If (preamble.Length > 0) AndAlso (preamble.Length <= bytes.Length) Then

               For i As Integer = 0 To (preamble.Length - 1)

                   If preamble(i) <> bytes(i) Then
                       match = False
                       Exit For
                   End If

               Next i

           Else
               match = False

           End If

           If match Then
               encoding = currentEncoding
               Exit For
           End If

       Next encodingInfo

       If encoding Is Nothing Then
           Return encoding.Default

       Else
           Return encoding

       End If

   End Function

#End Region

#Region " IDisposable "

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' To detect redundant calls when disposing.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   Private isDisposed As Boolean = False

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Prevent calls to methods after disposing.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <exception cref="System.ObjectDisposedException"></exception>
   ''' ----------------------------------------------------------------------------------------------------
   Private Sub DisposedCheck()

       If Me.isDisposed Then
           Throw New ObjectDisposedException(Me.GetType.FullName)
       End If

   End Sub

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Releases all the resources used by this <see cref="TextfileStream"></see> instance.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   Public Sub Dispose() Implements IDisposable.Dispose
       Me.Dispose(isDisposing:=True)
       GC.SuppressFinalize(obj:=Me)
   End Sub

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Releases unmanaged and - optionally - managed resources.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <param name="isDisposing">
   ''' <c>True</c> to release both managed and unmanaged resources;
   ''' <c>False</c> to release only unmanaged resources.
   ''' </param>
   ''' ----------------------------------------------------------------------------------------------------
   Protected Sub Dispose(ByVal isDisposing As Boolean)

       If Not Me.isDisposed Then

           If isDisposing Then

               If Me.fsB IsNot Nothing Then
                   Me.fsB.Close()
                   Me.linesB.Clear()
               End If

           End If

       End If

       Me.isDisposed = True

   End Sub

#End Region

End Class

#End Region
#4978
Cita de: nolasco281 en 19 Junio 2015, 06:27 AM
Hola Eleкtro.

Disculpas las molestias pero el primer link de la pag 1 de snippets que es de mediafire no funciona ni tampoco el de la pagina 36 Actualizada la colección de snippets con un total de 544 Snippets
talvez puedas compartirlos en otro compila o volver a subir ese no habia teniado el gusto de ver el tema y me parece muy bueno.

Saludos.

Hmmm... antes de nada, ¡Gracias por avisar!, pero estoy preparando una actualización importante, hay muchos snippets antiguos que necesitan una refactorización completa, otros es mejor eliminarlos o adaptarlos para otros propósitos, y en fin, un lio, prefiero no resubir nada de momento hasta que no "limpie" todos los snippets, y son unos 700 (me está llevando meses xD).

De todas formas, aquí puedes descargar una versión más reciente de la colección de snippets:

Cita de: http://foro.elhacker.net/series_peliculas_musica_juegos_programas/microsoft_visual_studio_2013_ultimate_resource_pack_actualizado_09oct2014-t422732.0.htmlhttp://www.mediafire.com/download/34moxtwloovqw9a/Visual+Studio+CodeSnippet+Collection.exe

(si prefieres no usar el exe, puedes desempaquetar su contenido con la aplicación InnoUnp para InnoSetup)

Saludos!
#4979
Cita de: zonahurbana en 19 Junio 2015, 05:48 AM
Me pregunto si luego de usar los componentes free y generar un ejecutable los usuarios finales podrán ejecutar el programa sin problemas.

zonahurbana, cómo dice la respuesta de la imagen que he mostrado, si, se podrá seguir usando sin problemas, pero, inexorablemente al iniciar la app algunas veces (al cargar el ensamblado base de Telerik), aparecerá un popup de aviso recordando que se está utilizando una versión de prueba.

...Al menos eso es lo que da a entender por "from time to time", pero quizás también se puede estar refiriendo a que se muestre un aviso cada "X" minutos mientras la aplicación se mantenga en ejecución, no se que sería peor xD.

EDITO:
Para salir de dudas sobre la agresividad de las limitaciones post-trial (ya que no te manejas bien con el inglés para preguntar al soporte de Telerik), lo mejor que puedes hacer es instalarte una V.M., compilas una app en tu S.O. huésped con la versión de prueba de Telerik UI, y por último ejecutas en el S.O. invitado la app que compilaste para ver que ocurre. ...O pásale la app a algún colega y que la pruebe xD.

Saludos!
#4980
¿Por qué nunca nadie se lee el F.A.Q de un servicio del que tiene dudas, o acude a la asistencia de dicho servicio para encontrar respuestas de sus representantes?.  :-\

http://www.telerik.com/purchase/faq/platform

[ img ]http://i.imgur.com/qPn2e5R.png[ /img ]

EDITO: No es exactamente eso, estoy buscando ahora sobre WinForms.


http://www.telerik.com/forums/question-regarding-trial-versions



Saludos!