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

#4991
¿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 (vbnet) [Seleccionar]
Me.DataGridView1.MoveSelectedRows(DataGridViewMoveRowDirection.Up)
Código (vbnet) [Seleccionar]
Me.DataGridView1.MoveSelectedRows(DataGridViewMoveRowDirection.Up, {0, 2})

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

#Region " Option Statements "

Option Strict On
Option Explicit On
Option Infer Off

#End Region

#Region " Imports "

Imports System.Runtime.CompilerServices
Imports System.Windows.Forms

#End Region

''' <summary>
''' Contains two methods for moving DataRows up/down.
''' You could easily tweak the code to work for say a ListBox.
''' </summary>
''' <remarks></remarks>
Public Module DataGridViewExtensions

#Region " Enumerations "

    ''' <summary>
    ''' Specifies a direction to move the rows.
    ''' </summary>
    Public Enum DataGridViewMoveRowDirection As Integer

        ''' <summary>
        ''' Move row up.
        ''' </summary>
        Up = 0

        ''' <summary>
        ''' Move row down.
        ''' </summary>
        Down = 1

    End Enum

#End Region

#Region " Public Methods "

    ''' <summary>
    ''' Moves up or down the selected row(s) of the specified <see cref="DataGridView"/>.
    ''' </summary>
    ''' <param name="sender">The <see cref="DataGridView"/>.</param>
    ''' <param name="direction">The row-move direction.</param>
    <DebuggerStepThrough()>
    <Extension()>
    Public Sub MoveSelectedRows(ByVal sender As DataGridView,
                                ByVal direction As DataGridViewMoveRowDirection)

        DoRowsMove(sender, direction)

    End Sub

    ''' <summary>
    ''' Moves up or down the selected row(s) of the specified <see cref="DataGridView"/>.
    ''' </summary>
    ''' <param name="sender">The <see cref="DataGridView"/>.</param>
    ''' <param name="direction">The row-move direction.</param>
    ''' <param name="preserveCellsIndex">A sequence of cell indexes to preserve its cell values when moving the row(s).</param>
    <DebuggerStepThrough()>
    <Extension()>
    Public Sub MoveSelectedRows(ByVal sender As DataGridView,
                                ByVal direction As DataGridViewMoveRowDirection,
                                ByVal preserveCellsIndex As IEnumerable(Of Integer))

        DoRowsMove(sender, direction, preserveCellsIndex)

    End Sub

#End Region

#Region " Private Methods "

    ''' <summary>
    ''' Moves up or down the selected row(s) of the specified <see cref="DataGridView"/>.
    ''' </summary>
    ''' <param name="dgv">The <see cref="DataGridView"/>.</param>
    ''' <param name="direction">The row-move direction.</param>
    ''' <param name="preserveCellsIndex">Optionally, a sequence of cell indexes to preserve its cell values when moving the row(s).</param>
    <DebuggerStepThrough()>
    Private Sub DoRowsMove(ByVal dgv As DataGridView,
                           ByVal direction As DataGridViewMoveRowDirection,
                           Optional ByVal preserveCellsIndex As IEnumerable(Of Integer) = Nothing)

        ' Keeps tracks of a cell value to preserve, to swap them when moving rows.
        Dim oldCellValue As Object
        Dim newCellValue As Object

        ' Short row collection reference.
        Dim rows As DataGridViewRowCollection = dgv.Rows

        ' Keeps track of the current row.
        Dim curRow As DataGridViewRow

        ' The maximum row index.
        Dim lastRowIndex As Integer =
            If(dgv.AllowUserToAddRows,
               rows.Count - 2,
               rows.Count - 1)

        ' List of hash codes of the selected rows.
        Dim selectedRows As New List(Of Integer)

        ' Get the hash codes of the selected rows
        For i As Integer = 0 To (rows.Count - 1)
            If (rows(i).IsNewRow = False) AndAlso (rows(i).Selected) Then
                selectedRows.Add(rows(i).GetHashCode)
                rows(i).Selected = False
            End If
        Next i

        ' Move the selected rows up or down.
        Select Case direction

            Case DataGridViewMoveRowDirection.Up
                For i As Integer = 0 To lastRowIndex

                    If Not rows(i).IsNewRow Then

                        If (selectedRows.Contains(rows(i).GetHashCode)) AndAlso
                           (i - 1 >= 0) AndAlso
                           (Not selectedRows.Contains(rows(i - 1).GetHashCode)) Then

                            curRow = rows(i)
                            rows.Remove(curRow)
                            rows.Insert(i - 1, curRow)

                            If preserveCellsIndex IsNot Nothing Then

                                For Each cellIndex As Integer In preserveCellsIndex
                                    oldCellValue = curRow.Cells(cellIndex).Value
                                    newCellValue = rows(i).Cells(cellIndex).Value

                                    rows(i).Cells(cellIndex).Value = oldCellValue
                                    curRow.Cells(cellIndex).Value = newCellValue
                                Next cellIndex

                            End If

                        End If

                    End If

                Next i

            Case DataGridViewMoveRowDirection.Down
                For i As Integer = lastRowIndex To 0 Step -1

                    If Not rows(i).IsNewRow Then

                        If (selectedRows.Contains(rows(i).GetHashCode)) AndAlso
                           (i + 1 <= lastRowIndex) AndAlso
                           (Not selectedRows.Contains(rows(i + 1).GetHashCode)) Then

                            curRow = rows(i)
                            rows.Remove(curRow)
                            rows.Insert(i + 1, curRow)

                            If preserveCellsIndex IsNot Nothing Then

                                For Each cellIndex As Integer In preserveCellsIndex
                                    oldCellValue = curRow.Cells(cellIndex).Value
                                    newCellValue = rows(i).Cells(cellIndex).Value

                                    rows(i).Cells(cellIndex).Value = oldCellValue
                                    curRow.Cells(cellIndex).Value = newCellValue
                                Next cellIndex

                            End If

                        End If

                    End If

                Next i

        End Select

        ' Restore selected rows.
        For i As Integer = 0 To (rows.Count - 1)

            If Not rows(i).IsNewRow Then
                rows(i).Selected = selectedRows.Contains(rows(i).GetHashCode)
            End If

        Next i

    End Sub

#End Region

End Module


Saludos!
#4992
Cita de: error404x en 16 Junio 2015, 02:03 AMQue deberia añadir o modificar?

El nombre + número del capítulo:
Código (vbnet) [Seleccionar]
ETIQUETA.InnerText

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

O así:
Código (vbnet) [Seleccionar]
ETIQUETA.GetElementsByTagName("STRONG").Item(0).InnerText

Saludos!
#4993
Usa las etiquetas para insertar código, es una norma del foro.




Cita de: error404x en 16 Junio 2015, 00:53 AMsi 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 (vbnet) [Seleccionar]
...
If etiqueta.OuterHtml.ToLower.Contains(String.Format("http://submanga.com/{0}/", "Gakuen Heaven".ToLower.Replace(" "c, "_"c))) Then
...


Saludos!
#4994
Cita de: Kaxperday en 15 Junio 2015, 23:49 PMYa, pero ¿cómo saben si es tráfico de proxy o no?.

Yo ahora mismo podría hacer de mi ordenador un proxy y estoy seguro de que si os conectarais a el y accedierais al link de adfly a través de mi no se darían cuenta y contarían la visita.

El optimismo llevado al extremo nunca es bueno.

Ahí tienes la información oficial de Adfly, lo que estás haciendo no sirve, lo siento, pero es la realidad.

Hazte las siguientee preguntas:

- ¿Crees que en toda la era de Internet, bueno, desde la aparición de este tipo de servicios, tú eres la primera persona que ha puesto en práctica un bot mediante proxyes para Adfly u otro tipo de servicios c2p?.

- Entonces, ¿crees que este tipo de compañias realmente no han ido evolucionando y desarrolladon ningún tipo de defensa desde entonces, hasta el punto de pensar que a día de hoy realmente son incapaces de detectar un proxy?.

EDITO: - ¿Por qué crees que hay decenas o cientos de niños rata vendiendo sus bots de Adfly y similares en internet?, si tanto dinero ganan con sus bots ...¿por qué tienen la necesidad de venderlos en lugar de estar despreocupados rascándose los webos en un jacuzzi?,
ah ...si, para sacarle el dinero a los inocentes que crean que un bot sirve, para ganar de ese modo el dinero que no pueden ganar en Adfly mediante los bots que están vendiendo.

No se exactamente que metodologías de detección habrá, lo que si se es que existen servicios profesionales dedicados a detectar proxyes anónimos o no, cómo MaxMind y FraudLabs, pregúntate si una compañia cómo Adfly, compañia que por cierto parece ganar más ingresos de los que pierde por que despues de muchos años sigue a flote (eso ya da que pensar en la ausencia de fraudes por bots en sus servicios), puede tener contratado algún tipo de servicio profesional para detectar este tipo de fraude por los usuarios.

Además, una cosa es un tráfico de proxyes normal, y otro tipo de tráfico muy distinto es un tráfico masivo intencionado usando Bots en tu propio beneficio, siendo lo segundo una anomalía notable, por lo primero directamente no pagan, y por lo segundo además de no pagar lo más probable es que acabes con tu cuenta baneada cuando detecten cierta anomalía de tráfico debido al uso de tu bot, y en consecuencia hayas perdido tiempo e ilusiones.

De todas formas, claro está que eres libre de poner en práctica cualquier idea que tengas y aprender de tus propias experiencias.




Cita de: zonahurbana en 16 Junio 2015, 00:00 AM¿recorres el DOM y obtienes valores de ciertas etiquetas?

Practiamente en eso consiste el web-crawling, en parsear los documentos Html para obtener información específica.

Hay varios modos de hacerlo, la más ordinaria es utilizando las funciones built-in de .net para partir un string (String.Split) y filtrarla mediante substracciones (String.Substring, String.IndexOf, String.LastInfexOf, etc...),
otra manera sería utilizando expresiones regulares (RegEx),
y otra manera sería utilizando ciertas librerías (HtmlagilityPack en caso de .Net) para representar el árbol del documento Html orientado a objetos,
entre alguna que otra metodología más que habrá.

Dices que estás interesado en ello, pues aquí puedes ver un pequeño ejemplo con el que puedes empezar:
http://foro.elhacker.net/net/leer_datos_de_una_tabla_html-t436957.0.html

Y aquí tienes el source que compartí de un web-spider que recolecta los enlaces de una página de música en particular:
[SOURCE] Plixid Leecher - By Elektro

También existe una librería especializada en el web-scrapping para .Net, se llama aBot, aunque nunca la llegué a probar en profundidad:
https://github.com/sjdirect/abot
   (también la puedes descargar por la consola de NuGet)

EDITO: Aparte de algunas Classes de .Net Framework que puedes utilizar para el parseo de Html o Xml, cómo HtmlElement o Xelement




Cita de: zonahurbana en 16 Junio 2015, 00:00 AM¿Cuando lea .NET debo asociar de que se trata de alguno de esos lenguajes sin poder determinar exactamente cuál?

.Net no es un lenguaje, sino un Framework (cómo ya has deducido) que soporta varios lenguajes, entre ellos los que has mencionado, VB.Net (Visual Basic.Net), C# (C-Sharp) y VC++ (Visual C++), y otro(s) cómo F# (F-Sharp);
también hay implementaciones de Python, Ruby, y otro(s) lenguaje(s) que corren bajo .Net, además, el soporte de la IDE Visual Studio para "hibridar" utilizando lenguajes alternos cómo Html, Xml, y PHP, es excelente, todo lo que concierne a .Net es muy grande, y muy sofisticado, por algo es de Microsoft, no hay competencia.

Saludos!
#4995
Cita de: Kaxperday en 15 Junio 2015, 20:02 PMesto no es nada comparado con lo que se puede hacer.

...Adfly no paga absolutamente nada por tráfico de proxyes, salvo que el anunciante decida mostrar el anuncio a ese tipo de tráfico, y en estos casos el pago por este tipo de tráfico es el menos valorado.

http://kb.adf.ly/119/what-is-proxy-traffic-will-i-get-paid-for-it

PD: Aunque ilegal, sería mucho más rentable invertir el tiempo en desarrollar una botnet y propagarla para utilizar tráfico real.

Saludos!
#4996
Scripting / Re: asociación de archivos
15 Junio 2015, 22:43 PM
Cita de: polski-levo en 15 Junio 2015, 20:58 PM¿Por qué debes poner dos %% aquí?
ftype JARFile="%direccionJava%" -jar "%%1" "%%*"

Lo he mencionado antes, para escapar el caracter "%", ya que es un símbolo reservado por el lenguaje ...para definir variables, por ende, obviamente si escribes el símbolo "%" tendrá un efecto muy distinto al que le querías dar, ya que tú pretendes escribir/interpretar dicho símbolo, no usarlo cómo si de una variable se tratase.




Cita de: polski-levo en 15 Junio 2015, 20:58 PMbusco poder abrir el archivo como abrir con, seleccionar un programa y convertirlo en el predeterminado

Con los arreglos que mencione, aplicados en el código que mostraste, estás creando una asociación por defecto para los archivos con extensión ".jar", para que se ejecuten con la aplicación "javaw.exe" pasándole los argumentos: " -jar "C:\Ruta de archivo.jar" "Argumentos adicionales" ", por ende, al clickar sobre un archivo de tipo ".jar", éste se intentará abrir con la aplicación de Java.

Todo ese proceso que haces en Batch se resume en crear una clave de referencia en la clave de registro "HKCR\.jar" con el nombre que le diste (JARFile), y en esa clave referenciada (HKCR\JARFile) se crea el comando por defecto "Open" (HKCR\JARFile\Shell\Open\Command) con el valor que le diste.

En resumen, supuestamente ya has hecho la aplicación javaw.exe la predeterminada para archivos .jar.

Si no es eso lo que pretendes, intenta explicarlo con más detalles.

Saludos!
#4997
Comparto este snippet para compilar código fuente en tiempo de ejecución, una DLL, una app CLI o GUI, desde un string o desde un archivo que contenga el código guente.

Es útil por ejemplo para bindear archivos, o embedir tablas de recursos en una dll, o simplemente para compilar un código de C# o VB.Net.

Ejemplo de uso:
Código (vbnet) [Seleccionar]
Using vbCodeProvider As New Microsoft.VisualBasic.VBCodeProvider

    Dim resultVB As CompilerResults =
        CodeDomUtil.CompileAssembly(codeProvider:=vbCodeProvider,
                                    targetAssembly:=CodeDomUtil.TargetAssembly.Dll,
                                    targetFile:="C:\VB Assembly.dll",
                                    resources:={"C:\MyResources.resx"},
                                    referencedAssemblies:={"System.dll"},
                                    mainClassName:="MainNamespace.MainClass",
                                    sourceCode:=<a>
                                                Imports System

                                                Namespace MainNamespace

                                                    Public NotInheritable MainClass

                                                    End Class

                                                End Namespace
                                                </a>.Value)

    Dim warnings As IEnumerable(Of CompilerError) =
        From ce As CompilerError In resultVB.Errors.Cast(Of CompilerError)()
        Where ce.IsWarning

    Dim errors As IEnumerable(Of CompilerError) =
        From ce As CompilerError In resultVB.Errors.Cast(Of CompilerError)()
        Where Not ce.IsWarning

    For Each war As CompilerError In warnings
        Debug.WriteLine(String.Format("{0}| Warning: {1}", war.ErrorNumber, war.ErrorText))
    Next war

    For Each err As CompilerError In errors
        Debug.WriteLine(String.Format("{0}| Error: {1}", err.ErrorNumber, err.ErrorText))
    Next err

End Using


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

       ''' <summary>
       ''' Specifies a <see cref="CompilerParameters"></see> target assembly.
       ''' </summary>
       Public Enum TargetAssembly As Integer

           ''' <summary>
           ''' A Command line interface executable.
           ''' </summary>
           Cli = 0

           ''' <summary>
           ''' A Graphical user interface executable.
           ''' </summary>
           Gui = 1

           ''' <summary>
           ''' A Dynamic-link library.
           ''' </summary>
           Dll = 2

       End Enum

       ''' <remarks>
       ''' *****************************************************************
       ''' Title : Compile Assembly (from reaource).
       ''' Author: Elektro
       ''' Date  : 14-June-2015
       ''' Usage :
       '''
       ''' Using vbCodeProvider As New Microsoft.VisualBasic.VBCodeProvider
       '''
       '''     Dim resultVB As CompilerResults =
       '''         CodeDomUtil.CompileAssembly(codeProvider:=vbCodeProvider,
       '''                                     targetAssembly:=CodeDomUtil.TargetAssembly.Dll,
       '''                                     targetFile:="C:\VB Assembly.dll",
       '''                                     resources:={"C:\MyResources.resx"},
       '''                                     referencedAssemblies:={"System.dll"},
       '''                                     mainClassName:="MainNamespace.MainClass",
       '''                                     sourceCode:=<a>
       '''                                                 Imports System
       '''
       '''                                                 Namespace MainNamespace
       '''
       '''                                                     Public NotInheritable MainClass
       '''
       '''                                                     End Class
       '''
       '''                                                 End Namespace
       '''                                                 </a>.Value)
       '''
       '''     Dim warnings As IEnumerable(Of CompilerError) =
       '''         From ce As CompilerError In resultVB.Errors.Cast(Of CompilerError)()
       '''         Where ce.IsWarning
       '''
       '''     Dim errors As IEnumerable(Of CompilerError) =
       '''         From ce As CompilerError In resultVB.Errors.Cast(Of CompilerError)()
       '''         Where Not ce.IsWarning
       '''
       '''     For Each war As CompilerError In warnings
       '''         Debug.WriteLine(String.Format("{0}| Warning: {1}", war.ErrorNumber, war.ErrorText))
       '''     Next war
       '''
       '''     For Each err As CompilerError In errors
       '''         Debug.WriteLine(String.Format("{0}| Error: {1}", err.ErrorNumber, err.ErrorText))
       '''     Next err
       '''
       ''' End Using
       ''' -----------------------------------------------------------------
       ''' Using csCodeProvider As New Microsoft.CSharp.CSharpCodeProvider
       '''
       '''     Dim resultCS As CompilerResults =
       '''         CodeDomUtil.CompileAssembly(codeProvider:=csCodeProvider,
       '''                                     targetAssembly:=CodeDomUtil.TargetAssembly.Dll,
       '''                                     targetFile:="C:\C# Assembly.dll",
       '''                                     resources:={"C:\MyResources.resx"},
       '''                                     referencedAssemblies:={"System.dll"},
       '''                                     mainClassName:="MainNamespace.MainClass",
       '''                                     sourceCode:=<a>
       '''                                                 using System;
       '''
       '''                                                 namespace MainNamespace
       '''                                                 {
       '''                                                     class MainClass
       '''                                                     {
       '''
       '''                                                     }
       '''                                                 }
       '''                                                 </a>.Value)
       '''
       '''     Dim warnings As IEnumerable(Of CompilerError) =
       '''         From ce As CompilerError In resultCS.Errors.Cast(Of CompilerError)()
       '''         Where ce.IsWarning
       '''
       '''     Dim errors As IEnumerable(Of CompilerError) =
       '''         From ce As CompilerError In resultCS.Errors.Cast(Of CompilerError)()
       '''         Where Not ce.IsWarning
       '''
       '''     For Each war As CompilerError In warnings
       '''         Debug.WriteLine(String.Format("{0}| Warning: {1}", war.ErrorNumber, war.ErrorText))
       '''     Next war
       '''
       '''     For Each err As CompilerError In errors
       '''         Debug.WriteLine(String.Format("{0}| Error: {1}", err.ErrorNumber, err.ErrorText))
       '''     Next err
       '''
       ''' End Using
       ''' *****************************************************************
       ''' </remarks>
       ''' <summary>
       ''' Compiles a .Net assembly as executable or link library.
       ''' </summary>
       ''' <param name="codeProvider">The code provider.</param>
       ''' <param name="targetAssembly">The kind of assembly to generate.</param>
       ''' <param name="targetFile">The target file to create.</param>
       ''' <param name="resources">The embedded resources (if any).</param>
       ''' <param name="referencedAssemblies">The referenced assemblies (if any).</param>
       ''' <param name="mainClassName">The code to compile (if any).</param>
       ''' <param name="sourceCode">The sourcecode to compile (if any).</param>
       ''' <exception cref="Exception">The current CodeDomProvider does not support resource embedding.</exception>
       ''' <exception cref="NotImplementedException">Default sourcecode is not implemented for the specified CodeDomProvider. Please, set a sourcecode yourself.</exception>
       ''' <returns>The results of the compiler operation.</returns>
       Public Shared Function CompileAssembly(ByVal codeProvider As CodeDomProvider,
                                              ByVal targetAssembly As TargetAssembly,
                                              ByVal targetFile As String,
                                              Optional ByVal resources As IEnumerable(Of String) = Nothing,
                                              Optional ByVal referencedAssemblies As IEnumerable(Of String) = Nothing,
                                              Optional ByVal mainClassName As String = "MainNamespace.MainClass",
                                              Optional ByVal sourceCode As String = Nothing) As CompilerResults

           ' Set a default assembly reference.
           If referencedAssemblies Is Nothing Then
               referencedAssemblies = {"System.dll"}
           End If

           Dim cp As New CompilerParameters
           With cp

               ' Set compiler arguments.
               Select Case targetAssembly

                   Case CodeDomUtil.TargetAssembly.Gui
                       .CompilerOptions = "/optimize /target:winexe"

                   Case Else
                       .CompilerOptions = "/optimize"

               End Select

               ' Generate an exe or a dll.
               .GenerateExecutable = (targetAssembly <> CodeDomUtil.TargetAssembly.Dll)

               ' Save the assembly as a physical file.
               .GenerateInMemory = False

               ' Generate debug information (pdb).
               .IncludeDebugInformation = False

               ' Set the assembly file name to generate.
               .OutputAssembly = targetFile

               ' Add an assembly reference.
               .ReferencedAssemblies.AddRange(referencedAssemblies.ToArray)

               ' Set a temporary files collection.
               ' The TempFileCollection stores the temporary files generated during a build in the current directory.
               .TempFiles = New TempFileCollection(tempdir:=IO.Path.GetTempPath(), keepFiles:=True)

               ' Set whether to treat all warnings as errors.
               .TreatWarningsAsErrors = False

               ' Set the level at which the compiler should start displaying warnings.
               ' 0 - Turns off emission of all warning messages.
               ' 1 - Displays severe warning messages.
               ' 2 - Displays level 1 warnings plus certain, less-severe warnings, such as warnings about hiding class members.
               ' 3 - Displays level 2 warnings plus certain, less-severe warnings, such as warnings about expressions that always evaluate to true or false.
               ' 4 - Displays all level 3 warnings plus informational warnings. This is the default warning level at the command line.
               .WarningLevel = 3

               ' Set the embedded resource file of the assembly.
               If codeProvider.Supports(GeneratorSupport.Resources) AndAlso (resources IsNot Nothing) Then
                   .EmbeddedResources.AddRange(resources.ToArray)

               ElseIf (Not codeProvider.Supports(GeneratorSupport.Resources)) AndAlso (resources IsNot Nothing) Then
                   Throw New Exception(message:="The current CodeDomProvider does not support resource embedding.")

               End If

               ' Specify the class that contains the main method of the executable.
               If codeProvider.Supports(GeneratorSupport.EntryPointMethod) Then

                   .MainClass = mainClassName

                   If (TypeOf codeProvider Is Microsoft.VisualBasic.VBCodeProvider) AndAlso
                      (String.IsNullOrEmpty(sourceCode)) AndAlso
                      .GenerateExecutable Then

                       sourceCode =
                           <a>
                           Imports System

                           Namespace MainNamespace

                               Module MainClass

                                   Sub Main()
                                   End Sub

                               End Module

                           End Namespace
                           </a>.Value

                   ElseIf (TypeOf codeProvider Is Microsoft.VisualBasic.VBCodeProvider) AndAlso
                          (String.IsNullOrEmpty(sourceCode)) AndAlso
                          Not .GenerateExecutable Then

                       sourceCode =
                           <a>
                           Imports System

                           Namespace MainNamespace

                               Public NotInheritable MainClass

                               End Class

                           End Namespace
                           </a>.Value

                   ElseIf (TypeOf codeProvider Is Microsoft.CSharp.CSharpCodeProvider) AndAlso
                          (String.IsNullOrEmpty(sourceCode)) AndAlso
                         .GenerateExecutable Then

                       sourceCode =
                           <a>
                           using System;

                           namespace MainNamespace
                           {
                               class MainClass
                               {
                                   static void Main(string[] args)
                                   {

                                   }
                               }
                           }
                           </a>.Value

                   ElseIf (TypeOf codeProvider Is Microsoft.CSharp.CSharpCodeProvider) AndAlso
                          (String.IsNullOrEmpty(sourceCode)) AndAlso
                          Not .GenerateExecutable Then

                       sourceCode =
                           <a>
                           using System;

                           namespace MainNamespace
                           {
                               class MainClass
                               {

                               }
                           }
                           </a>.Value

                   ElseIf String.IsNullOrEmpty(sourceCode) Then
                       Throw New NotImplementedException(message:="Default sourcecode is not implemented for the specified CodeDomProvider. Please, specify a sourcecode.")

                   End If

               End If

           End With

           Return codeProvider.CompileAssemblyFromSource(cp, sourceCode)

       End Function

       ''' <remarks>
       ''' *****************************************************************
       ''' Title : Compile Assembly (from file).
       ''' Author: Elektro
       ''' Date  : 14-June-2015
       ''' Usage :
       '''
       ''' Using vbCodeProvider As New Microsoft.VisualBasic.VBCodeProvider
       '''
       '''     Dim resultVB As CompilerResults =
       '''         CodeDomUtil.CompileAssembly(codeProvider:=vbCodeProvider,
       '''                                     targetAssembly:=CodeDomUtil.TargetAssembly.Dll,
       '''                                     sourceFile:="C:\SourceCode.vb",
       '''                                     targetFile:="C:\VB Assembly.dll",
       '''                                     resources:={"C:\MyResources.resx"},
       '''                                     referencedAssemblies:={"System.dll"},
       '''                                     mainClassName:="MainNamespace.MainClass")
       '''
       '''     Dim warnings As IEnumerable(Of CompilerError) =
       '''         From ce As CompilerError In resultVB.Errors.Cast(Of CompilerError)()
       '''         Where ce.IsWarning
       '''
       '''     Dim errors As IEnumerable(Of CompilerError) =
       '''         From ce As CompilerError In resultVB.Errors.Cast(Of CompilerError)()
       '''         Where Not ce.IsWarning
       '''
       '''     For Each war As CompilerError In warnings
       '''         Debug.WriteLine(String.Format("{0}| Warning: {1}", war.ErrorNumber, war.ErrorText))
       '''     Next war
       '''
       '''     For Each err As CompilerError In errors
       '''         Debug.WriteLine(String.Format("{0}| Error: {1}", err.ErrorNumber, err.ErrorText))
       '''     Next err
       '''
       ''' End Using
       ''' -----------------------------------------------------------------
       ''' Using csCodeProvider As New Microsoft.CSharp.CSharpCodeProvider
       '''
       '''     Dim resultCS As CompilerResults =
       '''         CodeDomUtil.CompileAssembly(codeProvider:=csCodeProvider,
       '''                                     targetAssembly:=CodeDomUtil.TargetAssembly.Dll,
       '''                                     sourceFile:="C:\SourceCode.cs",
       '''                                     targetFile:="C:\CS Assembly.dll",
       '''                                     resources:={"C:\MyResources.resx"},
       '''                                     referencedAssemblies:={"System.dll"},
       '''                                     mainClassName:="MainNamespace.MainClass")
       '''
       '''     Dim warnings As IEnumerable(Of CompilerError) =
       '''         From ce As CompilerError In resultCS.Errors.Cast(Of CompilerError)()
       '''         Where ce.IsWarning
       '''
       '''     Dim errors As IEnumerable(Of CompilerError) =
       '''         From ce As CompilerError In resultCS.Errors.Cast(Of CompilerError)()
       '''         Where Not ce.IsWarning
       '''
       '''     For Each war As CompilerError In warnings
       '''         Debug.WriteLine(String.Format("{0}| Warning: {1}", war.ErrorNumber, war.ErrorText))
       '''     Next war
       '''
       '''     For Each err As CompilerError In errors
       '''         Debug.WriteLine(String.Format("{0}| Error: {1}", err.ErrorNumber, err.ErrorText))
       '''     Next err
       '''
       ''' End Using
       ''' *****************************************************************
       ''' </remarks>
       ''' <summary>
       ''' Compiles a .Net assembly as executable or link library.
       ''' </summary>
       ''' <param name="codeProvider">The code provider.</param>
       ''' <param name="targetAssembly">The kind of assembly to generate.</param>
       ''' <param name="sourceFile">The source file to compile.</param>
       ''' <param name="targetFile">The target file to create.</param>
       ''' <param name="resources">The embedded resources (if any).</param>
       ''' <param name="referencedAssemblies">The referenced assemblies (if any).</param>
       ''' <param name="mainClassName">The code to compile (if any).</param>
       ''' <exception cref="Exception">The current CodeDomProvider does not support resource embedding.</exception>
       ''' <returns>The results of the compiler operation.</returns>
       Public Shared Function CompileAssembly(ByVal codeProvider As CodeDomProvider,
                                              ByVal targetAssembly As TargetAssembly,
                                              ByVal sourceFile As String,
                                              ByVal targetFile As String,
                                              Optional ByVal resources As IEnumerable(Of String) = Nothing,
                                              Optional ByVal referencedAssemblies As IEnumerable(Of String) = Nothing,
                                              Optional ByVal mainClassName As String = "MainNamespace.MainClass") As CompilerResults

           ' Set a default assembly reference.
           If referencedAssemblies Is Nothing Then
               referencedAssemblies = {"System.dll"}
           End If

           Dim cp As New CompilerParameters
           With cp

               ' Set compiler arguments.
               Select Case targetAssembly

                   Case CodeDomUtil.TargetAssembly.Gui
                       .CompilerOptions = "/optimize /target:winexe"

                   Case Else
                       .CompilerOptions = "/optimize"

               End Select

               ' Generate an exe or a dll.
               .GenerateExecutable = (targetAssembly <> CodeDomUtil.TargetAssembly.Dll)

               ' Save the assembly as a physical file.
               .GenerateInMemory = False

               ' Generate debug information (pdb).
               .IncludeDebugInformation = False

               ' Set the assembly file name to generate.
               .OutputAssembly = targetFile

               ' Add an assembly reference.
               .ReferencedAssemblies.AddRange(referencedAssemblies.ToArray)

               ' Set a temporary files collection.
               ' The TempFileCollection stores the temporary files generated during a build in the current directory.
               .TempFiles = New TempFileCollection(tempdir:=IO.Path.GetTempPath(), keepFiles:=True)

               ' Set whether to treat all warnings as errors.
               .TreatWarningsAsErrors = False

               ' Set the level at which the compiler should start displaying warnings.
               ' 0 - Turns off emission of all warning messages.
               ' 1 - Displays severe warning messages.
               ' 2 - Displays level 1 warnings plus certain, less-severe warnings, such as warnings about hiding class members.
               ' 3 - Displays level 2 warnings plus certain, less-severe warnings, such as warnings about expressions that always evaluate to true or false.
               ' 4 - Displays all level 3 warnings plus informational warnings. This is the default warning level at the command line.
               .WarningLevel = 3

               ' Set the embedded resource file of the assembly.
               If codeProvider.Supports(GeneratorSupport.Resources) AndAlso (resources IsNot Nothing) Then
                   .EmbeddedResources.AddRange(resources.ToArray)

               ElseIf (Not codeProvider.Supports(GeneratorSupport.Resources)) AndAlso (resources IsNot Nothing) Then
                   Throw New Exception(message:="The current CodeDomProvider does not support resource embedding.")

               End If

               ' Specify the class that contains the main method of the executable.
               If codeProvider.Supports(GeneratorSupport.EntryPointMethod) Then
                   .MainClass = mainClassName
               End If

           End With

           Return codeProvider.CompileAssemblyFromFile(cp, {sourceFile})

       End Function

   End Class
#4998
Scripting / Re: asociación de archivos
15 Junio 2015, 17:23 PM
Cita de: polski-levo en 15 Junio 2015, 12:02 PMno lo consigo por mas vueltas que doy.

1. Encierra las variables
Código (dos) [Seleccionar]
set "direccionJava=C:\Program Files\Java\jre1.8.0_40\bin\javaw.exe"
set "direccionJava86=C:\Program Files(x86)\Java\jre1.8.0_40\bin\javaw.exe"


2. Escapa los caracteres reservados por el lenguaje (%)
Código (dos) [Seleccionar]
ftype JARFile="%direccionJava%" -jar "%%1" "%%*"

Saludos!
#4999
Cita de: jaxoR en 15 Junio 2015, 16:00 PM
Me podrías pasar un ofuscador gratuito?

Confuser-EX, el sucesor de Confuser, es gratuito y bueno.
https://github.com/yck1509/ConfuserEx/releases

Ten en cuenta que los métodos de ofuscación se pueden revertir con los conocimientos necesarios, hay programas especializados en esto, no hay nada 100% seguro si escribes una contraseña en el código fuente.

Es mejor que compiles una librería en C/C++, muy protegida, y luego la cargues mediante un simple wrapper en tu proyecto C# para obtener la contraseña que estaría contenida en esa dll de C/C++ nativo. Esto al menos aumentará la confusión y seguridad.

De todas formas en .Net deberías usar un packer + ofuscador para mayor seguridad, Smart Assembly, Crypto Obfuscator, o .Net reactor, en sus versiones más recientes por que si te descargas una versión antigua ya estará "reversible".

Saludos!
#5000
La Homeopatía es el arte de estafar a aquellos que creen en algo sin evidencia, no es nada nuevo en la sociedad tan corrupta que vivimos hoy en día en todo el mundo, pero la gran diferencia entra la estafa de la Homeopatía y otras estafas cómo puedan ser las Sectas (o religiones) o algunas ONG, es que mientras unos engañan a tus ojos, o a tu fe, la Homeopatía engaña a tu salud ...al igual que muchos fármacos de empresas fantasma, y eso no tiene perdón;
para quien no lo sepa, hay más probabilidades de sanarte de un cancer bebiendo tu propia orina, que recurriendo a un remedio de la...






Os dejo con este video que me gustó mucho:

[youtube=640,360]https://www.youtube.com/watch?v=nut2q4-2AyI[/youtube]

Saludos!