elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Mensajes
Páginas: 1 ... 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 [513] 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 ... 1236
5121  Programación / .NET (C#, VB.NET, ASP) / Re: Leer datos de una tabla html en: 18 Junio 2015, 21:55 pm
Citar
Es más, se me ocurre que también se podría usar ChrW(13).

El mismo "error" de nuevo. puedes utilizar la función Convert.ToChar.

pero si uso vbCrlf ¿tampoco pasa nada no?. Quiero decir, que no afecta en nada al programa, supongo.

No, en realidad no pasa nada ...o según se mire,
los wrappers de vb6 siguen siendo puro código .Net, pero la razón de que existan es por compatibilidad, esto quiere decir que un buen día podrían dejar de existir,

pero, yo te lo comento más que nada por que simplemente el hecho de recurrir a las viejas técnicas o nombres de funciones de VB6 no es algo bueno ya que de alguna manera te estancas en esa tecnología de hace ya casi 2 décadas, y entonces no sigues buenas prácticas de programación en .Net, ya que esto es .Net, no VB6,

y, aunque de todas formas sea puro código .Net cómo ya he dicho, si vieras el código fuente de esos wrappers (mediante Reflection) es bastante horrible en comparación con el resto de sus equivalentes funciones built-in que no forman parte del namespace Microsoft.VisualBasic,
por ende, te recomiendo no utilizar practicamente ningún miembro que forme parte del namespace Microsoft.VisualBasic, es decir, ningún nombre de función que conozcas de Vb6 plus las constantes y todo eso, ya que todo tiene su equivalente en otras clases más "seguras" y optimizadas de .Net.

PD: En mi opinión, es una mala costumbre que les pasa a muchas personas, bien por que hacen la transición de vb6 a .net y preservan sus costumbres, o también a iniciados en VB.Net que hacen copy/pastes de Google, ya que en la mayoría de respuestas que encuentres en Google solo verás morralla vb6-estilizada de programadores que siguen este tipo de prácticas con VB.Net.

Saludos!
5122  Programación / Programación General / MOVIDO: Acceder a carpetas web en Aplicacion Java en: 18 Junio 2015, 17:01 pm
El tema ha sido movido a Java.

http://foro.elhacker.net/index.php?topic=437204.0
5123  Foros Generales / Foro Libre / Re: ¿Quién es tu sensei? en: 17 Junio 2015, 21:23 pm
Elektro, kub0x, números, Shell Root, WHK, Elektro, MinusFour, #dvry, .:UNDER:., engel lex y por supuesto el-brujo, y quizás más que no tuve la oportunidad de observar y conocer. Todos ellos son talentosos devs.

Que bien, yo salgo dos veces, ¡y el resto no!, chuparos esa!!, soy con diferencia el más sabio de los aquí presentes             ...(por supuesto que NO, ni de coña xD).



Este tipo de posts nunca me han gustado, solo consiguen calificar a unos pocos y dejar en el olvido a otros que tanto se merecen ser nombrados cómo el resto, cada uno tiene conocimientos de algún tipo distintos, es imposible clasificar por "sabio" a las personas de este foro, todos son sabios en un sentido o en otro.

Cualquiera de los helper-users que estamos acostumbrados a ver cómo por ejemplo al grande Gus Garsaky que he citado, o cualquiera del staff de elhacker es un buen ejemplo a seguir, ¿qué pasa por ejemplo son Simorg, Aprendiz-oscuro, y el resto que tienen amplios conocimientos de Hardware que ni de lejos tendremos nosotros?, cada uno cuenta en sabiduría.

Saludos!
5124  Programación / .NET (C#, VB.NET, ASP) / Re: Leer datos de una tabla html en: 17 Junio 2015, 15:32 pm
He encontrado esta forma usando System.Windows.Forms.HtmlDocument y algo tan viejo como la función InStr.

El código que has mostrado está bastante vb6-estilizado.

En lugar de la función InStr, puedes utilizar la función String.IndexOf()

En lugar de la constante vbCrLf, puedes usar la constante ControlChars.CrLf

Saludos!
5125  Foros Generales / Foro Libre / Re: ¿Quién es tu sensei? en: 17 Junio 2015, 15:12 pm
Torbe, de ese si que se puede aprender cómo hacerle un poco de ingeniería inversa a la vida para convertirla en un paraiso, siendo muy feo y empezando desde la nada. :xD

Los conocimientos de todos los moderadores de Ing. Inversa me fascinan, ya que yo no me he desarrollado bien en ese aspecto, pero de entre los habituales de esa sección del foro, los conocimientos de un usuario llamado Mad Antrax sobre el cheating me asombran, aunque es un hueso muy duro de roer.

Saludos!
5126  Programación / .NET (C#, VB.NET, ASP) / Re: ¿Compronar la firma de una función P/Invoke en tiempo de ejecución? en: 17 Junio 2015, 04:02 am
Analizando bastante a fondo la TEDIOSA class MethodInfo descubrí cómo resolverlo:

Código
  1. Dim isSetLastError As Boolean =
  2.    CType(expr.Body, MethodCallExpression).Method.GetCustomAttributes(False).
  3.                                                  OfType(Of DllImportAttribute)().FirstOrDefault.SetLastError



EDITO:

Os dejo el método genérico si quereis testearlo, es simplemente el inicio de una solución todo-en-uno para ahorrar toneladas de repetición de escritura de código para llevar a cabo la misma tarea, y cómo tal puede no ser perfecto, de hecho no lo es, es imposible hacer una función de este estilo que sea "compatible" con la magnitud de funciones de la WinAPI, ya que la función GetLastError depende de la función "X" que haya sido llamada, en la que algunos casos no tiene por que devolver "0" para una salida exitosa, pero si estamos seguros del valor de retorno de las funciones que usemos entonces si que es bueno usarlo.

Código
  1.    ''' ----------------------------------------------------------------------------------------------------
  2.    ''' <remarks>
  3.    ''' Title : SafePInvoke
  4.    ''' Author: Elektro
  5.    ''' Date  : 17-June-2015
  6.    ''' </remarks>
  7.    ''' ----------------------------------------------------------------------------------------------------
  8.    ''' <summary>
  9.    ''' Invokes the specified encapsulated function, trying to provide a higher safety level for error-handling.
  10.    ''' If the function that was called using platform invoke has the <see cref="DllImportAttribute.SetLastError"/>,
  11.    ''' then it checks the exit code returned by the function, and, if is not a success code, throws a <see cref="Win32Exception"/>.
  12.    ''' </summary>
  13.    ''' ----------------------------------------------------------------------------------------------------
  14.    ''' <typeparam name="T"></typeparam>
  15.    '''
  16.    ''' <param name="expr">
  17.    ''' The encapsulated function.
  18.    ''' </param>
  19.    '''
  20.    ''' <param name="refResult">
  21.    ''' The referenced result variable.
  22.    ''' </param>
  23.    ''' ----------------------------------------------------------------------------------------------------
  24.    ''' <returns>
  25.    ''' The type of the return value depends on the function definition.
  26.    ''' </returns>
  27.    ''' ----------------------------------------------------------------------------------------------------
  28.    ''' <exception cref="Win32Exception">
  29.    ''' Function 'X' thrown an unmanaged Win32 exception with error code 'X'.
  30.    ''' </exception>
  31.    ''' ----------------------------------------------------------------------------------------------------
  32.    <DebuggerStepThrough>
  33.    Private Shared Function SafePInvoke(Of T)(ByVal expr As Expression(Of Func(Of T)),
  34.                                              Optional ByVal successCode As Integer = 0) As T
  35.  
  36.        Dim result As T = expr.Compile.Invoke()
  37.  
  38.        Dim method As MethodInfo =
  39.            CType(expr.Body, MethodCallExpression).Method
  40.  
  41.        Dim isSetLastError As Boolean =
  42.            method.GetCustomAttributes(inherit:=False).
  43.                   OfType(Of DllImportAttribute)().FirstOrDefault.SetLastError
  44.  
  45.        If isSetLastError Then
  46.  
  47.            Dim exitCode As Integer = Marshal.GetLastWin32Error
  48.  
  49.            If exitCode <> successCode Then
  50.                Throw New Win32Exception([error]:=exitCode,
  51.                                         message:=String.Format("Function '{0}' thrown an unmanaged Win32 exception with error code '{1}'.",
  52.                                                                method.Name, CStr(exitCode)))
  53.            End If
  54.  
  55.        End If
  56.  
  57.        Return result
  58.  
  59.    End Function
  60.  

Ejemplos de uso ...parciales:

Código
  1. Dim length As Integer = SafePInvoke(Function() NativeMethods.GetWindowTextLength(hWnd))

Código
  1. Dim sb As New StringBuilder(String.Empty, length)
  2. SafePInvoke(Function() NativeMethods.GetWindowText(hWnd, sb, sb.Capacity + 1))

Saludos!
5127  Programación / .NET (C#, VB.NET, ASP) / ¿Comprobar la firma de una función P/Invoke en tiempo de ejecución? en: 17 Junio 2015, 03:13 am
Cómo dice el título del tema, ¿alguien tiene puñetera idea de si es posible, tal vez mediante Reflection, cómo se puede comprobar los valores de los atributos de una firma de una declaración de invocación de plataforma?.

Código
  1. [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
  2. private static extern int xxx();

Código
  1. <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)>
  2. Private Shared Function xxx() As Integer
  3. End Function

Basicamente necesito comprobar el valor de SetLastError en tiempo de ejecución, para determinar si es True o es False, pero parece un misterio sin resolver.

¿Alguien sabe de alguna referencia oficial de MSDN donde expliquen este detalle tan específico?, ¿cómo obtener los metadatos del método?.

Es para mejorar la lógica de este método genérico, ya que sin poder determinar ese detalle que me falta, no sirve para nada realizar un checkeo:
Código
  1.    ''' <summary>
  2.    ''' Invokes the encapsulated function, Tthen checks the exit code returned by the function that was called using platform invoke
  3.    ''' that has the <see cref="DllImportAttribute.SetLastError"/> flag set.
  4.    ''' </summary>
  5.    ''' ----------------------------------------------------------------------------------------------------
  6.    ''' <exception cref="Win32Exception">
  7.    ''' Function 'X' thrown an unmanaged Win32 exception with error code 'X'.
  8.    ''' </exception>
  9.    ''' ----------------------------------------------------------------------------------------------------
  10.    Private Shared Sub SafePInvoke(Of T)(ByRef refResult As T, ByVal expr As expression(Of Func(Of T)))
  11.  
  12.        refResult = expr.Compile.Invoke()
  13.  
  14.        Dim exitCode As Integer = Marshal.GetLastWin32Error
  15.        If exitCode <> 0 Then
  16.            Throw New Win32Exception([error]:=exitCode, message:=String.Format("Function '{0}' thrown an unmanaged Win32 exception with error code '{1}'.",
  17.                                                                               CType(expr.Body, MethodCallExpression).Method.Name, CStr(exitCode)))
  18.        End If
  19.  
  20.    End Sub

Saludos!
5128  Programación / .NET (C#, VB.NET, ASP) / Re: Librería de Snippets para VB.Net !! (Compartan aquí sus snippets) en: 16 Junio 2015, 13:03 pm
¿Habeis sentido alguna vez la necesidad de mover una o varias filas de un DataGridView preservando el valor de algunas celdas en el transcurso?, pues yo si, así que comparto este código rehusable que me parece bastante sofisticado para llevar a cabo esa tarea, soporta multi-selección de filas, pero es para manipular directamente las filas de un DataGridViev, no el datasource.

Ejemplo de uso:
Código
  1. Me.DataGridView1.MoveSelectedRows(DataGridViewMoveRowDirection.Up)
Código
  1. Me.DataGridView1.MoveSelectedRows(DataGridViewMoveRowDirection.Up, {0, 2})

Código fuente:
Código
  1. ' ***********************************************************************
  2. ' Author   : Elektro
  3. ' Modified : 16-June-2015
  4. ' ***********************************************************************
  5. ' <copyright file="DataGridViewExtensions.vb" company="Elektro Studios">
  6. '     Copyright (c) Elektro Studios. All rights reserved.
  7. ' </copyright>
  8. ' ***********************************************************************
  9.  
  10. #Region " Option Statements "
  11.  
  12. Option Strict On
  13. Option Explicit On
  14. Option Infer Off
  15.  
  16. #End Region
  17.  
  18. #Region " Imports "
  19.  
  20. Imports System.Runtime.CompilerServices
  21. Imports System.Windows.Forms
  22.  
  23. #End Region
  24.  
  25. ''' <summary>
  26. ''' Contains two methods for moving DataRows up/down.
  27. ''' You could easily tweak the code to work for say a ListBox.
  28. ''' </summary>
  29. ''' <remarks></remarks>
  30. Public Module DataGridViewExtensions
  31.  
  32. #Region " Enumerations "
  33.  
  34.    ''' <summary>
  35.    ''' Specifies a direction to move the rows.
  36.    ''' </summary>
  37.    Public Enum DataGridViewMoveRowDirection As Integer
  38.  
  39.        ''' <summary>
  40.        ''' Move row up.
  41.        ''' </summary>
  42.        Up = 0
  43.  
  44.        ''' <summary>
  45.        ''' Move row down.
  46.        ''' </summary>
  47.        Down = 1
  48.  
  49.    End Enum
  50.  
  51. #End Region
  52.  
  53. #Region " Public Methods "
  54.  
  55.    ''' <summary>
  56.    ''' Moves up or down the selected row(s) of the specified <see cref="DataGridView"/>.
  57.    ''' </summary>
  58.    ''' <param name="sender">The <see cref="DataGridView"/>.</param>
  59.    ''' <param name="direction">The row-move direction.</param>
  60.    <DebuggerStepThrough()>
  61.    <Extension()>
  62.    Public Sub MoveSelectedRows(ByVal sender As DataGridView,
  63.                                ByVal direction As DataGridViewMoveRowDirection)
  64.  
  65.        DoRowsMove(sender, direction)
  66.  
  67.    End Sub
  68.  
  69.    ''' <summary>
  70.    ''' Moves up or down the selected row(s) of the specified <see cref="DataGridView"/>.
  71.    ''' </summary>
  72.    ''' <param name="sender">The <see cref="DataGridView"/>.</param>
  73.    ''' <param name="direction">The row-move direction.</param>
  74.    ''' <param name="preserveCellsIndex">A sequence of cell indexes to preserve its cell values when moving the row(s).</param>
  75.    <DebuggerStepThrough()>
  76.    <Extension()>
  77.    Public Sub MoveSelectedRows(ByVal sender As DataGridView,
  78.                                ByVal direction As DataGridViewMoveRowDirection,
  79.                                ByVal preserveCellsIndex As IEnumerable(Of Integer))
  80.  
  81.        DoRowsMove(sender, direction, preserveCellsIndex)
  82.  
  83.    End Sub
  84.  
  85. #End Region
  86.  
  87. #Region " Private Methods "
  88.  
  89.    ''' <summary>
  90.    ''' Moves up or down the selected row(s) of the specified <see cref="DataGridView"/>.
  91.    ''' </summary>
  92.    ''' <param name="dgv">The <see cref="DataGridView"/>.</param>
  93.    ''' <param name="direction">The row-move direction.</param>
  94.    ''' <param name="preserveCellsIndex">Optionally, a sequence of cell indexes to preserve its cell values when moving the row(s).</param>
  95.    <DebuggerStepThrough()>
  96.    Private Sub DoRowsMove(ByVal dgv As DataGridView,
  97.                           ByVal direction As DataGridViewMoveRowDirection,
  98.                           Optional ByVal preserveCellsIndex As IEnumerable(Of Integer) = Nothing)
  99.  
  100.        ' Keeps tracks of a cell value to preserve, to swap them when moving rows.
  101.        Dim oldCellValue As Object
  102.        Dim newCellValue As Object
  103.  
  104.        ' Short row collection reference.
  105.        Dim rows As DataGridViewRowCollection = dgv.Rows
  106.  
  107.        ' Keeps track of the current row.
  108.        Dim curRow As DataGridViewRow
  109.  
  110.        ' The maximum row index.
  111.        Dim lastRowIndex As Integer =
  112.            If(dgv.AllowUserToAddRows,
  113.               rows.Count - 2,
  114.               rows.Count - 1)
  115.  
  116.        ' List of hash codes of the selected rows.
  117.        Dim selectedRows As New List(Of Integer)
  118.  
  119.        ' Get the hash codes of the selected rows
  120.        For i As Integer = 0 To (rows.Count - 1)
  121.            If (rows(i).IsNewRow = False) AndAlso (rows(i).Selected) Then
  122.                selectedRows.Add(rows(i).GetHashCode)
  123.                rows(i).Selected = False
  124.            End If
  125.        Next i
  126.  
  127.        ' Move the selected rows up or down.
  128.        Select Case direction
  129.  
  130.            Case DataGridViewMoveRowDirection.Up
  131.                For i As Integer = 0 To lastRowIndex
  132.  
  133.                    If Not rows(i).IsNewRow Then
  134.  
  135.                        If (selectedRows.Contains(rows(i).GetHashCode)) AndAlso
  136.                           (i - 1 >= 0) AndAlso
  137.                           (Not selectedRows.Contains(rows(i - 1).GetHashCode)) Then
  138.  
  139.                            curRow = rows(i)
  140.                            rows.Remove(curRow)
  141.                            rows.Insert(i - 1, curRow)
  142.  
  143.                            If preserveCellsIndex IsNot Nothing Then
  144.  
  145.                                For Each cellIndex As Integer In preserveCellsIndex
  146.                                    oldCellValue = curRow.Cells(cellIndex).Value
  147.                                    newCellValue = rows(i).Cells(cellIndex).Value
  148.  
  149.                                    rows(i).Cells(cellIndex).Value = oldCellValue
  150.                                    curRow.Cells(cellIndex).Value = newCellValue
  151.                                Next cellIndex
  152.  
  153.                            End If
  154.  
  155.                        End If
  156.  
  157.                    End If
  158.  
  159.                Next i
  160.  
  161.            Case DataGridViewMoveRowDirection.Down
  162.                For i As Integer = lastRowIndex To 0 Step -1
  163.  
  164.                    If Not rows(i).IsNewRow Then
  165.  
  166.                        If (selectedRows.Contains(rows(i).GetHashCode)) AndAlso
  167.                           (i + 1 <= lastRowIndex) AndAlso
  168.                           (Not selectedRows.Contains(rows(i + 1).GetHashCode)) Then
  169.  
  170.                            curRow = rows(i)
  171.                            rows.Remove(curRow)
  172.                            rows.Insert(i + 1, curRow)
  173.  
  174.                            If preserveCellsIndex IsNot Nothing Then
  175.  
  176.                                For Each cellIndex As Integer In preserveCellsIndex
  177.                                    oldCellValue = curRow.Cells(cellIndex).Value
  178.                                    newCellValue = rows(i).Cells(cellIndex).Value
  179.  
  180.                                    rows(i).Cells(cellIndex).Value = oldCellValue
  181.                                    curRow.Cells(cellIndex).Value = newCellValue
  182.                                Next cellIndex
  183.  
  184.                            End If
  185.  
  186.                        End If
  187.  
  188.                    End If
  189.  
  190.                Next i
  191.  
  192.        End Select
  193.  
  194.        ' Restore selected rows.
  195.        For i As Integer = 0 To (rows.Count - 1)
  196.  
  197.            If Not rows(i).IsNewRow Then
  198.                rows(i).Selected = selectedRows.Contains(rows(i).GetHashCode)
  199.            End If
  200.  
  201.        Next i
  202.  
  203.    End Sub
  204.  
  205. #End Region
  206.  
  207. End Module

Saludos!
5129  Programación / .NET (C#, VB.NET, ASP) / Re: [Ayuda] Extraer URL del código fuente de una web y ponerlo en un ListBox en: 16 Junio 2015, 02:18 am
Que deberia añadir o modificar?

El nombre + número del capítulo:
Código
  1. ETIQUETA.InnerText

El número del capítulo está en la etiqueta STRONG, bien puedes hacerlo así:
Código
  1. ETIQUETA.Children(0).InnerText

O así:
Código
  1. ETIQUETA.GetElementsByTagName("STRONG").Item(0).InnerText

Saludos!
5130  Programación / .NET (C#, VB.NET, ASP) / Re: [Ayuda] Extraer URL del código fuente de una web y ponerlo en un ListBox en: 16 Junio 2015, 01:25 am
Usa las etiquetas para insertar código, es una norma del foro.



si busco el manga "Gakuen Heaven"...

Debes modificar los espacios por guiones bajos (también deberías tratar de realizar una comparación ignorando mayusculas/minusculas), así, funciona:

Código
  1. ...
  2. If etiqueta.OuterHtml.ToLower.Contains(String.Format("http://submanga.com/{0}/", "Gakuen Heaven".ToLower.Replace(" "c, "_"c))) Then
  3. ...

Saludos!
Páginas: 1 ... 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 [513] 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 ... 1236
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines