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

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Mensajes
Páginas: 1 ... 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 [627] 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 ... 1236
6261  Programación / .NET (C#, VB.NET, ASP) / Re: EJECUTAR CMD EN APLICACIÓN .NET en: 13 Noviembre 2014, 16:54 pm
No es ninguna molestía, ayudar es mi hobbie favorito (y más cuando se trata de VB.Net) :)

He añadido el método StartTask, CancelTask, y el linklabel al código que mostré arriba, aquí esta todo lo necesario:

Código
  1. Imports System.Threading
  2. Imports System.Threading.Tasks
  3.  
  4. Public Class Form1
  5.  
  6.    Private cmdTask As Task
  7.    Private cmdTaskCTS As New CancellationTokenSource
  8.    Private cmdTaskCT As CancellationToken
  9.  
  10.    ''' <summary>
  11.    ''' The CMD <see cref="System.Diagnostics.Process"/> instance.
  12.    ''' </summary>
  13.    Private WithEvents cmdProcess As New Process With
  14.        {
  15.            .EnableRaisingEvents = True,
  16.            .StartInfo = New ProcessStartInfo With
  17.                             {
  18.                                .FileName = "cmd.exe",
  19.                                .Arguments = String.Empty,
  20.                                .RedirectStandardInput = False,
  21.                                .RedirectStandardOutput = True,
  22.                                .RedirectStandardError = True,
  23.                                .UseShellExecute = False,
  24.                                .CreateNoWindow = True
  25.                             }
  26.        }
  27.  
  28.    ''' <summary>
  29.    ''' Gets the ping commandline arguments.
  30.    ''' </summary>
  31.    Private ReadOnly Property PingArguments As String
  32.        Get
  33.            Return String.Format("ping.exe -t ""{0}.{1}.{2}.{3}""",
  34.                                TextBox1.Text, TextBox2.Text,
  35.                                TextBox3.Text, TextBox4.Text)
  36.        End Get
  37.    End Property
  38.  
  39.    Private Sub btnSend_Click(ByVal sender As Object, ByVal e As EventArgs) _
  40.    Handles btnsend.Click
  41.  
  42.        Me.StartTask()
  43.  
  44.    End Sub
  45.  
  46.    Private Sub CMDAutomate()
  47.  
  48.        With Me.cmdProcess
  49.  
  50.            .StartInfo.Arguments = String.Format("/C ""{0}""", Me.PingArguments)
  51.            .Start()
  52.            .BeginOutputReadLine()
  53.            .BeginErrorReadLine()
  54.            .WaitForExit(Integer.MaxValue)
  55.  
  56.        End With
  57.  
  58.    End Sub
  59.  
  60.    ''' <summary>
  61.    ''' Occurs when an application writes to its redirected <see cref="System.Diagnostics.Process.StandardOutput"/> stream.
  62.    ''' Occurs when an application writes to its redirected <see cref="System.Diagnostics.Process.StandardError"/>  stream.
  63.    ''' </summary>
  64.    Private Sub cmdProcess_OutputDataReceived(ByVal sender As Object, ByVal e As DataReceivedEventArgs) _
  65.    Handles cmdProcess.OutputDataReceived,
  66.            cmdProcess.ErrorDataReceived
  67.  
  68.        Select Case txtresults.InvokeRequired
  69.  
  70.            Case True
  71.                txtresults.Invoke(Sub() txtresults.AppendText("" & e.Data))
  72.                txtresults.Invoke(Sub() txtresults.AppendText(Environment.NewLine))
  73.  
  74.            Case Else
  75.                txtresults.AppendText(e.Data)
  76.                txtresults.AppendText(Environment.NewLine)
  77.  
  78.        End Select
  79.  
  80. #If DEBUG Then
  81.        ' Debug.WriteLine(e.Data)
  82. #End If
  83.  
  84.    End Sub
  85.  
  86.    ''' <summary>
  87.    ''' Occurs when a <see cref="System.Diagnostics.Process"/> exits.
  88.    ''' </summary>
  89.    Private Sub cmdProcess_Exited(ByVal sender As Object, ByVal e As EventArgs) _
  90.    Handles cmdProcess.Exited
  91.  
  92.        Debug.WriteLine(String.Format("cmdProcess has exited with exit code: {0}",
  93.                                      DirectCast(sender, Process).ExitCode))
  94.  
  95.    End Sub
  96.  
  97.    Private Sub LinkLabel1_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) _
  98.    Handles LinkLabel1.LinkClicked
  99.  
  100.        ' limpio el texto de cada textbox.
  101.        For Each tb As TextBox In Me.Controls.OfType(Of TextBox)()
  102.            tb.Clear()
  103.        Next tb
  104.  
  105.        ' cancelo la tarea en segundo plano.
  106.        Me.CancelTask()
  107.  
  108.    End Sub
  109.  
  110.    Private Sub StartTask()
  111.  
  112.        Me.cmdTask = Task.Factory.StartNew(AddressOf CMDAutomate)
  113.        Me.cmdTaskCTS = New Threading.CancellationTokenSource
  114.        Me.cmdTaskCT = cmdTaskCTS.Token
  115.  
  116.    End Sub
  117.  
  118.    Private Sub CancelTask()
  119.  
  120.        ' Si el proceso no se ha detenido...
  121.        If Not Me.cmdProcess.HasExited Then
  122.  
  123.            With Me.cmdProcess
  124.                ' cancelo la lectura de los outputs.
  125.                .CancelOutputRead()
  126.                .CancelErrorRead()
  127.                .Kill() ' mato el proceso (cmd.exe)
  128.            End With
  129.  
  130.            ' Cancelo la tarea en segundo plano.
  131.            Me.cmdTaskCTS.Cancel()
  132.            ' Espero a que la tarea se haya cancelado.
  133.            Me.cmdTask.Wait()
  134.  
  135.        End If
  136.  
  137.    End Sub
  138.  
  139. End Class

EDITO: Fíjate que también cambié esto en el método CMDAutomate, para que funcionase del modo esperado:
Citar
Código
  1. .WaitForExit(Integer.MaxValue)

Saludos.
6262  Programación / Programación General / Re: duda con IDE para programar en: 12 Noviembre 2014, 23:27 pm
Creo que aquí hay una pequeña confusión, lo que se está comentando no es la CMD ni MS-DOS en si mismo, sinó la programación orientada a DOS o para Win16, realmente no se si es eso lo que pides, es decir, ¿crear una GUI para un entorno de 8/16 Bits?, ¿algo como esto de aquí abajo?, pero estamos en el 2014... ¿a donde vas con eso que pides? :-/, ¿o por lo contrario quieres una IDE moderna con un framework capaz de simular este diseño de los años 80-90? :-/



   

Ese tipo de interfaces ya solo se ven como menues de un LiveCD, aplicaciones muy antiguas bajo un WinPE antiguo, o el BootMenu de Windows (y ya ni eso en Windows 8), no pretendo cuestionarte pero si no tienes una razón de peso me parece una involución totalmente innecesaria, anti-estética e inproductiva, ¿realmente necesitas desarrollar una aplicación de ese estilo?.

Respondiendo a tu pregunta: Sinceramente... no lo se, pero lo que está claro es que cualquier IDE de aquella época que cumpla el requisito de tener un VisualBuilder/Designer te serviría:

WATCOM C/C++ 10a
Citar
   16-bit development for the following platforms:
        OS/2 1.x
        DOS
        Windows 3.x applications




Visual Basic for DOS



¿Más actuales?, lo desconozco, quizás la IDE de WinBatch haga algo parecido:
Winbatch is a Microsoft Windows scripting language developed by Wilson WindowWare. Its environment includes an interpreter and a code editor along with a dialog designer and optional compiler to create self-contained executables.
Its language structure and syntax is a cross between DOS batch command, Basic and C.



Saludos
6263  Sistemas Operativos / Windows / Re: ¿ cuando sera el lanzamiento de windows 10 ? en: 12 Noviembre 2014, 20:18 pm
Deberían buscar, usar la Wikipedia o la página de Microsoft, para algo están... para obtener información confiable y oficial :P

Como ya han comentado, no hay fecha exacta.

http://en.wikipedia.org/wiki/Windows_10
Citar
Windows 10 is an upcoming version of the Microsoft Windows operating system. Unveiled on September 30, 2014, it is scheduled to be released in late 2015.[1]

http://windows.microsoft.com/es-es/windows/answers?tId=cf48316b-bfb9-4134-b544-0253683b2441
Citar
si quieres obtener la versión final de windows 10 tendrías que esperar hasta mediados del siguiente año (2015) que es cuando aproximadamente saldrá la versión final

Saludos
6264  Programación / .NET (C#, VB.NET, ASP) / Re: DUDA ASP.NET C# en: 12 Noviembre 2014, 20:00 pm
Buenas.

No manejo ASP.Net, ni tampoco tengo muy claro si esto es lo que andas buscando, pero he intentado reproducir el problema que tienes en tecnología WinForms.

Mira a ver si el siguiente source te resuelve todas o al menos alguna de tus dudas...
Para las operaciones artiméticas he recurrido a LINQ ya que se puede utilizar de forma "global".




Descarga del proyecto:
https://www.mediafire.com/?y1yifofj0s8i6r8


VB.Net:
Código
  1. Public Class Form1
  2.  
  3.    Private WithEvents dt As DataTable
  4.  
  5.    Private ReadOnly columns As DataColumn() =
  6.        {
  7.            New DataColumn("Codigo_Articulo", GetType(String)),
  8.            New DataColumn("Descripcion", GetType(String)),
  9.            New DataColumn("Cantidad", GetType(Integer)),
  10.            New DataColumn("Precio", GetType(Decimal))
  11.        }
  12.  
  13.    ' añadir fila
  14.    Private Sub Button_añadir_Click() Handles Button_añadir.Click
  15.  
  16.        If dt Is Nothing Then
  17.            dt = New DataTable
  18.            dt.Columns.AddRange(columns)
  19.            dgvCostos.DataSource = dt
  20.            ' dgvCostos.DataBind()
  21.        End If
  22.  
  23.        Dim dr As DataRow = dt.NewRow()
  24.        dr(columns(0)) = txtCodArt.Text
  25.        dr(columns(1)) = txtDescripcion.Text
  26.        dr(columns(2)) = txtCantidad.Text
  27.        dr(columns(3)) = txtPrecio.Text
  28.        dt.Rows.Add(dr)
  29.        dt.AcceptChanges()
  30.  
  31.    End Sub
  32.  
  33.    ' Sumar y Multiplicar
  34.    Private Sub Button_sumar_Click(sender As Object, e As EventArgs) Handles Button_sumar.Click
  35.  
  36.        ' total de cantidades
  37.        Dim sumaCantidades As Integer = (From row As DataRow In dt.Rows
  38.                                         Select CType(row.Item(2I), Integer)).Sum
  39.  
  40.        ' total de precios
  41.        Dim sumaPrecios As Integer = (From row As DataRow In dt.Rows
  42.                                      Select CType(row.Item(3I), Integer)).Sum
  43.  
  44.        ' un type anónimo, el cual contiene cada DataRow, y cada "cantidad * precio" de cada DataRow.
  45.        Dim multi = From row As DataRow In dt.Rows
  46.                    Let multiply As Integer = CType(row.Item(2I), Integer) * CType(row.Item(3I), Integer)
  47.  
  48.        Dim sb As New System.Text.StringBuilder
  49.        sb.AppendLine(String.Format("Cantidad total: {0}", CStr(sumaCantidades)))
  50.        sb.AppendLine(String.Format("Precio total: {0}", CStr(sumaPrecios)))
  51.        sb.AppendLine()
  52.  
  53.        For index As Integer = 0 To (multi.Count - 1)
  54.  
  55.            sb.AppendLine(String.Format("Row: {0}, Cantidad: {1}, Precio: {2}, Precio total: {3}",
  56.                                        CStr(index),
  57.                                        CStr(multi(index).row.Item(2I)),
  58.                                        CStr(multi(index).row.Item(3I)),
  59.                                        CStr(multi(index).multiply)))
  60.  
  61.        Next index
  62.  
  63.        MessageBox.Show(sb.ToString)
  64.  
  65.    End Sub
  66.  
  67. End Class

C# (traducción online)
Código
  1. using Microsoft.VisualBasic;
  2. using System;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using System.Data;
  6. using System.Diagnostics;
  7. public class Form1
  8. {
  9.  
  10.  
  11. private DataTable dt;
  12. private readonly DataColumn[] columns = {
  13. new DataColumn("Codigo_Articulo", typeof(string)),
  14. new DataColumn("Descripcion", typeof(string)),
  15. new DataColumn("Cantidad", typeof(int)),
  16. new DataColumn("Precio", typeof(decimal))
  17.  
  18. };
  19. // añadir fila
  20.  
  21. private void Button_añadir_Click()
  22. {
  23. this.dt = (DataTable)dgvCostos.DataSource;
  24.  
  25. if (dt == null) {
  26. dt = new DataTable();
  27. dt.Columns.AddRange(columns);
  28. dgvCostos.DataSource = dt;
  29. // dgvCostos.DataBind()
  30. }
  31.  
  32. DataRow dr = dt.NewRow();
  33. dr(columns(0)) = txtCodArt.Text;
  34. dr(columns(1)) = txtDescripcion.Text;
  35. dr(columns(2)) = txtCantidad.Text;
  36. dr(columns(3)) = txtPrecio.Text;
  37. dt.Rows.Add(dr);
  38. dt.AcceptChanges();
  39.  
  40. }
  41.  
  42. // Sumar y Multiplicar
  43.  
  44. private void Button_sumar_Click(object sender, EventArgs e)
  45. {
  46. // total de cantidades
  47. int sumaCantidades = (from row in dt.RowsConvert.ToInt32(row.Item(2))).Sum;
  48.  
  49. // total de precios
  50. int sumaPrecios = (from row in dt.RowsConvert.ToInt32(row.Item(3))).Sum;
  51.  
  52. // un type anónimo, el cual contiene cada DataRow, y cada "cantidad * precio" de cada DataRow.
  53. dynamic multi = from row in dt.RowsConvert.ToInt32(row.Item(2)) * Convert.ToInt32(row.Item(3))int;
  54.  
  55. System.Text.StringBuilder sb = new System.Text.StringBuilder();
  56. sb.AppendLine(string.Format("Cantidad total: {0}", Convert.ToString(sumaCantidades)));
  57. sb.AppendLine(string.Format("Precio total: {0}", Convert.ToString(sumaPrecios)));
  58. sb.AppendLine();
  59.  
  60.  
  61. for (int index = 0; index <= (multi.Count - 1); index++) {
  62. sb.AppendLine(string.Format("Row: {0}, Cantidad: {1}, Precio: {2}, Precio total: {3}", Convert.ToString(index), Convert.ToString(multi(index).row.Item(2)), Convert.ToString(multi(index).row.Item(3)), Convert.ToString(multi(index).multiply)));
  63.  
  64. }
  65.  
  66. MessageBox.Show(sb.ToString);
  67.  
  68. }
  69.  
  70. }
  71.  
  72. //=======================================================
  73. //Service provided by Telerik (www.telerik.com)
  74. //Conversion powered by NRefactory.
  75. //Twitter: @telerik
  76. //Facebook: facebook.com/telerik
  77. //=======================================================
  78.  
6265  Programación / .NET (C#, VB.NET, ASP) / Re: EJECUTAR CMD EN APLICACIÓN .NET en: 12 Noviembre 2014, 18:24 pm
Como lo puedo parar?

Depende.

1) ¿Al clickar en el linklabel es cuando quieres detener Ping?

Debes detener la ejecución del thread que está corriendo la cmd, si estás usando la Class Thread entonces puedes llamar al método Thread.Abort, si estás usando la class Tasks entonces puedes llamar al método Task.Cancel usando un token de cancelación para esa Task.

O también puedes hacerlo desde la winAPi, con la función TerminateThread: http://msdn.microsoft.com/en-us/library/windows/desktop/ms686717%28v=vs.85%29.aspx

2) ¿Estás usando la misma Task del código que te mostré?;
Muestra el resto del código relevante, es decir, la declaración del thread y el método del thread (donde ejecutas la cmd)

EDITO: De todas formas hace tiempo escribí un ejemplo de uso de la class Tasks para cancelar una Task, te podría servir hasta nueva respuesta:

Código
  1. #Region " TASK Example "
  2.  
  3. Public Class Form1
  4.  
  5.    ' NORMAL TASK USAGE:
  6.    ' ------------------
  7.    Private Task1 As Threading.Tasks.Task
  8.    Private Task1CTS As New Threading.CancellationTokenSource
  9.    Private Task1CT As Threading.CancellationToken = Task1CTS.Token
  10.  
  11.    Private Sub MyTask1(ByVal CancellationToken As Threading.CancellationToken)
  12.  
  13.        For x As Integer = 0 To 9999
  14.  
  15.            If Not CancellationToken.IsCancellationRequested Then
  16.                Debug.Print("Task1: " & x)
  17.            Else
  18.                MsgBox(String.Format("Task1 Canceled at ""{0}""", x))
  19.                Exit Sub
  20.            End If
  21.  
  22.        Next x
  23.  
  24.    End Sub
  25.  
  26.    ' ANONYMOUS TASK METHOD:
  27.    ' ---------------------
  28.    Private Task2 As Threading.Tasks.Task
  29.    Private Task2CTS As New Threading.CancellationTokenSource
  30.    Private Task2CT As Threading.CancellationToken = Task2CTS.Token
  31.  
  32.    Private Delegate Function Task2Delegate(ByVal CancellationToken As Threading.CancellationToken)
  33.  
  34.    Private MyTask2 As Task2Delegate =
  35.      Function(CancellationToken As Threading.CancellationToken) As Boolean
  36.  
  37.          For x As Integer = 0 To 9999
  38.  
  39.              If Not CancellationToken.IsCancellationRequested Then
  40.                  Debug.Print("Task2: " & x)
  41.              Else
  42.                  MsgBox(String.Format("Task2 Canceled at ""{0}""", x))
  43.                  Return False
  44.              End If
  45.  
  46.          Next x
  47.  
  48.          Return True
  49.  
  50.      End Function
  51.  
  52.    Private Sub TaskTest() Handles MyBase.Shown
  53.  
  54.        ' Run an asynchronous Task.
  55.        Task1 = Threading.Tasks.Task.Factory.StartNew(Sub() MyTask1(Task1CT), Task1CT)
  56.  
  57.        ' Wait 2 seconds (Just to demonstrate this example)
  58.        Threading.Thread.Sleep(2 * 1000)
  59.  
  60.        ' Cancel the Task.
  61.        Task1CTS.Cancel()
  62.  
  63.        ' Wait for the Task to finish the being cancelled.
  64.        Task1.Wait()
  65.  
  66.        ' Show the task status
  67.        MsgBox(Task1.Status.ToString) ' Result: RanToCompletion
  68.  
  69.        ' ReStart the Task1.
  70.        Task1 = Threading.Tasks.Task.Factory.StartNew(Sub() MyTask1(Task1CT), Task1CT)
  71.  
  72.        ' Start the Task2
  73.        Task2 = Threading.Tasks.Task.Factory.StartNew(Of Boolean)(Function() MyTask2(Task2CT), Task2CT)
  74.  
  75.        ' Wait for both Tasks to finish their execution.
  76.        Threading.Tasks.Task.WaitAll()
  77.  
  78.    End Sub
  79.  
  80. End Class
  81.  
  82. #End Region

Saludos
6266  Programación / .NET (C#, VB.NET, ASP) / Re: eliminar registros con ceros en: 12 Noviembre 2014, 12:07 pm
No hay "doble cero" Luis, son "0" sin más, ni tampoco "01" etc, recuerda que estás usando una lista numérica, no de String, el resto de ceros los añades (de forma "temporal") solamente para mostrarlos en el listbox con ese formato de ceros.

Cita de: Luis
Código
  1.        combinations.ForEach(Sub(combination As List(Of Integer))
  2.                                ListBox2.Items.Add(String.Join(", ", From value As Integer In combination
  3.                                                                     Select If(value.ToString.Length = 1I,
  4.                                                                               value.ToString.Insert(0I, "0"c),
  5.                                                                               value.ToString)))

Así que puedes comprobar si el primer elemento de cada sub-lista es "0", eliminar la sub-lista, y ya está:

Código
  1. Public Class Form1
  2.  
  3.    Private Sub test() Handles MyBase.Shown
  4.  
  5.        ' instancio  la lista que contiene las sub-listas
  6.        Dim lists As New List(Of List(Of Integer))
  7.  
  8.        ' instancio las sub-listas
  9.        Dim list1 As New List(Of Integer) From {0, 1, 3, 4, 5, 6}
  10.        Dim list2 As New List(Of Integer) From {0, 1, 4, 5, 6, 8}
  11.        Dim list3 As New List(Of Integer) From {0, 1, 4, 5, 6, 9}
  12.        Dim list4 As New List(Of Integer) From {1, 2, 4, 5, 6, 18}
  13.        Dim list5 As New List(Of Integer) From {10, 20, 45, 88, 87, 90}
  14.  
  15.        ' añado las sub-listas
  16.        lists.AddRange({list1, list2, list3, list4, list5})
  17.  
  18.        ' elimino las sub-listas cuyo primer elemento sea "0"
  19.        lists.RemoveAll(Function(list As List(Of Integer)) list.First = 0)
  20.  
  21.        ' Compruebo las listas que han quedado...
  22.        Dim sb As New System.Text.StringBuilder
  23.        For Each list As List(Of Integer) In lists
  24.            sb.AppendLine(String.Join(", ", list))
  25.        Next
  26.        MessageBox.Show(sb.ToString, "Listas que no se han eliminado",
  27.                        MessageBoxButtons.OK, MessageBoxIcon.Information)
  28.  
  29.    End Sub
  30.  
  31. End Class

Deberías verte capaz de hacer el resto de modificaciones en caso de que necesite modificaciones para tus necesidades, simplemente puedes repetir esta instrucción con la condición que quieras comprobar:
Cita de: Elektro
Código
  1. lists.RemoveAll(Function(list As List(Of Integer)) list.First = 0)

lists.RemoveAll(...list.Contains(0)...), por ejemplo... también puedes añadirle los "0" de forma temporal para crear esa condición y evaluarla, de la mimsma manera que en el código que cité donde añades los "0".

saludos
6267  Programación / .NET (C#, VB.NET, ASP) / Re: Unas dudas sobre .NET en: 12 Noviembre 2014, 11:50 am
Si un ordenador no tiene instalado .NET Framework, ¿Qué ocurrirá? ¿Se llegará a abrir el formulario?

Lo que ocurrirá es que te saldrá un msgbox de Windows advirtiéndote de que la versión de .NetFW requerida por la aplicación en cuestión no está instalada en tu equipo, y por lo tanto no se podrá iniciar, ni mucho menos se llegará a abrir el form principal.



El mensaje varía según la versión de Windows que se utilice, en Win7 si no recuerdo mal no te sale nada para descargar la versión requerida, y en XP directamente te sale un error de aplicación no válida sin información sobre el error.

La versión 3.5 de .NetFW es la versión recomendada de forma general al ser la más común en cualquier equipo, pero obviamente si usas la 3.5 no podrás usar las "nuevas" características de la librería de classes de las versiones 4.0, 4.5, 4.5.1 y 4.5.2


What's New in the .NET Framework 4
What's New in the .NET Framework 4.5, 4.5.1, and 4.5.2

PD: Sinceramente, en mi humilde opinión personal utiliar la versión 3.5 a estas alturas... es seguir estancado en el pasado sin ningún motivo coherente, a menos que seas una compañía y tu única alternativa sea utilizar la versión 3.5 por motivos de compatibilidad en múltiples PC's o por lo que sea, como última opción.





¿Es posible que entre una versión del framework y otra, cambien las DLL? ¿Algún método de asegurarse de que un ordenador tiene instalada la versión adecuada?

Por supuesto, se van actualizando y agregando nuevas funciones y otras quedan obsoletas/eliminadas, pero cada versión de .NetFW instalada en el equipo expande sus propias dll's, es decir, una versión nueva no reemplaza las dll de versiones anteriores, así que mientras tu aplicación use un .NetFW objetivo que esté instalado en el equipo no habrá problema alguno.

Lo correcto es distribuir junto tu software o al menos indicar la versión de .Net Framework Runtimes que necesita tu aplicación para iniciarse, y proveer el paquete por separado (el instalador online no pesa ni 1 mb), o un link de descarga oficial, en fin, lo que sea, pero algo útil para el end-user.

De todas formas sí que puedes averiguar que versiones de .Net Framework están instaladas en el equipo, en tiempo de ejecución, pero ten en cuenta que la solución propuesta por el compañero KuBox no te servirá en todos los casos, por ejemplo en versiones de Windows que vengan sin .Net framework (Ej: Windows XP y todas sus versiones anteriores, al no existir dicha carpeta) o por ejemplo en Win XP con SP2 con .NetFW 2.0 instalado (aunque en este caso no se el motivo específico, pero a mi no me sale), así que otra alternativa más global es observando el registro de Windows ya que practicamente todo se almacena en el registro de Windows:

Framework Version    Registry Key
1.0    HKLM\Software\Microsoft\.NETFramework\Policy\v1.0\3705
1.1    HKLM\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\Install
2.0    HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\Install
3.0    HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup\InstallSuccess
3.5    HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5\Install

Y obviamente puedes utilizar cómodas herramientas/librerías de terceros para facilitarte la tarea.


Using managed code to detect what .NET Framework versions and service packs are installed
(en los comentarios tienes actualizaciones del source compatible con .NetFW 4.0/4.5, yo lo uso sin problemas)

+
Librería de Snippets !! (Posteen aquí sus snippets)
Telerik Online converter





¿Existe alguna manera de empaquetar librerías DLL externas en un ejecutable?

Puedes embedir diréctamente una dll desde la IDE de VS, o puedes embedirlas usando aplicaciones d eterceros que te faciliten la tarea.

Existe casi una infinidad de herramientas para dicha tarea, te recomiendo la aplicación Smartassembly de RedGate como solución profesional puesto que proporciona características únicas, pero si quieres algo más simple puedes utilizar .Net Shrink (de pago), o IlMerge + ILMerge GUI (gratis)


SMartassembly
.Net Shrink
ILMerge
ILMerge GUI

No te vendría mal pasarte por aquí ;)
VisualStudio 2013 U. (Instalador+Plantillas+Snippets+Libs+Controles+Tools)
(aunque algunas versiones tienen ya un tiempo y siempre tengo la versión más nueva de cada aplicación, pero bueno, te servirán igualmente)





Citar
le di una aplicación en C# a una persona, y la pudo ejecutar, pero no se le cargaron algunas librerías (System.NET.http entre ellas, creo).

El namespace System.NET.Http solo está disponible a partir de .NetFW 4.5, está información está incluida en uno de los enlaces que te mostré anteriormente:
Networking

The .NET Framework 4.5 provides a new programming interface for HTTP applications. For more information, see the new System.Net.Http and System.Net.Http.Headers namespaces.

Por lo tanto deduzco que tienes .NetFW 4.5 o superior como objetivo en tu proyecto de C#, y el usuario tiene FW 4.0

Saludos.
6268  Programación / .NET (C#, VB.NET, ASP) / Re: eliminar registros con ceros en: 12 Noviembre 2014, 10:17 am
Intenta explicarte de forma precisa... ¿tienes una lista de números y quieres eliminar los números que contengan "0"?

Código
  1.        Dim list As New List(Of Integer) From {0, 1, 10, 100, 2, 3, 4, 5}
  2.        list.RemoveAll(Function(n As Integer) CStr(n).Contains(0))
  3.  
  4.        MsgBox(String.Join(", ", list))

Saludos
6269  Programación / .NET (C#, VB.NET, ASP) / Re: EJECUTAR CMD EN APLICACIÓN .NET en: 11 Noviembre 2014, 19:41 pm
De nada, para eso estamos, de todas formas esto que te expliqué es quizás lo más básico de la programación asíncrona en .Net.

Se me olvidó comentar algo importante para que no te pierdas en el largo código que te mostré (en caso de que te hayas perdido un poco xD), todo ese código es solo una mejora del código que tú publicaste... por si lo quieres usar de esa manera (suscribiéndote a los eventos de la instancia del proceso), pero lo importante del código es lo siguiente, donde llamo a la propiedad .Invokerequired y el método .Invoke desde el subproceso/thread secundario:

Cita de: Eleкtro
Código
  1. ...
  2.        Select Case txtResults.InvokeRequired
  3.  
  4.           Case True
  5.               txtResults.Invoke(Sub() txtResults.AppendText("" & e.Data))
  6.               txtResults.Invoke(Sub() txtResults.AppendText(Environment.NewLine))
  7.  
  8.           Case Else
  9.               txtResults.AppendText(e.Data)
  10.               txtResults.AppendText(Environment.NewLine)
  11.  
  12.       End Select
  13. ...


Control.InvokeRequired Property - MSDN
Control.Invoke(Lambda) Method - MSDN

Saludos
6270  Informática / Software / Re: error virtual box en: 11 Noviembre 2014, 18:46 pm
Citar
More details may be available in 'C:\Documents and Settings\Administrador\VirtualBox VMs\ekisde\Logs\VBoxStartup.log'.

Muéstranos lo que pone en el log.

Aparte de eso, ¿has realizado una simple búsqueda en google por el código de error '0x80004005'?, hay cientos de resultados donde proponen muchas soluciones...

[SOLVED] E_FAIL (0x80004005) / runtime (-102) on Win7 Host
VirtualBox Bugs: Ticket #13187 (new defect)
+
http://lmgtfy.com/?q=vbox+0x80004005

saludos
Páginas: 1 ... 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 [627] 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 ... 1236
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines