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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Temas
Páginas: [1] 2 3
1  Programación / .NET (C#, VB.NET, ASP) / Crear precarga independiente del hilo principal. en: 14 Junio 2011, 16:18 pm
Hola amigos, todo inicia con éste mensaje de error: Controls created on one thread cannot be parented to a control on a different thread. Muchos ya sabrán la forma de solucionarlo, sin embargo, la solución que busco es una en particular, les explico a continuación.

¿Cuando ocurre éste error? Si creamos un control con un hilo y posteriormente queremos agregar a éste control un nuevo control desde otro hilo. En otras palabras, si por ejemplo, queremos agregar al formulario principal de nuestra aplicación un panel y lo queremos hacer desde otro hilo de ejecución que no sea el principal, entonces, nos lanzará el error visto inicialmente.

¿Formas de solucionarlo?
Una de las formas que he visto para solucionar este problema es hacer uso de un delegado controlado por el hilo principal que se encargue de agregar los nuevos controles.

No tengo nada en contra de esta solución, sin embargo, no es funcional para lo que estoy desarrollando, les explico. Lo que quiero hacer es mostrar una precarga, la cual esta elaborada con un conjunto de controles e imágenes agregadas a éstos, el asunto está en que si agrego la precarga al formulario principal por el hilo principal, cuando el hilo principal esté ocupado realizando alguna labor, la precarga, específicamente el gif de ésta, se detendría de forma intermitente, debido a que el hilo principal que la agregó se encuentra ocupado en otras cosas.. de aquí surge la necesidad de crear un nuevo hilo que se encargue de controlar la precarga, pero al intentar agregar la precarga al formulario principal y me daría el error antes mencionado.

Esta es la razón por la cual usar delegados no me es funcional, ya que se estaría agregando la precarga con el mismo hilo que se va a usar para realizar algunas tareas.

Podrían pensar lo siguientes... si el problema está en que cuando el hilo principal se ocupa se detiene la precarga, entonces, con usar otro hilo para realizar las labores pesadas sería suficiente, sin embargo, no podría, debido a que muchas de estas labores están relacionadas con los controles del formulario principal, por lo que sólo el hilo principal puede acceder a estos, en especial a un control tipo WebBrowser, que al intentar acceder desde otro hilo arroja el siguiente error: Object reference not set to an instance of an object. (esto también se solucionaría usando delegados, pero no me es funcional como les he explicado anteriormente).

Entonces, la pregunta sería. ¿Como puedo crear una precarga independiente del hilo principal y que forme parte del formulario principal?.. digo esto último, que forme parte del formulario principal, porque no me serviría una precarga en un formulario aparte ¿Por qué? principalmente porque las precargas serán múltiples y saldrán en diferentes partes de la aplicación según lo que se esté cargando, apareciendo en diferentes posiciones según sea el caso.

Haciendo uso de CheckForIllegalCrossThreadCalls no solucionaría el problema.

Muchas gracias por su atención, espero que lleguemos a una solución.
2  Programación / .NET (C#, VB.NET, ASP) / Convertir dll de .Net Framework 4.0 a 2.0 en: 24 Mayo 2011, 01:10 am
Hola amigos he programado una librería en .Net Framework 4.0 pero necesito que funcion en la versión 2.0.. No la he programado directamente en 2.0 porque una clase requiere heredar de System.Dynamic y esa clase está en System.Core de la version 4.0.  Lo que se me ocurre es convertir la dll que genera el 4.0 a 2.0 a menos que se pueda encontrar otra solución.

Gracias por su ayuda.
3  Programación / .NET (C#, VB.NET, ASP) / Encpsular Objeto para ejecutar por hilo principal en: 21 Mayo 2011, 18:15 pm
hola a todos, el problema que tengo es el siguiente,  tengo una función (funcion1) que recibe varios parámetros entre ellos un WebBrowser (wb), y quiero que la tarea que vaya a realizar esta función sea en paralelo, entonces, creo un nuevo hilo (hilo2) para ese objetivo, el problema viene cuando hilo2 intenta utilizar el wb, estoy seguro que la razón de ésto es porque el wb es un objeto creado por el hilo principal (hilo1) y no puede ser utilizado por hilos hijos (algo que no permite vb.net), entonces, lo que quiero hacer es encapsular el wb en un objeto de tal forma que cuando el hilo2 intente acceder a éste, se invoque al hilo1 para que éste se encargue de gestionar la tarea.

Una solución es que cada vez que vaya a utilizar el wb invoque a un delegado y realice la tarea con el wb por medio del hilo1, pero entonces, en cada lugar donde quiera utilizar el wb debería invocar al delegado.. esta solución la he probado y funciona correctamente, el asunto está en que no es factible, debido a que las funciones que utilizan el wb ya existen y son muchas y gran cantidad de esta son privadas y no tengo acceso a su código fuente, por eso he pensado en encapsular el wb dentro de otro objeto para que cuando se quiera acceder a este se ejecute el delegado que les menciono y éste se encargue de acceder a las propiedades que se estén requiriendo.

También he pensado que si pudiera sobreescribir todos los métodos de la clase WebBrowser y en el objeto wb cada vez que se intente acceder a algún método o campo lo hiciera a través de estos métodos sobreescritos, entonces, por medio del delegado llamaría a los métodos originales, el asunto está en que el objeto wb tiene una infinidad de métodos y como haría esto de forma dinámica.. esto es otra idea pero no se si sea factible.

Si tienen alguna otra idea sería bueno conocerlas.. gracias por su ayuda.

Saludos
4  Programación / .NET (C#, VB.NET, ASP) / Usar dll de .Net Reflector en nuestra aplicación. en: 2 Mayo 2011, 20:22 pm
Hola a todos, me gustaría saber si cuentan con algún manual o información sobre las dll que usa .Net Reflector para decompilar y pasar el código de un lenguaje a otro, es que estoy interesado en hacer uso de este en mi propia aplicación para ver los diferentes códigos en C# o Vb.net, según la necesidad.

Tendrán alguna idea de donde puedo conseguir información al respecto. Gracias.
5  Programación / Programación Visual Basic / Visualizar codigo VML de un documento de Word en: 13 Marzo 2011, 22:49 pm
Hola a todos, lo que quiero hacer es visualizar el código VML de un documento de word. Conocen de alguna función que puede ejecutar en un macro para que me retorne el código fuente de la pagina y poder extraer el código vml que me interesa.

Si guardo el documento como web y veo el html que genera no guarda el código vml, si no, transforma los gráficos a imágenes y eso es lo que muestra.

Saludos.
6  Programación / .NET (C#, VB.NET, ASP) / Concurrencia sobre dll externa en: 22 Febrero 2011, 05:33 am
Hola a todos,

Les explico lo que quiero hacer, estoy tratando de modificar el comportamiento de una aplicación para que ésta realice sus funciones de forma concurrente. Esta aplicación sirve para programar soluciones híbridas donde se combina la programación web con la programación de aplicaciones de escritorio, es como una especie de navegador web, que permite que programen sus funciones básicas.

Les explico un poco su funcionamiento para que puedan ayudarme en lo que quiero hacer. Esta aplicación esta compuesta de un WebBrowser en el cual se muestra la solución que se desarrolle, su comportamiento es similar al de un sitio web, hasta el momento que esta se comunica con código de vb.net, c#, etc. por ejemplo, si se presiona en un botón y éste llama a una función desarrollada en vb.net, no se puede presionar en otro enlace de la web porque el hilo principal esta ocupado, entonces, para evitar esto lo que hice fue que al pisar en algún botón, se crea un nuevo hilo para que este se encargue de realizar la tarea, todo funciona muy bien, sin embargo, cuando empleo las funciones que trae la aplicación para crear gráficas, me permite hacerlo varias veces y después no funciona correctamente. Lo que he pensado es que tal vez los controles empleados para crear las gráficas fueron inicializados por el hilo principal y cuando se intentan utilizar por otros hilos da problema, lo extraño es que funciona 100% si se ejecuta con el hilo principal de la aplicación, cosa que no quiero hacer porque la creación de estas gráficas dura cierto tiempo y todo quedaría en espera que se libere el hilo.

No se si exista alguna manera para ejecutar funciones almacenadas en dll y que ésta piense de alguna manera que el hilo que la este ejecutando fue el mismo que la inicializó.  O dividir el hilo principal en sub procesos para que realicen tareas diversas concurrentemente.

Bueno cualquier idea es bienvenida, gracias por su ayuda.
7  Programación / .NET (C#, VB.NET, ASP) / Mostrar los atributos de una clase en vb.net en: 9 Diciembre 2010, 05:54 am
Hola a todos, les explico lo que quiero hacer, estoy programando en vb.net usando una plataforma desarrollada por la empresa donde laboro, es algo similar a visual studio, pero menos avanzado, lo que ocurre es que tiene muchas restricciones, por ejemplo, si quieres crear una funcion, te da la opción para crearla y entonces el la introduce en la clase que corresponde y la ejecuta segun lo que se le indique, pero quiero programar algo donde necesito saber el contenido de esta clase donde se coloca la función, entonces, me pregunto, como puedo sabes los campos, funciones o procedimientos que esta clase posee desde una función que pertenezca a esta clase..

Es un poco complicado explicarlo, pero en sintesis lo que quiero hacer es conocer todas las variables que tiene una clase y sus funciones, apartir de una funcion de esta, por ejemplo,

Se tiene la siguiente clase

Código
  1. Class MiClase
  2.  Dim var1 as String
  3.  Dim var2 as String
  4.  
  5.  Function func1() as String
  6.    ...
  7.  end Function
  8.  
  9.  Function LeerContenido() as String
  10.     'Esta es la funcion que quiero que lea el contenido de esta clase, que por
  11.     'ejemplo me diga que la clase tiene las variables, var1 y var2 y la funcion func1
  12.  end Function
  13. end Class

Nota de D4N93R: Recuerda utilizar Geshi en tus posts con código!

Eso es lo que quiero hacer, esto es debido a que existen variables globales de la aplicacion que no tengo conocimiento de sus nombres y de saberlos podría hacer cosas que ahora se me hacen muy complejas..

Cualquier idea o sugerencia al respecto es bien recibida. Gracias
8  Programación / Java / Leyendo imagen de formato .pgm en: 18 Marzo 2009, 04:14 am
Hola a todos.

Tengo un problema cuando leo una imagen .pgm (también me ha pasado con otros formatos). Lo que quiero hacer es conocer todos los niveles de gris de la imagen.

La estructura de las imágenes .pgm es la siguiente:

Primera Línea: Una cadena mágica que identifica el tipo de formato, puede ser:

1. P2: Los píxeles están en formato ASCII (entre 0 y 255).

2. P5: Los píxeles están en formato Binario (cada píxel viene expresada en un byte).

nota: Apartir de aquí se puede colocar comentarios usando #.

Segunda Línea: Dos números enteros separados por un espacio en blanco (Ancho y Alto)

Tercera Línea: Un número entero que indica la máxima cantidad de niveles de grises que soporta la imagen. Generalmente es 255 que indica el máximo espectro de niveles de grises.

Apartir de aquí viene la imagen de acuerdo al formato especificado en la primera línea.

Si la cadena mágica es P2, viene una serie de números enteros separados por un espacio en blanco.

Ejemplo, si los valores que aparecen son:

64 40 230…

Si la cadena mágica es P5, viene una serie de bytes.

Ejemplo, si los bytes que aparecen son:

ACD…

En este  caso aparece el carácter A, que corresponde al valor ASCII 65 que será el valor del nivel de gris del primer píxel, el carácter C, le corresponde el valor ASCII 67 que será el nivel de gris del segundo píxel, etc.


El problema es que cuando comienzo a leer los bytes que forman parte de la imagen, hay valores que superan a 255 que son los 8 bits que corresponden a cada pixel, entonces la imagen al imprimirla en pantalla se ve mal.

El código es como sigue:

   
Código:
//DATOS DE LA IMAGEN

//P2: Los valores de los píxeles vienen en formato ASCII (es decir como cifras numéricas enteras entre 0 y 255).
//P5: Los valores de los píxeles vienen en formato Binario (es decir la información de cada píxel viene expresada en un byte).
String cadenaMagica;

//Indica las dimensiones de la imagen. Ancho y alto.
String dimensiones[] = new String[2];

//Indica el valor máximo del nivel de gris.
String nivelGris;

//Representación de toda la imagen.
String imagen;

public void leer()
{
try
{
BufferedReader archivo = new BufferedReader(new FileReader(new File("1.pgm")));

cadenaMagica = archivo.readLine();
System.out.println ("Cadena Magica: "+cadenaMagica);


dimensiones = archivo.readLine().split(" ");
System.out.println ("Ancho: "+dimensiones[0]+" Alto: "+dimensiones[1]);

nivelGris = archivo.readLine();
imagen = " ";

String str = archivo.readLine();

while(str!=null)
{
imagen +=str;
str = archivo.readLine();
}
}catch(Exception exc)
{
System.out.println ("Error leyendo archivo");
}
}

Para mostar la imagen hago lo siguiente, recorro el String imagen y lo voy convirtiendo al ASCII correspondiente:


         
Código:
int nivel = 0;
for(int i=0 ; i<alto ; i++)
{
  for(int j=0 ; j<ancho ; j++)
 {
    nivel = ((int)imagen.charAt(i*ancho+j));

    //Esto lo hago por el error para que sea un valor comprendido entre 0-255
    //No debería pasar esto.
    if(nivel>255)
    {
nivel = 255;
    }

    g.setColor(new Color(nivel,nivel,nivel));
    g.drawOval(iniX+j,iniY+i,1,1);
 }
}

Espero su ayuda.

Gracias.

Saludos
9  Programación / Java / Paso de parametros a programa en ejecucion en: 28 Diciembre 2007, 14:16 pm
Hola me gustaria pasarle pararmetros a un programa en ejecucion desde Java.

Algo asi, llamo a una aplicación y luego que esta se este ejecutando ir pasandole parametros los cuales producirian salidas varias en el programa, les pongo un ejemplo:

ejecuto al ms-dos desde Java y le paso comandos como dir, cd, md , etc. hasta ahora lo único que he logrado es ejecutar el programa con algo así:

Código
  1. class Programa
  2. {
  3.   public ejecutarPrograma()
  4.  {
  5.      try
  6.     {
  7.       //Aqui llamo la aplicacion que deseo ejecutar en este cado Ms-Dos
  8.       Process proceso = new Runtime.getRuntime().exec("cmd /c dir");
  9.  
  10.       //Luego redirecciono el flujo de datos (creo que se dice asi jeje)
  11.       InputStream datos = proceso.detInputStream();
  12.       BufferedReader str = new BufferedReader(new InputStreamReader(datos));
  13.  
  14.  
  15.       //De aqui tomo lo que va mostrando el ms-dos
  16.      String linea = str.readLine();
  17.      while(linea!=null)
  18.     {
  19.        System.out.println(linea);
  20.        linea = str.readLinea();
  21.     }
  22.  
  23.     }catch(Exception exc){}
  24.  
  25.  }
  26. }

Bueno basicamente es así, disculpa si hay algun error, no tengo el compilador a mano para probarlo, pero esa es la idea.

Ahora lo que no he logrado es poder mandarle comandos al programa en ejecución, es decir, al cmd.exe, osea ¿Como puedo mandarle un dir luego que lo alla iniciado sin tener que iniciarlo nuevamente?.

Espero me entiendan, cualquier cosa no duden en preguntar..

Saludos.
10  Programación / Java / Mover puntero del mouse en Java en: 20 Diciembre 2007, 19:03 pm
Hola a todos me gustaria saber como mover el puntero del mouse... es decir que le indique a alguna función las nuevas coordenadas y se ubique el puntero allí. Que sea alguna función de Java..

Gracias.. Saludos.
Páginas: [1] 2 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines