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

#6191
Programación General / Re: MSDN offline
2 Noviembre 2014, 17:40 PM
Con la aplicación Microsoft Help Viewer, aunque para eso tienes que instalarte VisualStudio ya que no se distribuye de forma standalone (al menos no la versión actual).

Una vez hayas instalado VisualStudio (junto al paquete opcional del Help Viewer, que se instala por defecto) puedes portabilizarlo extrayendo el exectuable de su directorio de instalación para no depender de VS instalado, es algo tedioso, pero como ya te has dado cuenta merece la pena al poder navegar por la documentación de manera offline.

Como ya habrás deducido yo ya lo hice la tediosa labor de portabilizarlo en su día, hay que monitorizar algunas claves de registro y ya está, este Script en Batch sería para poder ejecutar el Help Viewer 2.1, es decir, el que viene incluido con VisualStudio 2013, sin necesidad de tener VS2013 instalado.

Nota: Si vas a usarlo, asegúrate de modificar las rutas del script.

Código (dos) [Seleccionar]
@Echo OFF & Title Microsoft Help Viewer 2.1 Loader, By Elektro

(

::x64
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Help\v2.1"                               /V "AppRoot"                /T "REG_SZ"    /D "%CD%\\Microsoft Help Viewer\\"                            /F
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Help\v2.1"                               /V "DefaultHelpViewerCLSID" /T "REG_SZ"    /D "{FE220E43-FE17-47BE-A57E-84D2B9A5635D}"                   /F
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Help\v2.1\Catalogs"                      /V "ContentStore"           /T "REG_SZ"    /D "%CD%\\Catalogs\\"                                         /F
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Help\v2.1\Catalogs\VisualStudio12"       /V "LocationPath"           /T "REG_SZ"    /D "%CD%\\Catalogs\\VisualStudio12\\"                         /F
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Help\v2.1\Catalogs\VisualStudio12"       /V "LastUpdated"            /T "REG_SZ"    /D "01/01/2014 00:00:00"                                      /F
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Help\v2.1\Catalogs\VisualStudio12\en-US" /V "SeedFilePath"           /T "REG_SZ"    /D "%CD%\\Microsoft Help Viewer\\CatalogInfo\\VS11_en-us.cab" /F
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Help\v2.1\Catalogs\VisualStudio12\en-US" /V "catalogName"            /T "REG_SZ"    /D "Visual Studio Documentation"                              /F
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Help\v2.1\Setup"                         /V "AppRoot"                /T "REG_SZ"    /D "%CD%\\Microsoft Help Viewer\\"                            /F
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Help\v2.1\Setup"                         /V "Install"                /T "REG_DWORD" /D "0x00000001"                                               /F
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Help\v2.1\Setup"                         /V "Version"                /T "REG_SZ"    /D "2.1.21005"                                                /F

::x86
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Help\v2.1"                                           /V "AppRoot"                /T "REG_SZ"    /D "%CD%\\Microsoft Help Viewer\\"                            /F
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Help\v2.1"                                           /V "DefaultHelpViewerCLSID" /T "REG_SZ"    /D "{FE220E43-FE17-47BE-A57E-84D2B9A5635D}"                   /F
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Help\v2.1\Catalogs"                                  /V "ContentStore"           /T "REG_SZ"    /D "%CD%\\Catalogs\\"                                         /F
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Help\v2.1\Catalogs\VisualStudio12"                   /V "LocationPath"           /T "REG_SZ"    /D "%CD%\\Catalogs\\VisualStudio12\\"                         /F
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Help\v2.1\Catalogs\VisualStudio12"                   /V "LastUpdated"            /T "REG_SZ"    /D "01/01/2014 00:00:00"                                      /F
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Help\v2.1\Catalogs\VisualStudio12\en-US"             /V "SeedFilePath"           /T "REG_SZ"    /D "%CD%\\Microsoft Help Viewer\\CatalogInfo\\VS11_en-us.cab" /F
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Help\v2.1\Catalogs\VisualStudio12\en-US"             /V "catalogName"            /T "REG_SZ"    /D "Visual Studio Documentation"                              /F
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Help\v2.1\Setup"                                     /V "AppRoot"                /T "REG_SZ"    /D "%CD%\\Microsoft Help Viewer\\"                            /F
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Help\v2.1\Setup"                                     /V "Install"                /T "REG_DWORD" /D "0x00000001"                                               /F
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Help\v2.1\Setup"                                     /V "Version"                /T "REG_SZ"    /D "2.1.21005"                                                /F

)1>NUL

Start /B "Microsoft Help Viewer" ".\Microsoft Help Viewer\HlpViewer.exe" /CatalogName "VisualStudio12" /Locale "en-US" /Sku "3000" /LaunchingApp "Microsoft,VisualStudio,12.0"

Exit /B 0


EDITO: Creo que para instalar/actualizar los paquetes/catálogos desde la aplicación es necesario la versión correspondiente de VS instalada, la verdad es que ya no lo recuerdo bien, así que antes de desinstalar VS descarga los paquetes que necesites por si acaso :P

Saludos
#6192
Windows / Re: windows 10
2 Noviembre 2014, 17:11 PM
Aunque no lo he probado, he leido que Windows 10 se puede virtualizar tocando un poco la configuración de la ACPI.

Cita de: zhengxi en  2 Noviembre 2014, 12:47 PMasí que no es que no sepa instalar un SO en una máquina virtual

No lo pongo en duda, pero en parte esa frase me hace gracia porque lo dices como si el problema fuese algo totalmente extraño... como si el problema fuese de VBox y no debiese ser así.
¿eres consciente de que para que funcione un nuevo OS dentro del Soft, primero se debe actualizar el Soft para compatibilizarlo con ese OS (al 100%)?.

Esperar a que en alguna nueva release de VirtualBox añadan la opción "Windows 10" (es decir, que añadan soporte oficial) y entonces ya no debería dar ningún tipo de problemas... (al menos no de los grandes)
https://www.virtualbox.org/wiki/Guest_OSes

Saludos
#6193
Cita de: andrecid en  2 Noviembre 2014, 15:06 PM
Código (csharp) [Seleccionar]
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, x,y,0,0);
mouse_event(MOUSEEVENTF_LEFTUP   | MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE, x, y, 0, 0);


la cosa es que uso los 2 pero no se cual es el adecuado.

En la primera instrucción estás realizando un "click" del botón izquierdo.
( Click = Presionar botón + Soltar botón )

En la segunda instrucción solo estás soltando el botón izquierdo.

¿Contesta eso a tu pregunta?, si tu intención es hacer un click entonces la segunda instrucción no te sirve ya que solo estás soltando el botón, de hecho es completamente innecesarío porque el botón ya lo sueltas en la primera instrucción.

Saludos!
#6194
Cita de: andrecid en  2 Noviembre 2014, 13:48 PM
Hola , la verdad me has ayudado bastante pero si te digo la verdad estoy liado, por que en otro post me dijiste que en

mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0,0 ,0);
           mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);


El 1º era los clicks , 2 coordenadas , 3 coordenadas y 4 que era chungo , pero ahora me has dicho que : es así

mouse_event(MOUSEEVENTF_LEFTUP,x, y, 0, 0);

cual de los 2 es el correcto?

Ambos son correctos.

La única diferencia es que en el primer ejemplo las coordenadas son "0", y en el segundo ejemplo son variables, bueno, aparte de que usas flags distintos en cada ejemplo para el primer parámetro, claro está.

No entiendo tu pregunta, eso ya no recuerdo ni cuando "te lo dije", pero la información es correcta y sigue siendo la misma, lo puedes comprobar tu mismo en la documentación de MSDN: http://msdn.microsoft.com/en-us/library/windows/desktop/ms646260%28v=vs.85%29.aspx

1er parámetro: evento(s) del mouse (o "flags")
2do parámetro: coordenada X
3er parámetro coordenada Y
4to parámetro: datos adicionales relacionados con el evento
5to parámetro : información extra


saludos
#6195
Cita de: andrecid en  2 Noviembre 2014, 13:12 PMlo que quiero en realidad es saber como podría hacerse :  si la pagina del form1 esta conectada a nuestro navegador entonces aparezca en el label que la conexión se hizo correctamente

Vamos a ver, ¿lo que quieres es esperar a que la página se cargue del todo en el WebBrowser, y luego mostrar un "mensaje" de validación?.

Entonces suscríbete al evento DocumentCompleted del WebBrowser

Código (vbnet) [Seleccionar]
   ' [WebBrowser] - Navigate And Wait
   '
   ' By Elektro H@cker
   '
   ' Usage Examples:
   ' NavigateAndWait(WebBrowser1, "www.google.com") : MsgBox("Webpage is ready!")

   ''' <summary>
   ''' Navigates to an url and waits the page to be loaded.
   ''' </summary>
   ''' <param name="url">Indicates the url to navigate.</param>
   ''' <param name="newWindow">Indicates whether the url should open into a new browser window.</param>
   Private Sub NavigateAndWait(ByVal Browser As WebBrowser,
                               ByVal url As String,
                               Optional newWindow As Boolean = False)

       With Browser

           .Tag = False ' IsWebPageLoaded = False
           AddHandler .DocumentCompleted, AddressOf WebBrowser_DocumentCompleted
           .Navigate(url, newWindow)

           Do Until DirectCast(.Tag, Boolean) ' IsWebPageLoaded = True
               Application.DoEvents()
           Loop

           RemoveHandler .DocumentCompleted, AddressOf WebBrowser_DocumentCompleted

       End With

   End Sub

   ''' <summary>
   ''' Handles the DocumentCompleted event of the WebBrowser control.
   ''' </summary>
   ''' <param name="sender">The source of the event.</param>
   ''' <param name="e">The <see cref="WebBrowserDocumentCompletedEventArgs"/> instance containing the event data.</param>
   Private Sub WebBrowser_DocumentCompleted(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs)

       DirectCast(sender, WebBrowser).Tag = True

   End Sub


C#, traducción al vuelo
Código (csharp) [Seleccionar]

// [WebBrowser] - Navigate And Wait
//
// By Elektro H@cker
//
// Usage Examples:
// NavigateAndWait(WebBrowser1, "www.google.com") : MsgBox("Webpage is ready!")

/// <summary>
/// Navigates to an url and waits the page to be loaded.
/// </summary>
/// <param name="url">Indicates the url to navigate.</param>
/// <param name="newWindow">Indicates whether the url should be open into a new browser window.</param>
private void NavigateAndWait(WebBrowser Browser, string url, bool newWindow = false)
{
var _with1 = Browser;

_with1.Tag = false; // IsWebPageLoaded = False
_with1.DocumentCompleted += WebBrowser_DocumentCompleted;
_with1.Navigate(url, newWindow);

// IsWebPageLoaded = True
while (!((bool)_with1.Tag)) {
Application.DoEvents();
}

_with1.DocumentCompleted -= WebBrowser_DocumentCompleted;

}

/// <summary>
/// Handles the DocumentCompleted event of the WebBrowser control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="WebBrowserDocumentCompletedEventArgs"/> instance containing the event data.</param>
private void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
((WebBrowser)sender).Tag = true;

}

//=======================================================
//Service provided by Telerik (www.telerik.com)
//=======================================================


PD: Puedes reemplazar la instrucción Application.DoEvents() por un BGWorker.

saludos
#6196
Un ayudante para el manejo del CRC-32

Lo he cosmetizado un poco, el código original lo pueden encontrar en http://nmdt.codeplex.com/

Código (vbnet) [Seleccionar]
#Region " Usage Examples "

' Usage Examples:
' MsgBox(Crc32.Calculate("C:\File"))
' MsgBox(Convert.ToString(Crc32.Calculate("C:\File"), 16).ToUpper)

#End Region

#Region " Imports "

Imports System.IO

#End Region

#Region "CRC-32"

''' <summary>
''' ISO 3309 CRC-32 Calculator.
''' </summary>
Public NotInheritable Class Crc32

#Region " Variables "

    ''' <summary>
    ''' The CRC-32 polynomial.
    ''' </summary>
    Private Shared ReadOnly CRC32Poly As UInteger = &HEDB88320UI

    ''' <summary>
    ''' The CRC32 table.
    ''' </summary>
    Private Shared Crc32Table(0UI To 255UI) As UInteger

#End Region

#Region " Constructors "

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

    ''' <summary>
    ''' Initialize the CRC table from the polynomial.
    ''' </summary>
    Shared Sub New()

        Dim i As UInteger
        Dim j As UInteger
        Dim l As UInteger

        For i = 0 To 255

            j = i

            For l = 0 To 7

                If (j And 1) Then
                    j = ((j >> 1) Xor CRC32Poly)
                Else
                    j >>= 1
                End If

            Next l

            Crc32Table(i) = j

        Next i

    End Sub

#End Region

#Region " Public Methods "

    ''' <summary>
    ''' Validates a file against an input CRC.
    ''' </summary>
    ''' <param name="fileName">Filename of the file to validate.</param>
    ''' <param name="inputCrc">The CRC value against which the validation should occur.</param>
    ''' <returns>True if the input CRC matches the calculated CRC of the data.</returns>
    Public Shared Function Validate(ByVal fileName As String,
                                    ByVal inputCrc As UInteger) As Boolean

        Return Calculate(fileName) = inputCrc

    End Function

    ''' <summary>
    ''' Validates a byte array against an input CRC.
    ''' </summary>
    ''' <param name="data">The byte array to validate.</param>
    ''' <param name="inputCrc">The CRC value against which the validation should occur.</param>
    ''' <returns>True if the input CRC matches the calculated CRC of the data.</returns>
    Public Shared Function Validate(ByVal data() As Byte,
                                    ByVal inputCrc As UInteger) As Boolean

        Return Calculate(data) = inputCrc

    End Function

    ''' <summary>
    ''' Calculate the CRC-32 of a file.
    ''' </summary>
    ''' <param name="fileName">Filename of the file to calculate.</param>
    ''' <param name="bufflen">Specify the size, in bytes, of the read buffer to be used (default is 1k).</param>
    ''' <returns>A 32-bit unsigned integer representing the calculated CRC.</returns>
    ''' <exception cref="System.IO.FileNotFoundException">fileName could not be found.</exception>
    Public Shared Function Calculate(ByVal fileName As String,
                                     Optional ByVal bufflen As Integer = 1024) As UInteger

        If (Not File.Exists(fileName)) Then
            Throw New FileNotFoundException(fileName & " could not be found.")
            Return 0
        End If

        Return Calculate(New FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read), bufflen)

    End Function

    ''' <summary>
    ''' Calculate the CRC-32 of an array of bytes.
    ''' </summary>
    ''' <param name="data">Byte array containing the bytes to calculate.</param>
    ''' <param name="startIndex">Specifies the starting index to begin the calculation (default is 0).</param>
    ''' <param name="length">Specify the length of the byte array to check (default is -1, or all bytes).</param>
    ''' <param name="crc">Input CRC value for ongoing calculations (default is FFFFFFFFh).</param>
    ''' <returns>A 32-bit unsigned integer representing the calculated CRC.</returns>
    ''' <exception cref="System.ArgumentNullException">data;data cannot be equal to null.</exception>
    ''' <exception cref="System.ArgumentOutOfRangeException">length;length must be -1 or a positive number.</exception>
    Public Shared Function Calculate(ByVal data() As Byte,
                                     Optional ByVal startIndex As Integer = 0I,
                                     Optional ByVal length As Integer = -1I,
                                     Optional ByVal crc As UInteger = &HFFFFFFFFUI) As UInteger

        If data Is Nothing Then
            Throw New ArgumentNullException("data", "data cannot be equal to null.")
        End If

        If length = -1 Then
            length = data.Length - startIndex
        End If

        If length <= 0 Then
            Throw New ArgumentOutOfRangeException("length", "length must be -1 or a positive number.")
        End If

        Dim j As Integer
        Dim c As Integer = length - 1

        For j = startIndex To c
            crc = Crc32Table((crc Xor data(j)) And &HFF) Xor (crc >> 8)
        Next j

        Calculate = crc Xor &HFFFFFFFFUI

    End Function

    ''' <summary>
    ''' Calculate the CRC-32 of a Stream.
    ''' </summary>
    ''' <param name="stream">The Stream to calculate.</param>
    ''' <param name="bufflen">Specify the size, in bytes, of the read buffer to be used (default is 1k).</param>
    ''' <param name="closeStream">if set to <c>true</c> the stream gets closed after CRC-32 is calculated.</param>
    ''' <returns>A 32-bit unsigned integer representing the calculated CRC.</returns>
    Public Shared Function Calculate(ByVal stream As Stream,
                                     Optional ByVal bufflen As Integer = 1024I,
                                     Optional ByVal closeStream As Boolean = True) As UInteger

        '' our working marshal buffer will be 1k, this is a good compromise between eating up memory and efficiency.
        Dim blen As Integer = bufflen
        Dim crc As UInteger = &HFFFFFFFFUI

        Dim b() As Byte

        Dim i As Long
        Dim l As Long = stream.Length
        Dim c As Long = l - 1

        Dim e As Integer
        Dim j As Integer

        ReDim b(blen - 1)

        For i = 0 To c Step blen

            e = CInt(l - i)

            If e > blen Then
                e = blen
            End If

            If (stream.Position <> i) Then
                stream.Seek(i, SeekOrigin.Begin)
            End If

            stream.Read(b, 0, e)

            e -= 1

            For j = 0 To e
                crc = Crc32Table((crc Xor b(j)) And &HFF) Xor (crc >> 8)
            Next j

        Next i

        If (closeStream) Then
            stream.Close()
        End If

        Calculate = crc Xor &HFFFFFFFFUI

    End Function

#End Region

End Class

#End Region
#6197
Cita de: L0RdP3I en  2 Noviembre 2014, 01:23 AM¿Que es el haking? ¿El rey ha?¿El verbo hak+ing?¿gnikah?¿ El conjunto A={'h','a','k','i','n','g'}?

Lo que el compañero @L0RdP3I seguramente quiere decir es que lo primero que debes hacer para aprender, es comprender.

Sin ánimo de ofender, pero cualquier erudito informático en general (o Hacker) no son gente que se pronuncie o se exprese como un niño que no ha pasado la E.S.O., así que ponte a estudiar como se escriben los términos, y el significado de las terminos, en fín, la terminología informática en general (si quieres profundizar en las definiciones del Hacking es cosa tuya), y cuando ya sepas de lo que estás hablando entonces vuelves aquí a preguntar...

El dominio de lenguajes como a puntuado @L0RdP3I también son importantes, tanto informáticos como linguísticos, bueno, en realidad solo el Inglés es importante, ya que siempre van ligados.

Saludos
#6198
Cita de: Ivang4life en  1 Noviembre 2014, 22:53 PMalguien tiene la ruta default para windows 8.1 (x64)

Rutas por defecto contenidas en la variable de entorno PATH para Windows 8/8.1 X64...

Current User
01) C:\Windows
02) C:\Windows\System32
03) C:\Windows\System32\wbem
04) C:\Windows\System32\WindowsPowerShell\v1.0
05) C:\Windows\SysWOW64


All Users
01) C:\Windows
02) C:\Windows\System32
03) C:\Windows\System32\wbem
04) C:\Windows\System32\WindowsPowerShell\v1.0
05) C:\Windows\SysWOW64







El contenido literal del valor de registro...

Current User:
HKEY_CURRENT_USER\Environment    PATH
C:\Windows;C:\Windows\System32;C:\Windows\System32\wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\SysWOW64

All Users:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment    PATH
C:\Windows;C:\Windows\System32;C:\Windows\System32\wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\SysWOW64






Puedes llevar a cabo las operaciones de listado, limpieza, agregar/eliminar, o restaurar por defecto el PATH, usando mi aplicación:

[SOURCE] PATHS (Administra las entradas de las variables de entorno 'PATH' y...)

Cita de: http://foro.elhacker.net/net/source_paths_administra_las_entradas_de_las_variables_de_entorno_path_y-t398347.0.html;msg1883825#msg1883825

Saludos
#6199
Cita de: El Benjo en  1 Noviembre 2014, 18:37 PMEs más que nada porque VB es un lenguaje que te permite hacer cosas que se consideran "un mal hábito" como no declarar las variables que utilizas, etc.

No opino de esa misma manera, un programador usará malas prácticas si así lo quieres hacer sin importar el lenguaje que sea, en C# puedes usar malas practicas, las cuales además algunas se comparten con VB.NET, pero otras malas prácticas son específicas para este lenguaje, C#.

Cabe mencionar que ese tipo de malos hábitos relacionadas con las variables en VB.Net se pueden evitar activando las declaraciones "Option", cosa que se puede especificar en las opciones de la IDE para que estén activadas por defecto en todos los nuevos proyectos ( Tools -> Options -> Project and Solutions -> VB defaults ), o se pueden declarar de forma manual en la cabecera de la Class/Module:

Código (vbnet) [Seleccionar]
Option Explicit On
Option Strict On
Option Infer Off


Entonces, con esto queda el problema de esos malos hábitos resuelto.

En mi opinión, esto lo veo una mejora, ya que VB.Net no nos obliga a usar malas prácticas, no es un mal lenguaje sino todo lo contrario al brindarnos la posibilidad de elección para trabajar de una forma más rápida evitando ese tipo de especificaciones/correcciones cuando sabemos perfectamente lo que estamos haciendo y esto supone un aumento de rendimiento, ya que en cualquier momento podemos activar las declaraciones para añadir las especificaciones o hacer las correcciones necesarias y eso me parece algo genial.


Cita de: El Benjo en  1 Noviembre 2014, 18:37 PMhttp://msdn.microsoft.com/es-es/library/bb972208.aspx

Gran artículo por parte de Microsoft explicando los entresijos básicos de MSIL, gracias, lo he añadido a mi mini-FAQ de Manuales .Net xD







Cita de: andrecid en  1 Noviembre 2014, 11:43 AMEntonces ¿Por que recomiendan más C# que VB?

Habrá gente experta que haya trabajado por igual con VB.Net y C# para sacar sus propias conclusiones y recomendar un lenguaje o el otro.

Yo no los he trabajado por igual, pero puedo decir que jamás he necesitado recurrir a C# para desarrollar algo que no se pudiera hacer en Vb.Net,
hace ya bastante tiempo cuando me hice esta misma pregunta leía comentarios de gente que suele decir que entre VB.Net y C#, C# sería la única opción para tocar temas delicados como la inyección de código/dll, el API Hooking, la lectura/escritura de la memoria en un proceso ajeno, etc, pero obviamente cuando empiezas a tocar .Net acabas dándode cuenta de que ese tipo de comentarios/acusaciones son completamente falsas ya que se puede hacer exactamente lo mismo en Vb.Net que en C# respecto a esos temas que mencioné, aunque de todas formas no discuto que quizás sí exista algo que solo se pueda llevar a cabo con C# (entre Vb.Net y C# hablando) ya que no soy ningún gurú en este lenguaje, pero para cosar "normales" te va a servir cualquiera de los dos lenguajes.

Por otro lado, también habrá gente que nunca haya usado CSharp, pero por su nombre lo asociarán automáticamente con C++ y tenderán a decir que es mejor lenguaje por favoritismo o simplemente por ese mal razonamiento, la razón de este mal razonamiento se explica detalladamente en el articulo que te mostró @El Benjo.

Claro, si asociasemos VB.Net con VB6 o VBS entonces yo tambien diría lo mismo, diría que VB.Net es una completa basura como lenguaje y que C# es mejor, pero estaría equivocado porque ni VB.Net se asemeja en sus antecesores, ni C# a los suyos (exceptuando la sintaxis de ambos lenguajes), es una tecnología nueva dependiente de .Net Framework, y aparte la WinAPI no va a cambiar o a mejorar por arte de magia entre ambos lenguajes :-/.

Si una persona random dice que C# o VB.Net es mejor en un debate sin dar ningún argumento... ¿para que tomarse el comentario en serio?, busca y lee por ti mismo las diferencias entre cada lenguaje, saca tú tus propias conclusiones para decidir que lenguaje te parece mejor a ti.


Comparison of C Sharp and Visual Basic .NET
Is C# code faster than Visual Basic.NET code?
VB.NET vs. C#.NET?
10 Reasons Why Visual Basic is Better Than C#
Top 10 reasons VB.NET is better than C#

En resumen, al final las diferencias entre ambos lenguajes son pequeños tecnicismos a los que quizás nunca legues a necesitar darle importancia, tu decisión debería basarse en el lenguaje que más te guste y más facil de usar sea para ti, personalmente yo no cambiaría la sintaxis de VB.Net por la de C#.

Te recomiendo leer el artículo que te ha linkeado el compañero @El Benjo.

Saludos
#6200
Cita de: analisis242 en  1 Noviembre 2014, 12:00 PMAlguien sabe el porque? Necesitaria saberlo.

Por que sencillamente es una interfaz de usuario básica (al igual que el administrador de tareas, etc), solo se mostrarán las aplicaciones consideradas "seguras" para su desinstalación.

Las instalaciones consideradas como componentes del sistema, o instalaciones ocultas, o en fín, productos que para su desinstalación dependan de otros instaladores o puedan alterar el comportamiento de un producto al desinstalarse no se mostrarán en dicha interfaz.

Aparte de esto, si el distribuidor así lo quiere al desarrollar el script/programa de instalación, un installer no tiene porque añadir ninguna ninguna clave de registro que indique que dicho software está instalado en el equipo para que te salga en esa lista del panel de control.

Para ver los componentes de sistema y ocultos para desinstalarlos puedes utilizar aplicaciones como Uninstall Tool.

Saludos