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

#8751
No creo que haga falta nada más que añadir a lo que te dijo Novlucker, hay miles de ejemplos en Google de como crear un Loop, ¿Has intentado buscar?

Te hago un ejemplo de lo que te están diciendo que hagas:

Código (vbnet) [Seleccionar]
Public Class Form1

   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

       MsgBox(Encrypt_text("¡ Hello world !")) ' Result: @i Hello world @o

   End Sub

   Public Shared Function Encrypt_text(ByVal str As String) As String

       Static Special_Characters As Char() = ":;-()¿?¡!@€$/".ToCharArray

       Static Special_Characters_Replacement() As String = _
       {"@q", "@w", "@e", "@r", "@t", "@y", "@u", "@i", "@o", "@p", "@a", "@s", "@d"}
       ' :  ,  ;  ,  -  ,  (  ,  )  ,  ¿  ,  ?  ,  ¡  ,  !  ,  @  ,  €  ,  $  ,  /

       Dim Temp_String As String = String.Empty
       Dim Replacement_Found As Boolean = False

       For Each character As Char In str ' Recorremos cada caracter de la variable str

           For x As Int32 = 0 To Special_Characters.Length - 1 ' recorremos cada caracter de nuestro array de caracteres
               If character = Special_Characters(x) Then ' si caracter de STR es igual a caracter de ARRAY...
                   Replacement_Found = True
                   Temp_String &= Special_Characters_Replacement(x)
                   Exit For ' Salimos de la iteración para ahorrar tiempo
               End If
           Next

           If Not Replacement_Found Then Temp_String &= character Else Replacement_Found = False

       Next

       Return Temp_String

   End Function

End Class


Saludos
#8752
Esto demuestra que los codecs de packs no son tán buenos ni necesarios como parece xD

Saludos
#8753
Cita de: Juancho25 en  8 Junio 2013, 08:33 AM
Intenté entenderlo pero se me complicó, no sé muy bien de ese lenguaje y sé más de C++ en Windows Forms. Si pudieras ponerlo en el lenguaje que te menciono te lo agradecería.

Cita de: Elektro H@cker
Código (vbnet) [Seleccionar]
Dim regex As String = <a><![CDATA[(http://|https://|www)([\w+?\.\w+])+([a-zA-Z0-9\~\!\@\#\$\%\^\&amp;\*\(\)_\-\=\+\\\/\?\.\:\;\'\,]*)?]]></a>.Value


No, no sé C/C++/C#,
Copia ese RegEx, conviértelo a la sintaxis adecuada de C++ usando la aplicación "RegExBuddy", y ya tienes la primera parte del problema solucionada, el resto solo sería que aprendieses a usar las expresiones regulares en C++ (si no supieras).

Saludos
#8754
Suspender o continuar un proceso externo:

[youtube=640,360]https://www.youtube.com/watch?v=43773s3tAoA&feature=youtu.be[/youtube]

(Corregido un pequeño bug de última hora en la función "resume-thread" al comprobar si existia el proceso en el diccionario.)
Código (vbnet) [Seleccionar]
#Region " Pause-Resume Thread Class "

Public Class Process_Thread

   ' [ Pause-Resume Thread Functions ]
   '
   ' // By Elektro H@cker
   '
   ' Examples :
   '
   ' Process_Thread.Pause_Thread("ffmpeg.exe")       ' Pause  ffmpeg.exe (with thread 0)
   ' Process_Thread.Resume_Thread("ffmpeg.exe")      ' Resume ffmpeg.exe (with thread 0)
   ' Process_Thread.Pause_Thread("cmd.exe", , True)  ' Pause  all instances of cmd.exe (with thread 0)
   ' Process_Thread.Resume_Thread("cmd.exe", , True) ' Resume all instances of cmd.exe (with thread 0)
   ' Process_Thread.Pause_Thread("Process.exe", 2)   ' Pause the thread 2 of "Process.exe"
   ' Process_Thread.Resume_Thread("Process.exe", 2)  ' Resume the thread 2 of "Process.exe"

   <System.Runtime.InteropServices.DllImport("kernel32.dll")> _
   Private Shared Function OpenThread(ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Boolean, ByVal dwThreadId As UInt32) As IntPtr
   End Function

   <System.Runtime.InteropServices.DllImport("kernel32.dll")> _
   Private Shared Function SuspendThread(hThread As IntPtr) As UInteger
   End Function

   <System.Runtime.InteropServices.DllImport("kernel32.dll")> _
   Private Shared Function ResumeThread(hThread As IntPtr) As UInt32
   End Function

   <System.Runtime.InteropServices.DllImport("kernel32.dll", SetLastError:=True)> _
   Private Shared Function CloseHandle(ByVal hObject As IntPtr) As <System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.Bool)> Boolean
   End Function

   ''' <summary>
   ''' Dictionary to store the current paused threads.
   ''' </summary>
   Public Shared Thread_Handle_Dictionary As New Dictionary(Of String, IntPtr)

#Region " Pause Thread "

   ''' <summary>
   ''' Function to pause a thread.
   ''' </summary>
   '''
   ''' <param name="Process_Name">The name of the process, ex: cmd.exe</param>
   ''' <param name="Thread_Number">The thread to pause, ex: 0</param>
   ''' <param name="Recursive"> <value name="True">Pause the thread in all processes found recursively.</value></param>
   ''' <returns>True if the process is found; otherwise, False.</returns>
   Public Shared Function Pause_Thread(ByRef Process_Name As String, _
                                 Optional ByVal Thread_Number As Int32 = 0, _
                                 Optional ByVal Recursive As Boolean = False) As Boolean

       If Process_Name.ToLower.EndsWith(".exe") Then _
       Process_Name = Process_Name.Substring(0, Process_Name.Length - 4)

       Dim proc() As Process = Process.GetProcessesByName(Process_Name)

       If Not proc.Length = 0 Then

           If Recursive Then

               For proc_num As Integer = 0 To proc.Length - 1
                   Try
                       Thread_Handle_Dictionary.Add(Process_Name.ToLower & Thread_Number.ToString & ";" & proc(proc_num).Handle.ToString, _
                                                    OpenThread(&H2, True, proc(proc_num).Threads(Thread_Number).Id))
                       SuspendThread(Thread_Handle_Dictionary.Item(Process_Name.ToLower & Thread_Number.ToString & ";" & proc(proc_num).Handle.ToString))
                       Application.DoEvents()
                   Catch ex As Exception
                       MsgBox(ex.Message) ' The handle already exist in the Dictionary.
                       Return False
                   End Try
               Next

           Else

               Try
                   Thread_Handle_Dictionary.Add(Process_Name.ToLower & Thread_Number.ToString & ";" & proc(0).Handle.ToString, _
                                                OpenThread(&H2, True, proc(0).Threads(Thread_Number).Id))
                   SuspendThread(Thread_Handle_Dictionary.Item(Process_Name.ToLower & Thread_Number.ToString & ";" & proc(0).Handle.ToString))
               Catch ex As Exception
                   MsgBox(ex.Message) ' The handle already exist in the Dictionary.
                   Return False
               End Try

           End If

       Else ' proc.Length = 0

           Throw New Exception("Process """ & Process_Name & """ not found.")
           Return False

       End If

       Return True

   End Function

#End Region

#Region " Resume Thread "

   ''' <summary>
   ''' Function to resume a thread.
   ''' </summary>
   '''
   ''' <param name="Process_Name">The name of the process, ex: cmd.exe</param>
   ''' <param name="Thread_Number">The thread to resume, ex: 0</param>
   ''' <param name="Recursive"> <value name="True">Resume the thread in all processes found recursively.</value></param>
   ''' <returns>True if the process is found; otherwise, False.</returns>
   Public Shared Function Resume_Thread(ByRef Process_Name As String, _
                                 Optional ByVal Thread_Number As Int32 = 0, _
                                 Optional ByVal Recursive As Boolean = False) As Boolean

       If Process_Name.ToLower.EndsWith(".exe") Then _
       Process_Name = Process_Name.Substring(0, Process_Name.Length - 4)

       Dim Process_Exist As Boolean = False ' To check if process exist in the dictionary.

       Dim Temp_Dictionary As New Dictionary(Of String, IntPtr) ' Replic of the "Thread_Handle_Dictionary" dictionary.

       For Each Process In Thread_Handle_Dictionary
           If Process.Key.StartsWith(Process_Name.ToLower & Thread_Number.ToString) Then Process_Exist = True
           Temp_Dictionary.Add(Process.Key, Process.Value)
       Next

       If Process_Exist Then

           If Recursive Then
               For Each Process In Temp_Dictionary
                   If Process.Key.ToLower.Contains(Process_Name.ToLower & Thread_Number.ToString) Then
                       ResumeThread(Process.Value)
                       CloseHandle(Process.Value)
                       Thread_Handle_Dictionary.Remove(Process.Key)
                   End If
                   Application.DoEvents()
               Next
           Else

               For Each Process In Temp_Dictionary
                   If Process.Key.ToLower.Contains(Process_Name.ToLower & Thread_Number.ToString) Then
                       ResumeThread(Process.Value)
                       CloseHandle(Process.Value)
                       Thread_Handle_Dictionary.Remove(Process.Key)
                       Exit For
                   End If
                   Application.DoEvents()
               Next

           End If

           Return True

       Else

           Throw New Exception("Process """ & Process_Name & """ with thread number """ & Thread_Number & """ not found.")
           Return False

       End If

   End Function

#End Region

End Class

#End Region
#8755
Cita de: Ikillnukes en  7 Junio 2013, 21:40 PM
Ahora me pongo yo critico, y para que coño quiero saber la versión de mi IE? XD

Hombre, se me ocurren ideas tal como parchear algunos errores en los webbrowsers pero, es poca cosa... xD

La idea es conocer la versión de IExplorer de otro PC que no sea el tuyo/mio para anticiparse a posibles errores, por ejemplo si te pagan por una aplicación y quieres usar el render de IE10 en un webbrowser pero ese PC tiene IE8 pues...cagada, no?

Un saludo!
#8756
Devuelve la versión instalada de InternetExplorer en el PC:

Código (vbnet) [Seleccionar]
#Region " Get IExplorer Version "

    ' [ Get IExplorer Version Function ]
    '
    ' // By Elektro H@cker
    '
    ' Examples :
    '
    ' MsgBox(Get_IExplorer_Version)       ' Result: 8
    ' MsgBox(Get_IExplorer_Version(True)) ' Result: 8.00.7600.16385

    Private Function Get_IExplorer_Version(Optional ByVal Long_Version As Boolean = False) As String

        Try
            If Long_Version Then
                Return FileVersionInfo.GetVersionInfo(Environment.GetFolderPath(Environment.SpecialFolder.System) & "\ieframe.dll").ProductVersion
            Else
                Return FileVersionInfo.GetVersionInfo(Environment.GetFolderPath(Environment.SpecialFolder.System) & "\ieframe.dll").ProductVersion.Split(".").First
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
            Return 0
        End Try

    End Function

#End Region
#8757
Modifica el modo de renderizado de IExplorer sobre una aplicación, es decir, el modo de renderizado para un "WebBrowser control"

Código (vbnet) [Seleccionar]
#Region " Set IExplorer Rendering Mode "

    ' [ Set IExplorer Rendering Mode ]
    '
    ' // By Elektro H@cker
    '
    ' Examples :
    ' Set_IExplorer_Rendering_Mode(IExplorer_Renders.IE10)
    ' Set_IExplorer_Rendering_Mode(IExplorer_Renders.IE10_DOCTYPE, "Application.exe")

    Public Enum IExplorer_Renders As Int16
        IE10 = 10001         ' Internet Explorer 10. Webpages are displayed in IE10 Standards mode, regardless of the !DOCTYPE directive.
        IE10_DOCTYPE = 10000 ' Internet Explorer 10. Webpages containing standards-based !DOCTYPE directives are displayed in IE10 Standards mode. Default value for Internet Explorer 10.
        IE9 = 9999           ' Internet Explorer 9. Webpages are displayed in IE9 Standards mode, regardless of the !DOCTYPE directive.
        IE9_DOCTYPE = 9000   ' Internet Explorer 9. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode.
        IE8 = 8888           ' Webpages are displayed in IE8 Standards mode, regardless of the !DOCTYPE directive.
        IE8_DOCTYPE = 8000   ' Webpages containing standards-based !DOCTYPE directives are displayed in IE8 mode.
        IE7 = 7000           ' Webpages containing standards-based !DOCTYPE directives are displayed in IE7 Standards mode.
    End Enum

    Private Sub Set_IExplorer_Rendering_Mode(ByVal IExplorer_Render As IExplorer_Renders, _
                                             Optional ByVal Application_Name As String = Nothing)

        If Application_Name Is Nothing Then Application_Name = Process.GetCurrentProcess().ProcessName & ".exe"

        Try
            My.Computer.Registry.SetValue( _
            "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", _
            Application_Name, IExplorer_Render, Microsoft.Win32.RegistryValueKind.DWord)
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

    End Sub

#End Region







Bloquear popups en un webbrowser

Código (vbnet) [Seleccionar]
        Private Sub WebBrowser_NewWindow(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) _
        Handles WebBrowser1.NewWindow
           e.Cancel = True
       End Sub







Bloquear iFrames en un webbrowser

Código (vbnet) [Seleccionar]
    Private Sub WebBrowser_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) _
    Handles WebBrowser1.DocumentCompleted

        For Each element As HtmlElement In CType(sender, WebBrowser).Document.GetElementsByTagName("iframe")
            element.OuterHtml = String.Empty
            Application.DoEvents()
        Next

    End Sub
#8758
Scripting / Re: Instalar programa en Batch
7 Junio 2013, 17:14 PM
Tu pregunta no tiene nada que ver con Batch, sinó con el instalador.

Hay varios tipos de instaladores, al igual que varios tipos de móviles y varios tipos de sistemas operativos,
debes informarte con cual InstallBuilder ha sido creado ese installer, y luego buscar sus opciones desatendidas (Silent switches).

EDITO:

Además, en caso de ser un WindowsInstaller (MSI), se pueden programar de muchas maneras, se puede nombrar cada opción (paquete) como al programador del instalador le haya dado la gana nombrarlos, solo vas a saber como se llaman buscando en Google para visitar la documentación de soporte del fabricante, y leer, o usando el editor de MSI Orca para saber los nombres de los atributos y las "opciones" de ese installer,
reálmente lo que estás pidiendo es lo mismo que pedir que te lea el futuro un adivino, porque es imposible saberlo sin que des los datos necesarios.

Si se trata de un MSI y es un instalador de algún programa conocido, segúramente la información que necesites ya está por los rincones de Google.

...El archivo bat sería algo así:
@Echo off
Instalador-InnoSetup.exe /silent
Instalador-WindowsInstaller.msi /qn /norestart INSTALLDIR="C:\Ruta" ADDLOCAL=Nombre-de-paquete-a-instalar
Pause&Exit


Saludos.
#8759
Hay varias formas.

Si estás usando un html/xml/xmlns lo mejor quizás sería que uses htmlagilitypack: http://htmlagilitypack.codeplex.com/
...Pero es el método más dificil de entre los que existen, y dependiendo del conteido (sopa de tags) podría no serte útil en absoluto.

Puedes usar el método SPLIT : http://msdn.microsoft.com/en-us/library/system.string.split.aspx

Código (vbnet) [Seleccionar]
for each item in variable_de_tipo_String.split(controlchars.quote) : msgbox(item) : next

O mi manera favorita, Expresiones regulares: http://en.wikipedia.org/wiki/Regular_expression

Output:
http://1.bp.blogspot.com/-NhL7eyZF_bM/UC6AO7LanyI/AAAAAAAADNw/VkfXa-fNxpA/s1600/glucides-vitamines-fruits.jpg
http://1.bp.blogspot.com/-NhL7eyZF_bM/UC6AO7LanyI/AAAAAAAADNw/VkfXa-fNxpA/s1600/glucides-vitamines-fruits11.jpg


Código (vbnet) [Seleccionar]
Public Class Form1

   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

       Dim str As String = <a><![CDATA[<a href="http://1.bp.blogspot.com/-NhL7eyZF_bM/UC6AO7LanyI/AAAAAAAADNw/VkfXa-fNxpA/s1600/glucides-vitamines-fruits.jpg"/> <a href="http://1.bp.blogspot.com/-NhL7eyZF_bM/UC6AO7LanyI/AAAAAAAADNw/VkfXa-fNxpA/s1600/glucides-vitamines-fruits11.jpg"/>]]></a>.Value
       Dim regex As String = <a><![CDATA[(http://|https://|www)([\w+?\.\w+])+([a-zA-Z0-9\~\!\@\#\$\%\^\&amp;\*\(\)_\-\=\+\\\/\?\.\:\;\'\,]*)?]]></a>.Value

       For Each match In RegEx_Matches_To_List(str, regex) : MsgBox(match) : Next
       
   End Sub

#Region " RegEx Matches To List "

   ' [ RegEx Matches To List Function ]
   '
   ' // By Elektro H@cker

   Private Function RegEx_Matches_To_List(ByVal str As String, ByVal RegEx_Pattern As String, _
                                          Optional ByVal Group As Int32 = 0, _
                                          Optional ByVal IgnoreCase As Boolean = True) _
                                          As List(Of String)

       Dim regex_option As System.Text.RegularExpressions.RegexOptions

       If IgnoreCase Then regex_option = System.Text.RegularExpressions.RegexOptions.IgnoreCase _
       Else regex_option = System.Text.RegularExpressions.RegexOptions.None

       Dim match As System.Text.RegularExpressions.Match = System.Text.RegularExpressions.Regex.Match(str, RegEx_Pattern, regex_option)
       Dim Matches_List As New List(Of String)

       Do While match.Success
           Matches_List.Add(match.Groups(Group).ToString)
           match = match.NextMatch()
           Application.DoEvents()
       Loop

       Return Matches_List

   End Function

#End Region

End Class


Saludos.
#8760
Cita de: Ikillnukes en  7 Junio 2013, 07:44 AM
Tengo otra duda, he puesto Panel1.Controls.Add(Panel1)

Dentro del For, ahora los pics tienen las propiedades del Panel1 xD

Claro, las propiedades del container las heredan los controles que añades dentro del container... pasa lo mismo si los creas/añades desde el designer.

Modifica las propiedades que consideres "conflictivas" del panel

un saludo