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


Tema destacado:


  Mostrar Mensajes
Páginas: 1 ... 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 [642] 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 ... 1254
6411  Programación / .NET (C#, VB.NET, ASP) / Re: Aplicacion de descarga se pinza en: 20 Noviembre 2014, 00:27 am
Gracias por la respuesta elektro lo tendré en cuenta la verdad que con el doenvents se pinza tambien, pasado un rato se pinza, tendré que aprender a usar eso de threads, aunque cuantos deberái crear?

Solo un proceso hijo para que haga la descarga bastaría no? y no se pinzaría verdad?

O necesito varios, ¿qué garantías me dan los threads y cuantos he de usar?

Gracias.

No he visto el código que tienes y dependiendo de la situación/código recomiendo una cosa u otra, pero me hago una idea que debe ser un código bastante "tocho" donde haces peticiones a webs y procesas los source y tal así que creo que lo mejor en tu caso sería que arrastrases al Form un BackgroundWorker (solo uno) y utilices sus eventos para realizar la tarea del Web-Spider en segundo plano, tanto acceder a webs como la descarga.

Formas hay muchas, y te sirve por igual un Thread, Task, o BackgroundWorker, pero veo mucho más apto el BakgroundWorker en tu caso por que debes ir actualizando el estado de las descargas y tal en la UI (o eso pre-supongo sin haber visto el code), y el BakgroundWorkers te facilida esa tarea de "actualización" gracias a los eventos que dispone a los que puedes suscribirte.

¿Garantías?, lo que ocurra en segundo plano se queda en ese segundo plano, quiero decir que la UI (que es el thread principal) no se va a colapsar/colgar/laguear en ningún momento si elaboras bien el código, es decir, sin usar el For en el thread de la UI por que eso es lo que genera el colapso, lo que tengas que hacer hazlo en segundo plano.

Te sugiero leer ejemplos donde usen BakgroundWorkers para aprender su funcionamiento y no cometer errores, ya que no es cosa de 1 día y quizás no te salga como esperas a la primera:
http://lmgtfy.com/?q=codeproject+backgroundworker

PD: Y si estás usando .Net Framework 4.5 te puedes servir también de las "nuevas" declaraciones asíncronas:
Asynchronous Programming with Async and Await

Saludos!
6412  Programación / .NET (C#, VB.NET, ASP) / Re: Aplicacion de descarga se pinza en: 18 Noviembre 2014, 19:12 pm
Application.DoEvents();

En vb6 vale, pero hay mitos y leyendas sobre la instrucción "DoEvents" en .Net, es una solución al problema que tienes pero que acarraerá otro tipo de problemas en segundo plano... por ejemplo el "lag" al que te refieres ya que la instrucción "DoEvents" se procesa cada cierto tiempo dentro del búcle que hiciste, no es nada recomendable usar esa "técnica" ni siquiera como último recurso, más cuando tienes una multitud de alternativas que son las que debes utilizar.

Lo que te ocurre con la aplicación es lo más normal del mundo ya que es single-thread. La duda que tienes es debido a una falta de conocimientos y entendimiento sobre lo que estás haciendo, sobre un concepto muy importante de la proramación;
Debes aprender programación asíncrona, el uso del multi-threading:

BackgroundWorker Class (System.ComponentModel)
Thread Class (System.Threading) - MSDN
Task Class (System.Threading.Tasks) - MSDN


He probado a ponerle Thread.Sleep(10); pero nada sigue igual.

Esa instrucción precisamente debes evitar usarla, ya que sirve para detener la ejecución del thread actual... (es decir para "colgar" la app y dejarla sin respuesta)

En otras palabras, las tareas "intensivas" debes realizarlas en segundo plano (sub-threads) sí o sí para no colapsar/colgar el thread actual, no utilices DoEvents.

Saludos
6413  Programación / .NET (C#, VB.NET, ASP) / Re: EJECUTAR CMD EN APLICACIÓN .NET en: 18 Noviembre 2014, 18:35 pm
se me ocurre si hay alguna manera de que grabe los datos del textbox y por mas que se cierre y vuelva a abrir aparece con esos valores hasta que se cambie.

Hay muchas maneras de hacer eso, lo que más sencillo te resultará es utilizar la infrastructura de My.Settings.

Puedes crear la propiedad desde las opciones del proyecto, y luego acceder a dicha propiedad en tiempo de ejecución para guardar/cargar valores.

Es muy sencillo, pero lee un poco acerca de ello para enterarte:

Managing Application Settings
Using My.Settings in Visual Basic 2005
How to: Change User Settings in Visual Basic

Saludos
6414  Programación / Programación General / MOVIDO: Realizar una interfaz [Python] en: 18 Noviembre 2014, 00:52 am
El tema ha sido movido a Scripting.

http://foro.elhacker.net/index.php?topic=424866.0
6415  Programación / Scripting / Re: Realizar una interfaz [Python] en: 18 Noviembre 2014, 00:51 am
Lo que me interesa es que no salgan los 3 botones de minimizar, pantalla completa y la x de cerrar.

Para TKinter:
Código
  1. self.dlgWin.overrideredirect(1)
will remove all of the buttons (make a borderless window). Is that what you're looking for?

O...:
Código
  1. import Tkinter as tk
  2.  
  3. root= tk.Tk()
  4.  
  5. root.title("wm min/max")
  6.  
  7. # this removes the maximize button
  8. root.resizable(0,0)
  9.  
  10. # # if on MS Windows, this might do the trick,
  11. # # but I wouldn't know:
  12. # root.attributes(toolwindow=1)
  13.  
  14. # # for no window manager decorations at all:
  15. # root.overrideredirect(1)
  16. # # useful for something like a splash screen
  17.  
  18. root.mainloop()


PD: Las preguntas sobre lenguajes de Scripting van en su correspondiente sección...

Saludos!
6416  Programación / Scripting / Re: (Ayuda,) Cambiar asociaciones de JPG o PNG con un BAT en: 17 Noviembre 2014, 23:12 pm
Si, es lo que buscas, yo lo he testeado tanto en win7 x64 (en su día) y ahora en Win8.1 x64, en mi caso me ha funcionado.

De todas formas puedes hacerlo de forma manual y automatizar la tarea en un script, no es nada dificil.


Prueba a hacerlo de esta manera:

1) Utiliza el comando ASSOC de windows (no mi Assoc.bat) de esta manera:
Código:
assoc | find /I ".png"

Te saldrá la extensión, y a la derecha la clave de registro asociada, algo así:
Código:
.png=png.irfanview_file

Nota: También puedes ver la clave asociada en el valor por defecto de la clave de la extension:
Código:
HKEY_CLASSES_ROOT\.png


2) Abre el regedit, y ve a la ruta de la clave asociada:
Código:
HKEY_CLASSES_ROOT\{CLAVE ASOCIADA}\Shell\Open\Command

Ejemplo:
Código:
HKEY_CLASSES_ROOT\png.irfanview_file\Shell\Open\Command

Nota: Si la clave ...\Shell\Open\Command no existe, creala.


3) Modifica el valor por defecto de la clave "Command" por la aplicación con la que quieres abrir esa extensión.

