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 - Krähne

#31
Cita de: Segurida en  3 Mayo 2011, 09:22 AM
Hola, necesito saber si se con Visual Basic 2008 Express, se pueden cerrar TODOS los procesos del ordenador

Aunque el tema esté resuelto te respondo la primera pregunta.

NO, sencillamente no puedes acabar con todos los procesos.

System, Idle, winlogon.exe, entre otros procesos del sistema críticos y protegidos jamás los podrás cerrar y si a la fuerza requieres (Con drivers) el sistema se te volcara y acabarás con un BSOD, lo mismo podría pasar con procesos como el de los antivirus.

Te recomiendo que uses un "try catch" para esto.
#32
¡A leer!, luego te comento...

Gracias ;).
#33
Cita de: Segurida en 14 Mayo 2011, 19:38 PM
lo estoy probando en xp, que da menos problemas que en vista/7, pero aun asi, ¿no se puede desde código? si la aplicación la pongo al inicio de windows no se abriría como administrador,  por eso necesito por código...
saludos.

Trata de elevar tus privilegios, con AdjustTokenPrivileges.

Aquí un ejemplo.
#34
Cita de: Mardorx en 20 Mayo 2011, 08:43 AM
Podrías llamar a soporte técnico mientras tanto para que te den alguna solución vía telefónica, acá encontré una posible solución de algún usuario que tuvo el mismo porblema con un LCD de 19"

Si no funciona prueba a desconectarlo un par de horas y encenderlo de nuevo o finalmente pedir garantía.

Saludos.

EDITO: También puedes probar presionando el botón INPUT y seleccionar la opción correspondiente a tv o cable de vídeo depende de lo que estés usando

Que va, no encontré ningún botón que hiciera algo, nada hacía efecto en el tv.

Al final decidí por llevarlo a garantía, y según ellos, resultó que no tenía software el tv.

Por consiguiente, recibí otro y problema solventado :).

Gracias por contestar.
#35
Hola, tengo un gran problema con un TV que acabo de comprar, es un LG 26LD310 y lo armé según el manual.

Todo de maravilla hasta el momento que le conecté el cable de alimentación a la toma en la pared. ¡Se encendió solo!. Ni si quiera esperó que lo encendiera manualmente; Y esto no es todo... con la encendida automática se trajo una pantalla en blanco que me da las siguientes letras:

Power Only Version
Main SW 3.02

Y se mueve de borde a borde en la pantalla... luego de buscar por mucho tiempo en google, encontré que en el control remoto de la tv, supuestamente existía un botón que se llama "Exit" o "Return" que al presionarlo me sacaría del error con tan sólo apagar y prender nuevamente la tv.

El problema es que el control no tiene tal botón... y no veo otras opciones realmente para solucionar mi problema, tengo la facturas para llevarlo como garantía, ya que... no van ni dos días que lo compré. Entonces antes de garantía vine a preguntar si existía otra manera de solucionar esto.

Espero si a alguien le ha pasado, me de una mano con esto, gracias y ¡Hasta luego!.

Gruß.

P.D.: Aquí les dejo un link del soporte técnico que LG da.
#36
Cita de: seba123neo en 19 Mayo 2011, 04:04 AM
ni te orientes con el de visual basic 6, busca ejemplos para C# o visual basic .NET que hay varios de esto en internet, yo use un ejemplo que hay por ahi que utiliza la interface IComparer que compara lo que sea, te ordena correctamente cualquier tipo de datos, string, numero, fechas..etc.

Make a ListView control sort using the column you click in VB .NET

pero hay muchos mas en internet, BUSCA....

saludos.

Pues, porque estoy harto de buscar es que vine a preguntar.

Y sí, así es, iComparer es de lo mejor que hay para hacer ordenes y comparaciones, el problema es que ignoro su uso, y el soporte que da microsoft sencillamente APESTA.

De todos modos gracias por el ejemplo, le echaré un vistaso.
#37
Cita de: TwisteD420 en 18 Mayo 2011, 03:34 AMPor lo que veo usaste un bucle repeat, el cual mientras lo que se evalua sea falso seguira dando vueltas hasta que ingrese los datos correctos.
Cuando estos sean correctos se sale del bucle y ahi comienza el codigo para guardarlo.

No, no... de hecho te equivocas, el código lo único que hace es comprobar que el usuario haya aceptado los datos si están correctos o no, en caso de no estarlo repetir el proceso. De todos modos he modificado el código y lo he compactado un poco más, y en vez de usar un do while, uso goto, if y switch. Modificalo a tus gustos, espero te sirva.

Código (csharp) [Seleccionar]
using System;

namespace AplicacionDeRegistro
{
   class Inscribir
   {
       static void Main(string[] args)
       {
           string ANombre, Respuesta; //Para las cadenas de texto.
           UInt64 ATelefono; //Para números más grandes sin signo (Podrías usar double, etc...) depende de lo que necesites hacer o alojar.
           uint AEdad; //Para números sin signo más pequeños.

       Inicio:
           {
               Respuesta = string.Empty; //Respuesta = "";
               ANombre = string.Empty; //NombreA = "";
               AEdad = 0; //No hay otra manera de restaurar su valor
               ATelefono = 0; //No hay otra manera de restaurar su valor

               Console.Clear();
               Console.ForegroundColor = ConsoleColor.White;
               Console.Title = "Inscripcion";
               Console.WriteLine("====================================\nBienvenido al Registo de Inscripción\n====================================\nFavor ingresar los datos que le sean solicitados");
           }

       InsercionNombre:
           {
               Console.ForegroundColor = ConsoleColor.Green;
               Console.Write("\nIngrese su nombre: ");
               Console.ForegroundColor = ConsoleColor.Yellow;
               ANombre = Console.ReadLine();
           }

           if (ANombre == string.Empty) //NombreA == ""
               goto InsercionNombre;

       InsercionEdad:
           {
               Console.ForegroundColor = ConsoleColor.Green;
               Console.Write("Ingrese su edad: ");
               Console.ForegroundColor = ConsoleColor.Yellow;
           }

           if (!uint.TryParse(Console.ReadLine(), out AEdad)) //Si no es un valor convertible/parseable a entero sin signo...
               goto InsercionEdad;

       InsercionTelefono:
           {
               Console.ForegroundColor = ConsoleColor.Green;
               Console.Write("Ingrese el numero de teléfono domiciliar: ");
               Console.ForegroundColor = ConsoleColor.Yellow;
           }

           if (!UInt64.TryParse(Console.ReadLine(), out ATelefono)) //Si no es un valor convertible/parseable a entero sin signo...
               goto InsercionTelefono;

       RevisarDatos:
           {
               Console.Clear();
               Console.ForegroundColor = ConsoleColor.Cyan;
               Console.Write("¿Son correctos estos datos?\n\nAlumno: {0}\nEdad: {1}\nTeléfono: {2}\n\n(S/N): ", ANombre, AEdad, ATelefono);
           }

           switch (Console.ReadLine().ToUpper()) //Elevamos a mayúsculas lo acabado de leer
           {
               case "S": //Si aceptó...
                   goto Registro; //Procedemos a registrar los datos

               case "N": //Si no aceptó...
                   goto Inicio; //Iniciamos el proceso nuevamente

               default: //En caso que lo leído no sea ni S o N...
                   goto RevisarDatos; //Revisamos y preguntamos por los datos nuevamente
           }

       Registro:
           {
               Console.Write("\nSe están registrando sus datos, por favor espere...");
               Console.ReadLine();
               //Haz lo que quieras en este paso... como decías arriba, puedes registrarlos.
           }
       }
   }
}


Gruß.
#38
Cita de: TwisteD420 en 18 Mayo 2011, 03:34 AM

Y porque no se puede realizar esto?:

Código (csharp) [Seleccionar]

EdadA = int.Empty;



Una imagen vale más que mil palabras:



...

En dado caso, ponle como valor: 0 y quedaría igual.

Gruß.
#39
Hola... no haré mucha presentación, iré al grano: (Ojo, ya realicé esta misma pregunta en la MSDN, a ver quién me da una mano antes :xD).

Tengo un ListView con X items, cada item contiene X información, el ListView tiene 4 columnas y estas son:

Nombre | Tamaño | Estado | Atributos

En el cual cada columna guarda la información referente a un archivo de texto o .ini seleccionado.

El problema reside al momento de querer ordenar los items de cada columna al hacer click en ellos, y pasa lo siguiente:

Al momento de hacer click en cualquier columna excepto en la de "Tamaño", los items cogen su orden alfabético de manera correcta, pero... si lo hago con la columna "Tamaño" tan sólo se invierte su orden, entonces lo que quisiera es que, al momento de darle click, se ordenara según su peso.

El subitem en esa columna contendrá información en este formato: ##.## Bytes, ##.## KB, ##.## MB y ##.## GB. Donde # equivale al tamaño del item.

La manera para obtener el tamaño de cada item, se hace con esta función:

Código (csharp) [Seleccionar]
       internal static string GetDllSize(long Bytes)
       {
           const int Scale = 1024;
           string[] Sizes = new string[] { "GB", "MB", "KB", "Bytes" };
           long Max = (long)Math.Pow(Scale, Sizes.Length - 1);

           foreach (string Order in Sizes)
           {
               if (Bytes > Max)
                   return string.Format("{0:##.##} {1}", decimal.Divide(Bytes, Max), Order);
               Max /= Scale;
           }
           return "0 Bytes";
       }


Entonces, como decía arriba, quisiera saber cómo ordenar estos items al hacer click en la columna, (eh si... ya sé que con el evento column_click), pues... como dije anteriormente ya lo he realizado sin problemas con los demás datos, que tan sólo son strings.

Por si sirve de algo, encontré un código en Visual Basic 6 (El cuál aún no me he dispuesto a convertir a C# por temor a perder tiempo fracasando en su conversión), que ordena sin problemas números, fechas y cadenas de texto, de éste me quiero guiar, pero no sé si haya una manera más eficiente en C#.

El código es el siguiente:

Código (vb) [Seleccionar]
Private Declare Function LockWindowUpdate Lib "user32" _
       (ByVal hWndLock As Long) As Long

Private Declare Function GetTickCount Lib "kernel32" () As Long

Private Sub Form_Load()
   With ListView1
   
       ' Add three columns to the list - one for each data type.
       ' Note that the data type is set in the column header's
       ' tag in each case
   
       .ColumnHeaders.Add(, , "String").Tag = "STRING"
       .ColumnHeaders.Add(, , "Number").Tag = "NUMBER"
       .ColumnHeaders.Add(, , "Date").Tag = "DATE"
       
       ' Set the column alignment - has no bearing on the sorts.
       
       .ColumnHeaders(1).Alignment = lvwColumnLeft
       .ColumnHeaders(2).Alignment = lvwColumnRight
       .ColumnHeaders(3).Alignment = lvwColumnCenter
       
       ' Populate the list with data
       
       Dim l As Long
       Dim dblRnd As Double
       Dim dteRnd As Date
       With .ListItems
           For l = 1 To 1000
               With .Add(, , "ListItem " & Format(l, "0000"))
                   dblRnd = (Rnd() * 10000) - 5000
                   dteRnd = (Rnd() * 1000) + Date
                   .ListSubItems.Add , , Format(dblRnd, "0.00")
                   .ListSubItems.Add , , Format(dteRnd, _
                                                  "dd/mm/yyyy")
               End With
           Next l
       End With
       
   End With
End Sub

Private Sub ListView1_ColumnClick(ByVal ColumnHeader As _
                                   MSComctlLib.ColumnHeader)

   On Error Resume Next
   
   ' Record the starting CPU time (milliseconds since boot-up)
   
   Dim lngStart As Long
   lngStart = GetTickCount
   
   ' Commence sorting
   
   With ListView1
   
       ' Display the hourglass cursor whilst sorting
       
       Dim lngCursor As Long
       lngCursor = .MousePointer
       .MousePointer = vbHourglass
       
       ' Prevent the ListView control from updating on screen -
       ' this is to hide the changes being made to the listitems
       ' and also to speed up the sort
       
       LockWindowUpdate .hWnd
       
       ' Check the data type of the column being sorted,
       ' and act accordingly
       
       Dim l As Long
       Dim strFormat As String
       Dim strData() As String
       
       Dim lngIndex As Long
       lngIndex = ColumnHeader.Index - 1
   
       Select Case UCase$(ColumnHeader.Tag)
       Case "DATE"
       
           ' Sort by date.
           
           strFormat = "YYYYMMDDHhNnSs"
       
           ' Loop through the values in this column. Re-format
           ' the dates so as they can be sorted alphabetically,
           ' having already stored their visible values in the
           ' tag, along with the tag's original value
       
           With .ListItems
               If (lngIndex > 0) Then
                   For l = 1 To .Count
                       With .Item(l).ListSubItems(lngIndex)
                           .Tag = .Text & Chr$(0) & .Tag
                           If IsDate(.Text) Then
                               .Text = Format(CDate(.Text), _
                                                   strFormat)
                           Else
                               .Text = ""
                           End If
                       End With
                   Next l
               Else
                   For l = 1 To .Count
                       With .Item(l)
                           .Tag = .Text & Chr$(0) & .Tag
                           If IsDate(.Text) Then
                               .Text = Format(CDate(.Text), _
                                                   strFormat)
                           Else
                               .Text = ""
                           End If
                       End With
                   Next l
               End If
           End With
           
           ' Sort the list alphabetically by this column
           
           .SortOrder = (.SortOrder + 1) Mod 2
           .SortKey = ColumnHeader.Index - 1
           .Sorted = True
           
           ' Restore the previous values to the 'cells' in this
           ' column of the list from the tags, and also restore
           ' the tags to their original values
           
           With .ListItems
               If (lngIndex > 0) Then
                   For l = 1 To .Count
                       With .Item(l).ListSubItems(lngIndex)
                           strData = Split(.Tag, Chr$(0))
                           .Text = strData(0)
                           .Tag = strData(1)
                       End With
                   Next l
               Else
                   For l = 1 To .Count
                       With .Item(l)
                           strData = Split(.Tag, Chr$(0))
                           .Text = strData(0)
                           .Tag = strData(1)
                       End With
                   Next l
               End If
           End With
           
       Case "NUMBER"
       
           ' Sort Numerically
       
           strFormat = String(30, "0") & "." & String(30, "0")
       
           ' Loop through the values in this column. Re-format the values so as they
           ' can be sorted alphabetically, having already stored their visible
           ' values in the tag, along with the tag's original value
       
           With .ListItems
               If (lngIndex > 0) Then
                   For l = 1 To .Count
                       With .Item(l).ListSubItems(lngIndex)
                           .Tag = .Text & Chr$(0) & .Tag
                           If IsNumeric(.Text) Then
                               If CDbl(.Text) >= 0 Then
                                   .Text = Format(CDbl(.Text), _
                                       strFormat)
                               Else
                                   .Text = "&" & InvNumber( _
                                       Format(0 - CDbl(.Text), _
                                       strFormat))
                               End If
                           Else
                               .Text = ""
                           End If
                       End With
                   Next l
               Else
                   For l = 1 To .Count
                       With .Item(l)
                           .Tag = .Text & Chr$(0) & .Tag
                           If IsNumeric(.Text) Then
                               If CDbl(.Text) >= 0 Then
                                   .Text = Format(CDbl(.Text), _
                                       strFormat)
                               Else
                                   .Text = "&" & InvNumber( _
                                       Format(0 - CDbl(.Text), _
                                       strFormat))
                               End If
                           Else
                               .Text = ""
                           End If
                       End With
                   Next l
               End If
           End With
           
           ' Sort the list alphabetically by this column
           
           .SortOrder = (.SortOrder + 1) Mod 2
           .SortKey = ColumnHeader.Index - 1
           .Sorted = True
           
           ' Restore the previous values to the 'cells' in this
           ' column of the list from the tags, and also restore
           ' the tags to their original values
           
           With .ListItems
               If (lngIndex > 0) Then
                   For l = 1 To .Count
                       With .Item(l).ListSubItems(lngIndex)
                           strData = Split(.Tag, Chr$(0))
                           .Text = strData(0)
                           .Tag = strData(1)
                       End With
                   Next l
               Else
                   For l = 1 To .Count
                       With .Item(l)
                           strData = Split(.Tag, Chr$(0))
                           .Text = strData(0)
                           .Tag = strData(1)
                       End With
                   Next l
               End If
           End With
       
       Case Else   ' Assume sort by string
           
           ' Sort alphabetically. This is the only sort provided
           ' by the MS ListView control (at this time), and as
           ' such we don't really need to do much here
       
           .SortOrder = (.SortOrder + 1) Mod 2
           .SortKey = ColumnHeader.Index - 1
           .Sorted = True
           
       End Select
   
       ' Unlock the list window so that the OCX can update it
       
       LockWindowUpdate 0&
       
       ' Restore the previous cursor
       
       .MousePointer = lngCursor
   
   End With
   
   ' Report time elapsed, in milliseconds
   
   MsgBox "Time Elapsed = " & GetTickCount - lngStart & "ms"
   
End Sub

'****************************************************************
' InvNumber
' Function used to enable negative numbers to be sorted
' alphabetically by switching the characters
'----------------------------------------------------------------

Private Function InvNumber(ByVal Number As String) As String
   Static i As Integer
   For i = 1 To Len(Number)
       Select Case Mid$(Number, i, 1)
       Case "-": Mid$(Number, i, 1) = " "
       Case "0": Mid$(Number, i, 1) = "9"
       Case "1": Mid$(Number, i, 1) = "8"
       Case "2": Mid$(Number, i, 1) = "7"
       Case "3": Mid$(Number, i, 1) = "6"
       Case "4": Mid$(Number, i, 1) = "5"
       Case "5": Mid$(Number, i, 1) = "4"
       Case "6": Mid$(Number, i, 1) = "3"
       Case "7": Mid$(Number, i, 1) = "2"
       Case "8": Mid$(Number, i, 1) = "1"
       Case "9": Mid$(Number, i, 1) = "0"
       End Select
   Next
   InvNumber = Number
End Function


Pues bien, también he leído éste artículo de la msdn, pero... nunca había manejado el tema de iComparer, por tal ando un poco perdido en él.

Si alguien pudiera echarme una mano, o al menos darme información sobre iComparer (un pequeño manual, o algo que me pueda servir para guiarme) se lo agradecería.

Gruß.
#40
@pitoloko: Master!, ¡Gracias!, era justo lo que necesitaba. ;-)

Tema resuelto.