Ejemplo:
Código:
"C:\Windows\System32\mspaint.exe" "%1" 


¿Cómo automatizar la tarea?, con un script de registro, por ejemplo:

Código
  1. Windows Registry Editor Version 5.00
  2.  
  3. [HKEY_CLASSES_ROOT\.png]
  4. @="CustomAssociation.png"
  5.  
  6. [HKEY_CLASSES_ROOT\CustomAssociation.png\Shell\Open\Command]
  7. @="\"C:\\Windows\\System32\\mspaint.exe\" \"%1\""
  8.  
  9. [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\OpenWithProgids]
  10. "CustomAssociation.png"=hex(0):

O con Batch:
Código
  1. :: Converted with Reg2Bat by Elektro
  2.  
  3. @Echo OFF
  4. REG ADD "HKCR\.png"                                     /V "" /D "CustomAssociation.png"                       /F
  5. REG ADD "HKCR\CustomAssociation.png\Shell\Open\Command" /V "" /D "\"C:\Windows\System32\mspaint.exe\" \"%%1\"" /F
  6. Pause&Exit


Si aun así eso no te sirve, puedes intentar buscar otra solución en Google, u otras herramientas más profesionales y que te permitan automatizar la tarea.


Saludos
6417  Programación / Scripting / Re: (Ayuda,) Cambiar asociaciones de JPG o PNG con un BAT en: 17 Noviembre 2014, 21:38 pm
Asociacion de archivo no encontrada para la extension -a .png

prueba a utilizar el parámetro "-c" en lugar de "-a", para forzar la creación de la asociación.

saludos
6418  Programación / Scripting / Re: (Ayuda,) Cambiar asociaciones de JPG o PNG con un BAT en: 17 Noviembre 2014, 20:16 pm
perdona, pero me he perdido un poco :xD ¿de donde sale ese executable?

Ahora veo que me confundí en mi comentario anterior y escribí la extensión "ASSOC7.exe" en lugar de "ASSOC7.bat", quizás hayas mal interpretado eso, perdon, es la costumbre.

Lo siento, hacia mucho que no lo utilizaba, reectifico y te explico de nuevo:

1) Copias el código en un archivo con extensión ".bat", con codificación ANSI (es la codificación por defecto si creas y guardas el archivo desde el Notepad)
2) Llamas al archivo "ASSOC.bat"
3) Ejecutas el siguiente comando (especificando la ruta completa del programa en el segundo parámetro):
Código:
ASSOC.bat -a ".png" "C:\Windows\System32\mspaint.exe"

Debería salirte algo parecido a esto (dependiendo de varios factores):

Código:
png.irfanview_file="C:\Windows\System32\mspaint.exe" "%1"

CORRECTO

Ahora si, ¿te ha funcionado?

Saludos
6419  Programación / Programación General / Re: [EHN-Dev 2014] - Hilo de discusión / comentarios / dudas en: 17 Noviembre 2014, 20:05 pm
¡Ya ha finalizado el concurso!

Y así han quedado los puestos:


Hot Corners, por Eleкtro, ¡con 11 votos!


Emuleightor, por Christian010, ¡con 5 votos!


Masika, por El Benjo, ¡con 4 votos!

Felicidades a todos los ganadores, gracias a todos por participar en este concurso, y cómo no a los miembros del staff y otros que han hecho posible este concurso un año más...

PD: el-brujo contactará con ustedes para el tema de los envios (los premios), porfavor tengan algo de paciencia.

Saludos!
6420  Programación / Scripting / Re: Tomar variables desde txt usando grupos de palabras en: 17 Noviembre 2014, 17:43 pm
Batch es una herramienta simple, no es un lenguaje capacitado para procesar un String con las condiciones que precisas, se podría hacer, pero habría que invertir bastante tiempo en el desarrollo y elaboración del algoritmo para finálmente obtener un código muy engorroso e ineficiente a diferencia de cómo se podría llevar a cabo en un lenguaje de verdad.

Podrías partir la cadena según la cantidad de espacios entre palabra y palabra, pero dijiste algo de la longitud y no se si será respecto a los espacios, así que de todas formas te sugiero una solución más global, utilizar expresiones regulares (RegEx) ya que supongo que la fecha siempre tendrá el mismo formato: 19xx o 20xx y te puedes servir en eso, aunque para esto debes recurrir a cualquier otro lenguaje que soporte RegEx (VisualBasicScripting, por ejemplo, que está integrado en cualquier Windows, aunque es otro lenguaje simple e igual de inproductivo que Batch).

Esta podría ser una expresión regular que cumpliese con tus espectativas:
Código:
(^\w+)\s+([\w\.\,\;\-\s+]+?)\s+(\d{4})\s+(\w+$)

El interior de cada paréntesis representa un grupo, cada grupo captura una palabra/token de la frase, y hay 4 grupos (4 pares de paréntesis) ya que necesitas capturar 4 tokens.


Regular expression - Wikipedia, the free encyclopedia



Te muestro un ejemplo de utilización de esa expresión regular en VisualBasic.Net, tomatelo como un pseudo-code para implementarlo en el lenguaje que prefieras, ya que la mecánica de RegEx es casi idéntica en el resto de lenguajes (no su utilización, pero si el tema de la sintaxis y los grupos):

Código
  1. Imports System.Text
  2.  
  3. Public Class Form1
  4.  
  5. #Region " Regular expression "
  6.  
  7.    ' La cadena de referencia.
  8.    ReadOnly str As String = "09B321       Alberti Ramirez, Juan    1988    CASADO"
  9.  
  10.    ' Las partes de la expresion regular.
  11.    ReadOnly regExToken1 As String = "^\w+" ' "09B321"
  12.    ReadOnly regExToken2 As String = "[\w\.\,\;\-\s+]+?" ' "Alberti Ramirez, Juan"
  13.    ReadOnly regExToken3 As String = "\d{4}" ' "1988"
  14.    ReadOnly regExToken4 As String = "\w+$" ' "CASADO"
  15.  
  16.    ' La expresión regular completa.
  17.    ' (^\w+)\s+([\w\.\,\;\-\s+]+?)\s+(\d{4})\s+(\w+$)
  18.    ReadOnly fullEx = String.Format("({0})\s+({1})\s+({2})\s+({3})",
  19.                                    regExToken1, regExToken2, regExToken3, regExToken4)
  20.  
  21.    ' La instancia del motor RegEx.
  22.    ReadOnly regEx As New RegularExpressions.Regex(fullEx, RegularExpressions.RegexOptions.Singleline)
  23.  
  24.    ' Las capturas de cada token/grupo de la expresión regular.
  25.    ReadOnly regExGroup1 As RegularExpressions.Group = regEx.Match(str).Groups(1)
  26.    ReadOnly regExGroup2 As RegularExpressions.Group = regEx.Match(str).Groups(2)
  27.    ReadOnly regExGroup3 As RegularExpressions.Group = regEx.Match(str).Groups(3)
  28.    ReadOnly regExGroup4 As RegularExpressions.Group = regEx.Match(str).Groups(4)
  29.  
  30. #End Region
  31.  
  32.    Private Shadows Sub Load() Handles MyBase.Load
  33.  
  34.        Dim sb As New StringBuilder
  35.        With sb
  36.            .AppendLine(String.Format("Token 1: '{0}'", regExGroup1.Value))
  37.            .AppendLine(String.Format("Token 2: '{0}'", regExGroup2.Value))
  38.            .AppendLine(String.Format("Token 3: '{0}'", regExGroup3.Value))
  39.            .AppendLine(String.Format("Token 4: '{0}'", regExGroup4.Value))
  40.        End With
  41.  
  42.        MessageBox.Show(sb.ToString, "Capturas RegEx", MessageBoxButtons.OK, MessageBoxIcon.Information)
  43.  
  44.    End Sub
  45.  
  46. End Class




Saludos.
Páginas: 1 ... 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 [642] 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 ... 1254
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines