BIENVENIDA RAZA INFORMATICA

QUE TAL GENTE INFORMÁTICA Y DEMÁS ASOCIADOS,



MI INTENCIÓN NO ES SER EL MAS CARAJO



SI NO AYUDAR A LA GENTE COMÚN Y CORRIENTE COMO YO, DE ALGUNOS PROBLEMAS COTIDIANOS QUE NOS ENCONTRAMOS EN EL MUNDO DE LA INFORMÁTICA

viernes, 24 de agosto de 2007

Pasos Para El Mantenimiento

1. Apague el equipo.
2. Desenchufe todos los accesorios de la computadora.
3. Ponga el equipo en una mesa para mantenimiento, en donde pueda maniobrar y observar las piezas del CPU bien.

4. Limpieza Externa.


limpieza de gabinete:

i. Limpie con un paño húmedo (con espuma especial o agua) el exceso de polvo y suciedad que exista en él.
Nota: NO se debe utilizar cloro, pinol o líquidos de limpieza casera, ya que estos productos dañan gradualmente el equipo.

Limpieza de Monitor:
i. Limpie el polvo del monitor pasando un paño suave y limpio por la pantalla y gabinete.
Si la pantalla requiere más limpieza que simplemente quitar el polvo, use un limpiador antiestático de TRC (Desmagnetizador) de pantalla.

Nota: NO debe usar bencina, diluyente o cualquier otra sustancia volátil para limpiar el monitor. Estas substancias químicas pueden dañar el acabado.


Limpieza de Teclado:
i. Limpie la superficie de las teclas con un paño no muy húmedo quitando las manchas que llegase a tener.
ii. Soplete con un aire comprimido, para quitar la basurilla que queda debajo de las teclas.

Nota: el Paño No debe de estar demasiado húmedo debido a que algunos teclados no soportan el derramamiento de líquido, y podría causar un corto, llegando a afectar hasta el CPU, Cuando un teclado presenta fallas después de sopletearlo, el problema puede surgir debido a que alguna basurilla se puso entre la tecla y la membrana, para arreglar el problema va a depender, de muchos factores, ya sea cambiar el teclado por uno nuevo o en su defecto quitar las teclas y limpiarlas de una por una; teniendo el cuidado de volver a colocar las teclas en su lugar

Limpieza Interna.


1. Apague el CPU.
2. Desconecte la Corriente Eléctrica.
3. Descárguese de la corriente estática.
i. Cuando la ropa y los zapatos no son los adecuados, provocan que el cuerpo humano se cargue de corriente estática; esto para un circuito eléctrico es mortal; para descargarse, solo basta con tocar el chasis del CPU por un momento (no siempre hay chispa).


Desconecte y quite todos los accesorios (hay que procurar que no se toquen los circuitos eléctricos ya que la grasa humana va dañando gradualmente los circuitos; Soplete (con aire comprimido, o con una aspiradora, si no se tiene cualquiera de estos dos evite hacerlo con un compresor, ya que estos con el tiempo van guardando líquidos que son corrosivos para los circuitos) la tarjeta madre, quitando el exceso de polvo; nunca se debe de limpiar con agua o paños húmedos.


Fuente de Poder: En la fuente de poder se acumula mucho polvo, y esto provoca, que genere mucho calor y se dañe muy fácil, así que hay que limpiarla muy bien, si el ventilador hace mucho ruido, se puede lubricar el motor, y darle una buena limpieza a las aspas; si el ruido sigue después de este mantenimiento, hay que ir comprando una nueva fuente de poder ya que esta ya no tarda en dañarse.


CD-ROM: la limpieza consiste solamente en limpiar la parte externa con un paño húmedo, e introducir un CD de limpieza; si no se tiene un CD de limpieza y el lector ya dura bastante en leer un CD, se puede destapar y limpiar el lente láser, con algodón húmedo de alcohol; hay que tener mucha precausion ya que el laser se auto ajusta cuando se introduce el cd, y al limpiarlo y moverlo brúscamente lo puedes desajusta, lubricar el motor, y piezas mecánicas.


Unidad “A” o Floppy: Para limpiar los cabezales del floppy utiliza un disquete de limpieza para floppy. Si sospechas que un cuerpo extraño se ha quedado en su interior (como una etiqueta adhesiva, grapa, clip o resorte de un disquete) tienes que abrirlo para extraer el cuerpo extraño. Si se trata de un Floppy que trabaja en un ambiente polvoriento (a ras del piso por ejemplo), hay que abrirlo para limpiarlo y lubricarlo.


Cooler o disipador de calor y ventilador del cooler: este es un proceso muy delicado; una mala extracción de calor provoca que se reinicie constantemente el equipo o que se apague repentinamente; para limpiar el cooler se debe quitar los tornillos del ventilador, y quitar las zapatas que lo sostienen, para limpiar el cooler se puede hacer con un paño húmedo, si el polvo no se quita, se puede hacer cepillándolo, antes de colocarlo, nos debemos de asegurar que este completamente seco, y que queda bien sujeto, ya que si esto no ocurre, podria reiniciarse pa pc o apagarse; para limpiar el ventilador, es necesario limpiar las aspas, para evitar la acumulación de polvo en el cooler, si el ventilador llega a hacer un ruido fuera de lo normal, se pude limpiar con “afloja todo” el exceso de polvo. Y para aumentar su tiempo de vida, se puede lubricar el motor con aceite.


Slots de expansión: en estos slots se acumula el polvo, y al introducir cualquier tarjeta de expansión, no la reconoce debido a que el polvo no permite la comunicación entre el slots y la tarjeta, por es es necesario limpiar bien de polvo con aire comprimido, o aspiradora



Limpieza de Software.


Depuración de Archivos: la depuración de archivos consiste en quitar todos aquellos archivos innecesarios o repetidos que se tengan. Como los respaldos de respaldos, o archivos que no se van a volver a utilizar, y hacer el respaldo en un cd, para poder eliminarlos en el DD, hay que tener en cuenta que entre mas informacion haya en el DD mas lenta se vuelve la máquina; este proceso se debe de hacer manualmente, ya que el equipo no es demasido listo para saber cuales son lo que nosotros ya no utilizamos.


Liberador de espacio en DD: las herramientas de Windows traen una herramienta especial para quitar archivos que el mismo sistema crea, y que solo ocupan espacio en el DD como. Archivos Temporales, Cookies, Archivos Temporales de Internet, Archivos de Instalación; entre otros; Este proceso es muy facil pero a la vez puede ser muy riesgozo para el equipo, por eso se recomienda utilizar programas especializados, o el mismo programa de windows;


Entre los porgramas que se recomienda utilizar son:

tune-up

norton system works


Quitar programas innecesarios: hay muchas personas que cualquier porgrama que pasan por sus manos el mismo que instalan, y ni saben para que sirve, y ahi lo dejan, esto alenta la maquina, hay que ver los programas se han instalado, y ver si es son de verdad necesarios, si no para quitarlos. y ahorrarnos mucho espacio.


Desfragmentación de disco duro: la Desfragmentacion consiste en correr un programa especial para acomodar los archivos y programas que se usen mas recientemente, al inicio del disco para accesar a ellos mas rápido; este es un proceso muy lento, y va a depender de que tanta información tenga el DD, el tiempo que se le hizo la última desfragmentación y las caracteristicas de su PC,


Análisis de virus: algunos virus, crean procesos extremadamente fuertes que provocan que el equipo se vuelva lento, los programas antivirus que mas se utilizan son: Nod32, Ad-Aware SE, AVG 7.1, spywareterminator; ya que son rápidos, seguros, y efectivos.
no todos los virus son iguales, y no todos los antivirus tabajan igual para todos los virus, te recomiendo que investigues que tipo de virus tienes, o almenos el nombre y asi puedas darle a tu maquina mayor seguridad.

jueves, 23 de agosto de 2007

Recuperacion de DD


Puede que existan pocas cosas tan desagradables como la de tener la sensación de que has perdido toda la información que guardabas en tu ordenador… Si es eso lo que sientes en este momento, tranquilízate, respira, la información sigue ahí y lo más probable es que puedas recuperarla.

Los informáticos que a veces somos un poco insensibles con la ignorancia ajena, somos capaces de hacerte la peor de las preguntas en el momento más inoportuno, en este caso la pregunta del millón es “¿Tienes copia de seguridad?”… “¡Por supuesto que no tengo copia de seguridad, si la tuviera no estaría aquí mirándote como si fueras mi última salvación!”. Todos sabemos que hay que hacer copias de seguridad, algunos incluso al principio somos muy metódicos y disciplinados con esta tarea, pero terminamos olvidándonos y con acuerdo a la omnipresente Ley de Murphy:
“nuestra última copia de seguridad será lo suficientemente antigua como para no sernos de utilidad”.
Los discos duros no suelen fallar, no obstante cuando lo hacen es traumático. Otros componentes como las fuentes de alimentación o incluso las tarjetas gráficas fallan con mayor frecuencia, pero basta con comprar una nueva y remplazar la anterior, el fallo queda ahí y todo vuelve a funcionar.

En esto de la recuperación de datos hay una ley que se tiene que seguir a raja tabla, y es la siguiente: Si la información que guardas es importante, si no sabes exactamente lo que estas haciendo, no lo hagas. En la mayoría de los casos la causa de que el disco haya dejado de funcionar no suele ser la causa de la perdida de datos. Es decir, el mayor peligro de tus datos normalmente eres tú, más concretamente las cosas que tú hacer en tu frenesí por intentar recuperar lo perdido.

Todas las actuaciones que se describen en este artículo son inocuas, no van a empeorar la situación de tu disco y te servirán para evaluar el daño que éste ha sufrido.

Evaluando el Fallo de tu Disco Duro:
Lo primero que debemos intentar averiguar es si nuestro disco duro ha sufrido un fallo lógico o un fallo físico.

Fallo Lógico en el Disco Duro

Básicamente en un fallo lógico se deteriora la información, no el dispositivo que la contiene. Lo más frecuente es que nos haya fallado el sistema operativo, especialmente si se trata de un Windows 95, 98, Me… Ésta rama de los sistemas operativos de Microsoft es famosa por su inestabilidad, son sistemas operativos que se corrompen con relativa facilidad, sobre todo si eres de los que se instalan en el ordenador todo lo que les pasa por las manos. La rama de sistemas operativos NT Workstation, Windows 2000, Windows XP es bastante mejor (aunque visualmente parezcan iguales, su corazón, el llamado kernel del sistema operativo es radicalmente distinto).

Si tu disco es reconocido por la Pc, ella hace el intento de cargar el sistema operativo y es en ese paso en el que se queda, lo más probable es que tu sistema operativo esté corrupto o haya sido infectado por un virus que lo ha deteriorado. La información aun está dentro, pero no podrás utilizar el sistema operativo que tienes instalado para visualizarla.

Se puiede reparar el sistema operativo, reinstalarlo u optar por una instalación desde cero; Ahora bien como nos interesa conservar la información que hay en su interior, sería conveniente comprar un nuevo disco duro, instalarlo en nuestra CPU como disco duro primario o master y en él instalar de nuevo el sistema operativo, para posteriormente intentar acceder al disco duro corrupto, que habremos dejado como secundario o slave y Copiarnos la informacion que deseamos conservar. Este es el modo más seguro de hacerlo.
Al Igual, si tienes una computadora con caracteristicas similares, lo puedes conectar el DD dañado a la otra pc, como tipo slave para copiar tu informacion, conectarlo nuevamente a la maquina que estaba, para reinstalar el sistema operativo, una vez que nuestro sistema esta bien, volvemos podemos configurar las maquinas para conectarse en red, y copiar la informacion o volver a conectar el DD en la maquina donde tenemos la informacion y volverla a copiar.

Otros fallos lógicos…

Otros fallos lógicos no son tan sencillos de salvar. Una manera inocua de saber si tu ordenador tiene un fallo lógico de mayor alcance, es arrancar el ordenador desde la unidad A: (disquette). Nuestro sistema operativo nos permite crear discos de arranque en MS-DOS y siempre es conveniente tener uno, si no lo tienes pídele a alguien que te deje uno preferentemente creado con un sistema operativo igual al tuyo.
En Su defecto el Bendito Win98 viene booteable, y con opciones para arrancar desde Ms-Dos

El objeto de esto es ver si podemos listar los archivos de nuestro disco duro corrupto. Al arrancar con un disquete, o Cd-Rom veremos la pantalla en negro y un A:\> estamos por tanto en la unidad A -la del disquete- o D:\>, para el Cd-rom, intentaremos pasar a la unidad del disco duro para ello escribiremos “C:” y pulsaremos “Enter”.

Si recibimos el mensaje “El dispositivo no esta listo”… malo. Eso quiere decir que no ha encontrado el disco duro. Si este mensaje no aparece, ahora deberemos ver C:\>. Ahora intentaremos listar el contenido del disco duro, para ello escribiremos “DIR” y de nuevo “Enter”, deberías ver el contenido de tu disco duro, y utilizando algunos otros comandos de MS-DOS podrás pasar tus preciosos documentos a un disquete (y decían que nunca volverías a utilizar msdos...) .Si no ves el contenido de tu disco duro o recibes un mensaje de error, malo. No queremos decir con esto que tu información se haya perdido, la información sigue ahí, pero no va a ser tan sencillo recuperarla. También puede ocurrir que puedas listar el disco duro pero haya partes que archivos aun viéndolos al intentar ejecutarlos recibimos mensajes de error del tipo “El archivo esta dañado o corrupto”.




Existen una multitud de programas que nos permiten recuperar archivos que hemos borrado por error, se encuentran corruptos o dañados, inclusive si la tabla de particiones está mal, corrupta, o no existe. Navegando por Internet encontraremos una amplia gama en distintos precios. Si utilizas el sistema de archivos FAT32, encontraras algunos gratuitos. Cuando trabajas con Windows NT, 2000 o XP, lo normal es que el sistema de archivos que estes utilizando sea NTFS. No he encontrado ningún programa gratuito para NTFS, aunque no son muy caros. En ocasiones la utilización de este tipo de programas dificulta el trabajo de las empresas que recuperan datos de los discos duros

Si el fallo de nuestro disco duro es lógico, pero por nuestros métodos rudimentarios no conseguimos ni tener acceso a él, entonces seguiremos tendremos que acudir a una Empresa de Recuperacion de Datos
Fallos Físicos en el Disco Duro

Una sobre tensión, una fuente de alimentación en mal estado o el desgaste de las piezas internas del disco por el uso, puede provocar un fallo físico en el Disco Duro. A veces puede ser algo de la noche a la mañana, pero normalmente al colapso le suelen preceder algunos achaques: comienza a hacer ruido, o comienza a arrancar una vez si y otra no.

Si la información de nuestro disco es importante y comenzamos a ver que no está funcionando correctamente, es el momento de comprarnos un disco duro nuevo y llevar a cabo el proceso que se describió anteriormente para los Sistemas Operativos que se han corrompido.

Si no hemos hecho esto o el fallo ha sido fulminante, nosotros no tenemos manera de arreglar el problema sin ayuda de una empresa. Aquí es muy importante estar “quietecitos”, si has intentado arrancar el ordenador cinco veces y sólo has recibido como respuesta un “sonido renqueante”, no insistas más, si estamos ante un fallo en los cabezales “head-crash”, con cada arranque fallido puede que las cabezas lectoras estén arañando un poco más la superficie del disco… y esto si que no tiene arreglo.




Un disco duro es bastante parecido a un tocadiscos, pero con varias capas de platos

Hay fallos electrónicos, fallos de motor, fallos en las cabezas lectoras… el caso es que los expertos tendrán que abrir el disco y ver lo que le pasa, nosotros no podemos hacer nada.

Acudiendo a una empresa de Recuperación de Datos

En ciertas ocasiones he tenido que contactar con un buen número de estas empresas, para comparar precios y plazos de entrega. Dado que los fallos como hemos visto pueden ser de muy diferente índole éstas empresas no suelen pillarse los dedos con los presupuestos, de tal manera que utilizan amplias orquillas de precios. Aun así a esto le llaman “presupuesto cerrado”, creo que todos coincidiremos en que el que te digan que una recuperación te puede constar de 250 a 1000 Euros, no es un presupuesto cerrado.

A la mayoría de nosotros el tiempo no nos es determinante, podemos esperar perfectamente una semana sin disponer de los datos, siempre y cuando al final los recuperemos. Un servicio ultrarrápido en 24 horas de respuesta puede hacer que el presupuesto aumente muchísimo.

Es importante tener a mano la siguiente información antes de hablar con estas empresas:
Fabricante y modelo de nuestro disco duro
Capacidad total del disco duro.
Cantidad aproximada de datos que queremos recuperar.
Número de particiones.
Sistema Operativo que teníamos instalado
Sistema de Archivos con el que estaba formateado el disco.

Para tener todos estos datos, normalmente tendremos que sacar el disco duro de la CPU, que es muy sencillo, y al fin y al cabo antes o después lo vamos a tener que hacer ya que tenemos que enviar el disco duro a alguna de estas empresas. Si no lo enviamos nosotros, vendrán ellos a recogerlo con el consiguiente incremento en el presupuesto.


Nosotros al final optamos por contratar a InterMic y funcionaron muy bien, aunque el diseño de su web no ofrece tanta confianza como el de otras empresas. Nos decidimos por ellos porque su empresa estaba muy cerca de la nuestra y porque el presupuesto que nos enviaron estaba mucho más “cerrado” y era más económico. En cualquier caso existen un montón de empresas que se dedican a esto y son muy profesionales, así que tranquilos, lo más seguro es que todo vaya sobre ruedas.

Terminamos con una recomendación...

Los Pen-Drive USB son ahora muy económicos, puedes conseguir uno de 512 Mb o hasta de 1Gb por un precio muy atractivo. Se conectan al puerto USB y son como una unidad más de disco. Utilízalos para hacer tus copias de seguridad y ten en cuenta que si por ejemplo hay un incendio en tu oficina te alegrarás de tener una copia de tus archivos en tu casa o en un caja fuerte ignífuga.

http://www.arturosoria.com/eprofecias/art/recuperacion_datos.asp

el puerto paralelo de IBM

INTRODUCCION:
Desde comienzos del reinado de las PC's el puerto paralelo de comunicaciones se ha encargado de llevar datos hacia la impresora con el fin de generar información escrita. Lo anterior asociado a la facilidad que ofrece a conectar desarrollos externos lo han vuelto la forma preferida de desarrolladores aficionados para conectar sus trabajos.

Básicamente el puerto paralelo original de una IBM-PC puede enviar información a través de los pines de datos y los de control y puede recibir información desde el exterior por medio de los pines de estado. Se emplea una ficha DB25 hembra en la computadora, mientras que al cable le corresponde una DB25 macho. En la impresora hay un conector ligeramente mas grande en tamaño, denominado CENTRONIX cuya hembra se coloca en el equipo y el macho en el cable.
Originalmente el puerto paralelo sólo permitía el flujo de información en forma unidireccional. Esto quiere decir que los pines conectados como salidas (el caso de los de datos y los de control) sólo podían enviar información hacia el exterior; mientras que los diseñados como entradas (los de estado) sólo podían ingresar información hacia la computadora.

Con el paso del tiempo nuevos dispositivos, que nada tienen que ver con impresoras, comenzaron a emplear el puerto paralelo como vía de acceso a la computadora. Algunos eran simples dispositivos de paso, que posibilitaban conectar la computadora y la impresora por ese puerto, logrando así "compartir" el conector. Las llaves electrónicas ó HardLock's y las unidades de discos ZIP son sólo un par de ejemplos. Otros, en cambio, requerían que el puerto quedase exclusivamente dedicado a ellos, entre los que se encontraban sistemas de control de potencia, control industrial e interconexión de computadoras ó LapLink. Es por ello que se comenzaron a fabricar plaquetas de expansión capaces de agregar mas puertos paralelos a una misma computadora, hasta un límite inicial de tres.

Con la llegada de las impresoras láser y de los scanners económicos llegaron las nuevas versiones del puerto paralelo. Nos referimos a EPP (o puerto paralelo mejorado) y ECP (o puerto de computadora mejorado). Ambos puertos son bi-direccionales, pero entre el primero y el segundo la diferencia radica en dos puntos: El segundo es capaz de transmitir información a mayor velocidad y es capaz de acceder a la memoria directamente (o DMA). Hubo un intento de IBM por seguir marcando el estándar creando el puerto paralelo PS/2 el cual, como era de esperarse, era bi-direccional, pero el EPP y el ECP lo superaron rápidamente y sin complicaciones.


Conector DB25 / Asignación de pines

Como la mayoría de los puertos del PC, el paralelo es accesible a nivel software por medio de la BIOS, la cual asigna a éste una dirección de memoria base y dos direcciones suplementarias. La dirección base corresponde al bus de datos del puerto, esto quiere decir que lo que enviemos a esta dirección será exteriorizado por los terminales D0 a D7. El bus de estado se encuentra en la posición base + 1. Cabe aclarar que este bus sólo tiene implementadas cinco posiciones S3 a S7, esta última con estado lógico invertido (cuando no presenta voltaje el estado del bit es uno, mientras que cuando presenta voltaje el estado del bit es cero) y que las posiciones inferiores S0, S1 y S2 no tienen función alguna. Por último, el bus de control dispone de cuatro señales implementadas, en este caso las mas bajas C0 a C3 de las cuales sólo C2 está en estado lógico normal. Las tres restantes (C0, C1 y C3) presentan estados lógicos invertidos, lo que implica que si se pone a uno el bit correspondiente a C0 el terminal no presentará tensión alguna, mientras que si se pone el bit a cero el terminal presentará tensión.

En el gráfico de arriba los terminales 2 al 9 (simbolizados por el color verde) representan el canal de datos. Los azules el de control y los rojos el de estados.

Para detectar si un puerto es bi-direccional o no hay una prueba infalible y extremadamente simple: Enviar a la dirección base del puerto paralelo el dato 255. Esto hace que todos los terminales del canal de datos sea energizados. Seguidamente habrá que llevar a masa el terminal 9 del conector por medio de una resistencia de 4.7K. Dejando la resistencia en ese lugar leer el dato presente en el puerto. Si la lectura entrega 255 quiere decir que el puerto es unidireccional, en cambio, si la lectura entrega 127 es señal que el puerto es bi-direccional. En los puertos modernos es posible efectuar esta prueba sin la resistencia limitadora de corriente, pero en los antiguos esto puede causar daños a la electrónica de la placa de expansión.

En las placas de vídeo MGP, HGC ó Hércules el puerto paralelo es unidireccional. En la mayoría de las placas multifunción (muy famosas en la época del 386) también predominaban los puertos unidireccionales. En cambio, en la mayoría de los mainbord's modernos que incluyen de base el puerto, éste es bi-direccional y se puede seleccionar si se quiere uni-direcional, bi-direccional, EPP ó ECP; todo esto con cómodos menús desde la utilidad de configuración de la BIOS.

La dirección del puerto paralelo depende en gran medida de donde está alojado. En las placas de vídeo hércules el puerto disponible venía configurado con la dirección 3BC y no era posible asignar otra. En las placas multifunción el puerto comenzó a venir en la dirección 378 y se podía seleccionar como dirección alternativa la 278. En las placas de expansión cuya única misión es agregar puertos paralelos la dirección es seleccionable entre 378, 278 y 3BC. En las placas bases con el puerto incluido de fábrica las direcciones posibles son 378 y 278. Algunos sistemas operativos alternativos presentan dificultades cuando un puerto paralelo es bi-direccional y, a su vez, se encuentra en la posición de memoria 3BC. Por ello, las placas base y las placas de expansión de puertos paralelos bi-direccionales omiten la posibilidad de asignar esa dirección.

A continuación utilizaremos como ejemplo el puerto direccionado en 378, dado que en la mayoría de los casos está allí.

Los niveles de tensión y corriente presentes en el puerto paralelo del PC responden a los estándares de la familia lógica TTL, siendo un estado alto representado por 5V de corriente continua y un estado bajo indicado por la ausencia de tensión (0V). Hablando de corriente, cada pin del puerto paralelo puede proporcionar hasta 10mA en forma segura y 20mA como límite por breves períodos de tiempo. Para ingresar en circuitos integrados lógicos TTL ó CMOS no es necesario "potenciar" la señal, incluso es posible encender un diodo LED. Pero para manejar elementos como relays, motores, lámparas o cargas mayores se hace preciso reforzar la señal y, de ser posible, aislar el sistema.

RELES:Una forma de poder manejar cargas potentes y de tensiones distintas a las presentes en la computadora es utilizando relés, similares en su desempeño a los relays que se emplean en los automóviles. Un relé dispone de una o mas llaves mecánicas capaces de cerrar o abrir circuitos eléctricos partiendo de un campo magnético generado por un solenoide o bobina. Nada mejor que gráficos para explicar esto:


En esta escena de la película nuestro reparto está formado por: El relé (ubicado en el centro y formado por la bobina y el interruptor grande), la batería (que no tiene mas de 12V y su corriente no llega al amperio), un interruptor pequeño (que controla la circulación eléctrica entre la batería y la bobina), el generador (el cual provee de 220V y mucha corriente) y una lámpara apagada. Asumimos que el generador se encuentra en marcha, lo que implica que por los cables gruesos (líneas gruesas) disponemos de tensión y corriente en abundancia. También asumimos que la pequeña batería dispone de carga, por lo que en los cables delgados (líneas finas) disponemos de baja tensión y algo de corriente. Aprovechamos el espacio vacío (o aire) que hay entre la bobina y el interruptor grande para trazar una línea imaginaria la cual, del lado izquierdo delimita la circuitería de "control" y, por el lado derecho la de "potencia".

Ahora, un "miembro del público" acciona el interruptor que controla el paso de la corriente entre la batería y la bobina del relé dejándola circular por el circuito. Esto provoca que electrones comiencen a circular por las espiras de la bobina produciendo un campo magnético. Ese campo magnético llega hasta el interruptor de potencia del telé atrayéndolo. Entonces se produce la escena de abajo:
Aquí, los actores son los mismos, pero de alguna forma la lámpara está encendida y el relé está funcionando. Sucede que, al ser atraído por la fuerza magnética el interruptor del relé cerró el circuito formado por la lámpara y el generador, permitiendo la circulación de la electricidad y haciendo que la lámpara brille. La flecha indica la dirección en la que el interruptor se desplazó al ser atraído por la fuerza magnética, pero esa flecha no es mas que aire, siendo imposible que la tensión y la corriente presentes en el interruptor lleguen a la bobina e inversamente que la tensión y corriente presentes en la bobina alcancen el interruptor. De esta forma logramos controlar una carga realmente pesada por medio de baja tensión y baja corriente. Y como el aire que separa la bobina del interruptor en el relé no es conductor logramos, además, aislar los sistemas de control y de potencia.

Sabemos que no se puede conectar un velador o una máquina de café a la computadora, porque no hay suficiente tensión y corriente para hacerlos funcionar. Con el circuito mostrado arriba tenemos un paso hacia lograr eso. Si reemplazamos la lámpara por el velador y la máquina de café y el generador lo sustituimos por un tomacorrientes lograremos controlar el encendido de estos electrodomésticos por medio del relé. Entonces no necesitamos accionar sobre la alta tensión y corriente sino que lo hacemos en la bobina del relé, la cual sólo requiere de algunos voltios y muy poca corriente. Pero esos pocos voltios y esa mínima corriente siguen siendo valores muy altos para el puerto de una computadora. No podemos hacer que los 5 voltios y los 10mA presentes en cada pin del puerto paralelo hagan funcionar la bobina del relé y que esta genere el campo magnético suficiente para atraer el interruptor. Necesitamos hacer un "casting" y que un nuevo "actor" entre en escena.Analizando el problema determinamos que es exactamente igual que el anterior, o sea que si colocamos un relé mas pequeño que accione el relé grande lograremos solucionarlo.

Error, el mas pequeños de los relés requiere demasiada corriente, por lo que debemos descartar la idea. Entonces recurrimos al uso del transistor.

Dado que explicar el funcionamiento del transistor en detalle excedería los alcances de este informe sólo diremos que usaremos el componente en configuración corte / saturación. Esto implica que cuando está inactivo presenta una alta resistencia entre el emisor y el colector lo que impide que la corriente circule entre la batería y la bobina del relé. Pero cuando está activo (saturando) presenta una muy baja resistencia actuando como un interruptor cerrado que permite el paso de la corriente. El transistor es un elemento de estado sólido, esto implica que su funcionamiento no está ligado a partes mecánicas móviles como sucede con el relé. Gracias a esto el transistor es mucho mas rápido que el relé. Para que el transistor presente un estado de corte (o sea que la corriente no pueda pasar entre emisor y colector) basta con no colocar señal en su base. En cambio, para que el transistor sature (que la corriente fluya a través de su emisor y colector) hay que dar a la base una señal cuya tensión y corriente sean suficientes para colocarlo en ese estado. Afortunadamente un transistor de uso general como el BC548 o el 2N3904 requieren de muy poca corriente en su base para que entre en estado de saturación, por lo que es muy común ver estos componentes asociados a un relé. Pero el diagrama de arriba deja mucho que desear en cuanto al circuito final. La base no se conecta directamente al pin del puerto paralelo, sino que se hace en serie con una resistencia de 10K ohms la cual hace las veces de limitadora de corriente. También hay que tener en cuenta que la bobina del relé, cuando deja de recibir corriente, produce lo que se suele denominar como potencial inverso. Básicamente es una corriente que circula en sentido inverso al que estaba circulando cuando el transistor estaba saturando. Esta corriente inversa es muy peligrosa para el transistor, por lo que se debe colocar un diodo en paralelo con la bobina que deje circular la corriente en un sentido, pero que la cortocircuite en otro. De esta forma el transistor queda protegido contra la corriente inversa producida por el relé al dejar de funcionar. Como el cortocircuito es instantáneo el diodo no corre peligro alguno.


Pero el echo de disponer un transistor no implica de ningún modo poder manejar cualquier relé. Cada transistor tiene sus especificaciones en cuanto a capacidad de tensión y corriente que puede circular a través de su interior. Para manejar relés cuyas bobinas requieran mas corriente de la que un transistor de uso general como los comentados puede manejar hay dos altertativas.

martes, 21 de agosto de 2007

Cómo desproteger una hoja en Excel.

Si has olvidado la contraseña de una hoja de Excel, aqui te Pongo una rutina que quita el PassWord o Contraseña de las hojas de Excel.


1. Activa el edito de visual basic Alt+F11.
2. copia esta rutina.

Sub breakit()

Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer On Error Resume Next


For i = 65 To 66
For j = 65 To 66
For k = 65 To 66
For l = 65 To 66
For m = 65 To 66
For i1 = 65 To 66
For i2 = 65 To 66
For i3 = 65 To 66
For i4 = 65 To 66
For i5 = 65 To 66
For i6 = 65 To 66
For n = 32 To 126

ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & _

Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _

Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)

If ActiveSheet.ProtectContents = False Then

MsgBox "One usable password is " & Chr(i) & Chr(j) & _

Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) _

& Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)


Exit Sub
End If
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next


End Sub

3. Cerrar el editor.
4. Seleccionar la hoja a desproteger, y ejecutar la macro breakit (ALT+F8, para seleccionarla).

Tras la ejecución, un mensaje dará un password equivalente, y la hoja ya estará desprotegida.
en office 2003 no aparece, pero en los demas debe de aparecer el mensaje

Instalar el XP Sin Hacer Casi Nada

Este Método lo he visto en varios lugares de internet y bueno aunque hay otras formas tambien son muy buenas en lo particular esta esta bien.
De esta forma no tendremos que pulsar ninguna tecla, ni meter ninguna clave ni escoger ninguna opción. Lo único que hay que hacer es arrancar con el CD y luego podemos dejar la pc completamente sólo. Después de 45 minutos volvemos y tendremos el disco formateado y Windows XP instalado. El método sólo funciona para Windows XP (home y profesional), NT y 2003. Es este:
checate el archivo winnt.sif para Windows XP

Ábrelo con el bloc de notas, busca donde dice 12345-12345-12345-12345-12345 y cámbialo por la clave de instalación de Windows que tú tengas.
Copia el archivo winnt.sif modificado en un disquete vacío; o si tienes forma de meterlo en el cd de instalcion de winXP mejor, he visto programas que te hacen una clonacion del disco agregando archivos extra al Cd... claro si esque caben,

Arranca con el CD de Windows y con el disquete Adentro, si este es el caso.
Se iniciará la instalación de Windows con las siguientes opciones automáticas:
Formateo automático del disco en una única partición NTFS. Se borrarán todos los datos, pero se asegura la limpieza total de toda clase de virus, gusanos y troyanos.

Usuario "El Rorro" sin password; puedes poner el nombre de usuario que quieras dentro de las comillas.

Organización "el congal". Nombre de equipo automático. puedes poner la organizacion que quieras dentro de las comillas.

Grupo de trabajo "home". tambien puedes poner el grupo de trabajo que quieras.

Resolución de pantalla 800x600. te recomiendo que utilices esta resolucion para que no tengas problemas en equipos medio viejos aunque ya es muy dificil, esto ya es decision tuya.

Idioma español, zona horaria de España, configuración regional de España.

Cuando acabe la instalación podrás modificar las opciones anteriores mediante el panel de control de Windows.

Cómo arrancar desde el CD-ROM.

Si el equipo esta configrado para arrancar desde Cd podremos meter únicamente el cd de winXp para accesar a la instalacion de windows. si esto es correcto nos aparecera un mensaje en letras blancas con fondo negro que dice:
"Pulse cualquier tecla para arrancar desde el CD....".
Hay que ser rápidos porque el mensaje sólo dura unos pocos segundos en la pantalla y, si no pulsamos ninguna tecla, la máquina arrancará desde el disco duro como siempre.

Si no aparece ese mensaje, puede ser que tu Máqina este configurada para arrancar directamente desde el discu duro. para cambiar la configuracion es muy sencilla, si no tienes gran conocimiento no muevas mas alla de lo indicado

Reinicia el maquina. cuando comienza veraz que la maquina hace el reconocimiento de lso dispositivos... DDs CDs, esto claro es muy rápido, asi es que en cuanto comience presiona tecla Supr, con una vez basta, pero por aquello de que no la pulsamos en el moento adecuado puedes presionarla repetidas veces, la pantalla te mostrara segun sea el caso, accesando al bios( en ingles claro esta),Una Vez entrando aparecera una pantalla con el fondo azul. En algunas máquinas (sobre todo los de marca), te indica que tecla presionar que pueden ser:
Del, Esc, F1, F2, F10, Ctrl+Alt+Esc, Ctrl+Supr o Tab.

Moviéndote con las teclas del cursor, selecciona la opción:
"Advanced BIOS features" y pulsa Enter.
Aquino hay mouse, para que lo vallas soltando.

Aparecerá un nuevo menú, donde habrá una opción que se llama:
"First Boot Device" dependiendo la tecla que te indique cambiaras la opcion hasta cd-rom
para que siempre que inicie, busque una undiad de arranque desde cualquiera de tus cds
De la misma forma, pon "Second Boot Device"en HDD-0 en la opción .

Pulsa F10 te preguntara que si deseas guardar y salir (tambien en ingles) le dices que si y listo

En algunas máquinas, la opción "First Boot" no estará en el menu mencionado. Esto es por la gran variedad de bios, chips, marcas y demas, que hay en el mercado.
si de plano batallas mucho para encontrar esta opcion o de plano no quieres modificar nada por que una vez instalado se tarda mucho la máquina en entrar puedes presionar "F8 " para que te muestre el menú de arranque, ahi solo seleccionas el cd, y listo.
bien aqui te pongo el archivo como debe de ir... bueno
;SetupMgrTag
[Data]
AutoPartition=1
MsDosInitiated="No"
UnattendedInstall="Yes"
[Unattended]
UnattendMode=FullUnattended
OemSkipEula=Yes
OemPreinstall=No
UnattendSwitch="yes"
TargetPath=\WINDOWS
Repartition=Yes
[GuiUnattended]
AdminPassword=*
EncryptedAdminPassword=NO
OEMSkipRegional=1
TimeZone=105
OemSkipWelcome=1

[UserData]
ProductID=12345-12345-12345-12345-12345
FullName="El Rorro"
OrgName="Congal de mala muerte"
ComputerName="micompu"

[Display]
Xresolution=800 YResolution=600

[RegionalSettings]
LanguageGroup=1
Language=00000c0a

[URL]

[FavoritesEx]
Title1="El bog del Zeram..."

[Branding]
BrandIEUsingUnattended=Yes

[Proxy]
Proxy_Enable=0 Use_Same_Proxy=1

[Identification]
JoinWorkgroup=Aula

[Networking]
InstallDefaultComponents=Yes
bien si sabes un poquito mas de informatica te daras cuenta que puedes cambiar muchas cosas... pero de ahi yo no me hago responsable de los errores que puedas tener y los daños que lleges a causar sobre los cambios.

lunes, 20 de agosto de 2007

Ideas y Trucos en Delphi

Conocer la ubicación del ejecutable

ExtractFilePath(Application.ExeName) o ExtractFilePath(ParamStr(0))


Compartir carpetas en Windows.


En principio es tan sencillo o tan complicado como usar la función de la API de Windows "NetShareAdd". La pregunta es: ¿dónde está esta función? Pues bien, esta función se puede encontrar en la DLL "SrvApi.dll" en los sistemas Win9x y WinMe, o en la DLL "NetApi32.dll" en los sistemas Windows NT y 2000 (y supongo que XP).

Borland, ante este problema de que dicha función dependa del sistema operativo lo que ha hecho es pasar de todo y no incluir esta función (ni muchas otras de redes locales) en sus archivos de sistema de la VCL, por lo que para poder usar tendremos que declarar nosotros mismos esta función.

Aquí surge una duda de como cargar la DLL que vayamos a usar: estática o dinámicamente.
Si declaramos la función estáticamente, es decir, con un "external XXXXX" después de la declaración, nuestro ejecutable dependerá de dicha DLL y no nos funcionará en el otro tipo de plataforma. Si por ejemplo cargamos estáticamente NetApi32.dll porque estamos en NT ó 2000 no podremos ejecutar nuestra aplicación en Win9x ó Me.
Esto nos lleva a que la mejor forma de hacerlo es cargando la función dinámicamente (LoadLibrary, GetProcAddress, ...) y evitar la dependencia del sistema operativo.

Por otra parte está el hecho de que esta función utiliza unas estructuras (records en Delphi) que tampoco están declaradas y tendremos que declararlas a mano. Estas son: "share_info_50" para sistemas 9x y Me y "share_info_2" para sistemas NT/2000.

Para declarar estas estructuras y otras constantes necesarias he creado el fichero NetShare.pas que es como sigue:

unit NetShare;

interface
uses Windows;

const
LM20_NNLEN = 12;
SHPWLEN = 8;

SHI50F_RDONLY = 1;
SHI50F_FULL = 2;
SHI50F_DEPENDSON = (SHI50F_RDONLY or SHI50F_FULL);
SHI50F_ACCESSMASK = (SHI50F_RDONLY or SHI50F_FULL);
SHI50F_PERSIST = 256;
SHI50F_SYSTEM = 512;

STYPE_DISKTREE = 0;
ACCESS_NONE = 0;
ACCESS_READ = $01;
ACCESS_WRITE = $02;
ACCESS_CREATE = $04;
ACCESS_EXEC = $08;
ACCESS_DELETE = $10;
ACCESS_ATRIB = $20;
ACCESS_PERM = $40;
ACCESS_GROUP = $8000;
ACCESS_ALL = (ACCESS_READ or ACCESS_WRITE or ACCESS_CREATE or
ACCESS_EXEC or ACCESS_DELETE or ACCESS_ATRIB or ACCESS_PERM);

type
share_info_2= record
shi2_netname : PWideChar;
shi2_type : DWORD;
shi2_remark : PWideChar;
shi2_permissions : DWORD;
shi2_max_uses : DWORD;
shi2_current_uses : DWORD;
shi2_path : PWideChar;
shi2_passwd : PWideChar;
end;

share_info_50 = packed record
shi50_netname : array [0..LM20_NNLEN] of Char;
shi50_type : Byte;
shi50_flags : Short;
shi50_remark : PChar;
shi50_path : PChar;
shi50_rw_password: array [0..SHPWLEN] of Char;
shi50_ro_password: array [0..SHPWLEN] of Char;
end;

implementation
end.

La llamada a la función para compartir una carpeta sería algo así:


procedure TForm1.Button1Click(Sender: TObject);

var
hDll : THandle;
NetShareAddWin9x : function(pszServer : PChar;
sLevel : Short;
pbBuffer : Pointer;
cbBuffer : Short):DWORD;stdcall;

NetShareAddWinNT : function(servername : PWideChar;
level : DWORD;
buf : Pointer;
var parm_Err : DWORD):DWORD;stdcall;

si50 : share_info_50;
si2 : share_info_2;
tamano : Short;
res, err : DWORD;
begin
// Habría que comprobar la versión de windows
// con la función EsNT que tiene que devolver
// true si estamos en NT ó 2000 y si no false.

if (not EsNT) then
begin
// Probamos con la librería de Win 95/98/Me
hDll := LoadLibrary('SvrApi.dll');
if hDll > 32 then
begin
NetShareAddWin9x := GetProcAddress(hDll, 'NetShareAdd');
tamano := sizeof(si50);
FillChar(si50, tamano, 0);
StrCopy(si50.shi50_netname, 'PRUEBA');
si50.shi50_type := STYPE_DISKTREE;
si50.shi50_flags := SHI50F_RDONLY;
si50.shi50_path := 'D:\TEMP';
res := NetShareAddWin9x(nil, 50, @si50, tamano);
FreeLibrary(hDll);
end;
end
else
begin
// Probamos con la librería de Win NT/2000
hDll := LoadLibrary('NetApi32.dll');
if hDll > 32 then
begin
NetShareAddWinNT := GetProcAddress(hDll, 'NetShareAdd');
tamano := sizeof(si2);
FillChar(si2, tamano, 0);
si2.shi2_netname := 'PRUEBA';
si2.shi2_type := STYPE_DISKTREE;
si2.shi2_permissions := ACCESS_READ;
si2.shi2_max_uses := 1;
si2.shi2_current_uses := 1;
si2.shi2_path := 'C:\WINNT';
res := NetShareAddWinNT(nil, 2, @si2, err);
FreeLibrary(hDll);
end;
end;
end;

NOTA: en Win9x/ME hay que poner el parámetro "shi50_path" en mayúsculas para que funcione.


Obtener el número de serie de nuestro Windows

uses Registry;

procedure TForm1.Button1Click(Sender: TObject);
var
Reg : TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_Local_Machine;
Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\',False);
ShowMessage (Reg.ReadString('ProductID'));
finally
Reg.Free;
end;
end;

password en paradox con delphi

Suponiendo que Table1 sea nuestra tabla el codigo a poner seria el siguiente:
Table1.Active:=FALSE;
Session.AddPassword('Password/Clave');
Table1.Active := True;

Para quitar el pasword utiliza este codigo:

Session.RemovePassword('My secret password');

Prevenir dos ejecuciones simultaneas de tu aplicación

Esto sirve para que no ejecuten tu programa más de una vez simultaneamente. Puede que quieras simplemente denegar la creación de la segunda instancia de tu aplicación, o puede que lo que quieras es que no sólo no se abra la segunda instancia, sino que se restaure la primera (que igual está minimizada, por ejemplo).
Hay muchas maneras de hacer esto. En este truco he querido poner una que me ha llamado la atención por su sencillez. En Delphi 1 el detectar una instancia anterior era tan fácil como chequear la variable hPrevinst, pero en Delphi 32 bits esta variable ya no existe, así que tenemos que buscar otra manera de detectar otra copia de nuestra aplicación.
Aqui la buscaremos con ayuda de FindWindow y un pequeño truco para simplificar la búsqueda:

Meteremos este código en el código del proyecto, para lo cual has de habilitar la pestaña de ver código del proyecto, que está en: View->Project Source

program Project1;

uses
Forms, Windows, Messages,
Unit1 in 'Unit1.pas' {Form1};

const
CM_RESTORE = WM_USER + $1000;

var
RvHandle : hWnd;

{$R *.RES}

begin
{Si existe otra instancia ya ejecutandose, la activamos}

RvHandle := FindWindow('Mi programa Delphi', NIL);
if RvHandle > 0 then
begin
PostMessage(RvHandle, CM_RESTORE, 0, 0);
Exit;
end;

{Sino, haz lo normal}

Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

En la declaración de la form, añadiremos este código, (la constante y las dos procedures que hay en la parte public)


const
CM_RESTORE = WM_USER + $1000;

type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure CreateParams(var Params: TCreateParams); override;
Procedure RestoreRequest(var message: TMessage); message CM_RESTORE;
end;


Y en la implementation de la form, pondremos el código de las dos procedures que hemos definido:

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.WinClassName := 'Mi programa Delphi';
end;

procedure TForm1.RestoreRequest(var message: TMessage);
begin
if IsIconic(Application.Handle) = TRUE then
Application.Restore
else
Application.BringToFront;
end;

El funcionamiento de todo esto es el siguiente:

* Definimos un nuevo CreateParams para nuestra form, que lo que hace es asignar 'Mi programa Delphi' al WinClassName para luego poder buscar nuestra aplicación con mayor facilidad mediante FindWindow

* Creamos una procedure de tratamiento de nuestro mensaje: CM_RESTORE, que servirá para decirle a la primera instancia de nuestra aplicación que queremos que 'resucite'

* Y por ultimo, en el fuente del proyecto, buscamos una instancia previa de nuestra aplicación mediante FindWindow, y, si la encontramos, la enviamos nuestro propio mensaje CM_RESTORE para que resucite.

Otro ejemplo, mediante un semáforo


Pon esto en el OnCreate de tu form:

procedure TMainForm.FormCreate(Sender: TObject);
var Sem : THandle;
begin
Sem := CreateSemaphore(nil,0,1,'PROGRAM_NAME');
if ((Sem <> 0) and (GetLastError = ERROR_ALREADY_EXISTS)) then
begin
CloseHandle( Sem );
ShowMessage('This program is already running.'+
'Este programa ya se está ejecutando...');
Halt;
end;
end;

Otro ejemplo, mediante la unit TLHelp32 y el nombre del ejecutable


Simplemente detectaremos si hay otro ejecutable ejecutándose que se llame igual que el nuestro.

* Añade 'TLHelp32' en el uses de tu form

* Añade esta función en el implementation de la form:



function ProgramaAbiertoDosVeces:Boolean;
var
Datos :TProcessEntry32; {Estructura interna de datos de un proceso}
hID :DWord; {identificador del proceso}
Snap :Integer;
NombreArchivo :String; {path del archivo original}
Repetido :Boolean; {true si el programa se ha abierto dos veces}
Handle1 :Hwnd; {thandle}
Contador :Integer; {Contador de aperturas}

begin
Contador:=0;
NombreArchivo:=Application.Exename;
Repetido:=False;
GetWindowThreadProcessId(Handle1,@hID);
Snap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
try
Datos.dwSize:=SizeOf(Datos);
if(Process32First(Snap,Datos))then
begin
repeat
if NombreArchivo=StrPas(Datos.szExeFile) then
begin
Inc(contador);
if Contador>=2 then Repetido:=true;
end;
until (not(Process32Next(Snap,Datos))) or (Repetido);
end;
finally
Windows.CloseHandle(Snap);
end;
Result:=Repetido;
end;


* Ahora, pon este código en el evento OnCreate de la form principal:


procedure TForm1.FormCreate(Sender: TObject);
begin
if ProgramaAbiertoDosVeces then
begin
showmessage('El programa ha sido abierto mas de una vez');
Application.terminate;
end;
end;



Capturar teclas de todas las aplicaciones Windows (hooks)


Un Hook (en español algo así como 'gancho') no es más que un mecanismo que nos permitirá espiar el tráfico de mensajes entre Windows y las aplicaciones.

Instalar un hook en nuestra aplicación es algo relativamente sencillo, pero claro, si lo instalamos en nuestra aplicación, tan sólo 'espiaremos' los mensajes que Windows envie a nuestra aplicacion, con lo que tampoco habremos resuelto el problema.

¿Cual es la solución entonces?, pues la solución pasa por instalar un Hook pero a nivel de sistema, es decir, un 'gancho' que capture todos los mensajes que circulen hacia Windows.

El instalar un hook a nivel de sistema tiene una gran complicación añadida, que es el hecho de que la función a la que llama el hook ha de estar contenida en una DLL, no en nuestra aplicación Delphi.
Esta condición, nos obligará, en primer lugar a construirnos una DLL, y en segundo lugar a construirnos algun invento para comunicar la DLL con nuestra aplicación.

En este truco tienes un ejemplo de captura de teclado mediante un Hook de teclado a nivel de sistema.
El ejemplo consta de dos proyectos, uno para la DLL y otro para la aplicación de ejemplo.

El funcionamiento es el siguiente:

* Creamos una DLL con dos funciones que exportaremos, una para instalar el hook y otra para desinstalarlo.

* hay una tercera funcion que es la que ejecutará el hook una vez instalado (CallBack). En ella, lo que haremos es enviar los datos del mensaje capturado a nuestra aplicacion.

La DLL debe saber en todo momento el handle de la aplicacion receptora, así que haremos que lo lea de un fichero mapeado en memoria que crearemos desde la propia aplicacion.
Tienes un ejemplo de uso de ficheros mapeados en memoria en el truco:

- Compartir datos entre dos aplicaciones Delphi

Enviaremos los datos desde la DLL a la aplicacion a través de un mensaje de usuario. Tienes otros trucos en donde tambien se usa esta técnica, por ejemplo:

- Prevenir dos ejecuciones simultaneas de tu aplicacion

Bien, vamos con el ejemplo:

La DLL que instala el Hook:

* Crea el esqueleto de una DLL (File - New - DLL)

* Cambia el código del proyecto por éste otro:

library Project1;


{
Demo de Hook de teclado a nivel de sistema, Radikal.
Como lo que queremos es capturar las teclas pulsadas en cualquier parte
de Windows, necesitamos instalar la funcion CallBack a la que llamará
el Hook en una DLL, que es ésta misma.
}

uses Windows,
Messages;

const
CM_MANDA_TECLA = WM_USER + $1000;

var
HookDeTeclado : HHook;
FicheroM : THandle;
PReceptor : ^Integer;

function CallBackDelHook( Code : Integer;
wParam : WPARAM;
lParam : LPARAM
) : LRESULT; stdcall;

{Esta es la funcion CallBack a la cual llamará el hook.}

begin
{Si una tecla fue pulsada o liberada}

if code=HC_ACTION then
begin
{Miramos si existe el fichero}

FicheroM:=OpenFileMapping(FILE_MAP_READ,False,'ElReceptor');
{Si no existe, no enviamos nada a la aplicacion receptora}

if FicheroM<>0 then
begin
PReceptor:=MapViewOfFile(FicheroM,FILE_MAP_READ,0,0,0);
PostMessage(PReceptor^,CM_MANDA_TECLA,wParam,lParam);
UnmapViewOfFile(PReceptor);
CloseHandle(FicheroM);
end;
end;
{Llamamos al siguiente hook de teclado de la cadena}

Result := CallNextHookEx(HookDeTeclado, Code, wParam, lParam)
end;

procedure HookOn; stdcall;
{Procedure que instala el hook}

begin
HookDeTeclado:=SetWindowsHookEx(WH_KEYBOARD, @CallBackDelHook, HInstance , 0);
end;

procedure HookOff; stdcall;
begin
{procedure para desinstalar el hook}

UnhookWindowsHookEx(HookDeTeclado);
end;

exports
{Exportamos las procedures...}

HookOn,
HookOff;

begin
end.
Ahora graba el proyecto con el nombre: 'HookTeclado.dpr' y la compilas (Project - Build All), y habrás generado la DLL del proyecto.

Aplicacion que recibe datos del Hook


* Crea una nueva aplicacion

* Pon un TMemo (Memo1) en la form

* Cambia el código de la unit de la form por éste otro:


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

const
NombreDLL = 'HookTeclado.dll';
CM_MANDA_TECLA = WM_USER + $1000;


type
THookTeclado=procedure; stdcall;

type
TForm1 = class(TForm)
Label1: TLabel;
Memo1: TMemo;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
FicheroM : THandle;
PReceptor : ^Integer;
HandleDLL : THandle;
HookOn,
HookOff : THookTeclado;

procedure LlegaDelHook(var message: TMessage); message CM_MANDA_TECLA;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
{No queremos que el Memo maneje el teclado...}

Memo1.ReadOnly:=TRUE;

HandleDLL:=LoadLibrary( PChar(ExtractFilePath(Application.Exename)+
NombreDLL ) );
if HandleDLL = 0 then raise Exception.Create('No se pudo cargar la DLL');

@HookOn :=GetProcAddress(HandleDLL, 'HookOn');
@HookOff:=GetProcAddress(HandleDLL, 'HookOff');

IF not assigned(HookOn) or
not assigned(HookOff) then
raise Exception.Create('No se encontraron las funciones en la DLL'+#13+
'Cannot find the required DLL functions');

{Creamos el fichero de memoria}
FicheroM:=CreateFileMapping( $FFFFFFFF,
nil,
PAGE_READWRITE,
0,
SizeOf(Integer),
'ElReceptor');

{Si no se creó el fichero, error}
if FicheroM=0 then
raise Exception.Create( 'Error al crear el fichero'+
'/Error while create file');

{Direccionamos nuestra estructura al fichero de memoria}
PReceptor:=MapViewOfFile(FicheroM,FILE_MAP_WRITE,0,0,0);

{Escribimos datos en el fichero de memoria}
PReceptor^:=Handle;
HookOn;
end;

procedure TForm1.LlegaDelHook(var message: TMessage);
var
NombreTecla : array[0..100] of char;
Accion : string;
begin
{Traducimos de Virtual key Code a TEXTO}

GetKeyNameText(Message.LParam,@NombreTecla,100);

{Miramos si la tecla fué pulsada, soltada o repetida}

if ((Message.lParam shr 31) and 1)=1
then Accion:='Soltada' {Released}
else
if ((Message.lParam shr 30) and 1)=1
then Accion:='Repetida' {repressed}
else Accion:='Pulsada'; {pressed}

Memo1.Lines.Append( Accion+
' tecla: '+
String(NombreTecla) );
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
{Desactivamos el Hook}

if Assigned(HookOff) then HookOff;

{Liberamos la DLL}

if HandleDLL<>0 then
FreeLibrary(HandleDLL);

{Cerramos la vista del fichero y el fichero}

if FicheroM<>0 then
begin
UnmapViewOfFile(PReceptor);
CloseHandle(FicheroM);
end;

end;

end.

Graba el proyecto en el mismo directorio del proyecto de la DLL y compila la aplicación.


Si has seguido los pasos hasta aqui, deberás tener en el directorio de los dos proyectos una DLL (HookTeclado.DLL) y el ejecutable de la aplicacion receptora.
Ejecutalo, y verás como en el Memo1 irán apareciendo todas las teclas que pulses en Windows.

Si tan sólo querías un ejemplo que funcionase, no hace falta que sigas leyendo. Si quieres saber un poco más de como funciona el invento... pues aqui lo tienes, paso a paso:

Vamos a partir del evento OnCreate de la aplicacion:

Primero, ponemos el Memo1 a readonly. Imagina para qué, o mejor, prueba a no ponerlo, a ver que pasa... :)

procedure TForm1.FormCreate(Sender: TObject);

begin
{No queremos que el Memo maneje el teclado...}

Memo1.ReadOnly:=TRUE;


Ahora, cargamos la DLL, que supondremos que estará en el mismo directorio que nuestro ejecutable. Si hubiera algún problema a la hora de cargarla, generamos una excepcion, de tal forma que el código siguiente no se ejecutaría.

HandleDLL:=LoadLibrary( PChar(ExtractFilePath(Application.Exename)+

NombreDLL ) );
if HandleDLL = 0 then raise Exception.Create('No se pudo cargar la DLL');

* Una vez cargada la DLL, buscamos las dos funciones que deberian estar en ella. Si no están... pues excepcion al canto.

@HookOn :=GetProcAddress(HandleDLL, 'HookOn');

@HookOff:=GetProcAddress(HandleDLL, 'HookOff');

IF not assigned(HookOn) or
not assigned(HookOff) then
raise Exception.Create('No se encontraron las funciones en la DLL');


* Ahora nos creamos un fichero mapeado en memoria, el cual usaremos para guardar el handle de nuestra form, así la DLL sabrá a quien ha de enviarle el mensaje con la tecla que se ha pulsado con solo leer de dicho fichero.

{Creamos el fichero de memoria}

FicheroM:=CreateFileMapping( $FFFFFFFF,
nil,
PAGE_READWRITE,
0,
SizeOf(Integer),
'ElReceptor');

{Si no se creó el fichero, error}
if FicheroM=0 then
raise Exception.Create( 'Error al crear el fichero');

{Direccionamos nuestra estructura al fichero de memoria}
PReceptor:=MapViewOfFile(FicheroM,FILE_MAP_WRITE,0,0,0);

* Una vez que tenemos el fichero mapeado en memoria, y una vista hacia el, grabamos el handle de la form en ella, y activamos el Hook, llamando a la procedure HookOn de la DLL:


{Escribimos datos en el fichero de memoria}
PReceptor^:=Handle;
HookOn;
end;

* Bien, ahora veamos que pasa en nuestra DLL al llamar a la función HookOn:

procedure HookOn; stdcall;
{Procedure que instala el hook}

begin
HookDeTeclado:=SetWindowsHookEx(WH_KEYBOARD, @CallBackDelHook, HInstance , 0);
end;

Como ves, no hay más que una llamada a SetWindowsHookEx, para instalar un hook a nivel de sistema (0 en el ultimo parámetro) que ejecutará la función CallBackDelHook con cada mensaje que capture.

* Veamos que hace la funcion CallBackDelHook cuando es ejecutada por el hook:


Primero, se asegura que la funcion ha sido llamada por un nuevo evento de teclado, mediante el if code=HC_ACTION.

function CallBackDelHook( Code : Integer;
wParam : WPARAM;
lParam : LPARAM
) : LRESULT; stdcall;

{Esta es la funcion CallBack a la cual llamará el hook.}

begin
{Si una tecla fue pulsada o liberada}

if code=HC_ACTION then
begin

Si es así, es decir, que es un nuevo evento de teclado que hay que atender... lo primero que debemos hacer es buscar el handle de la aplicación a la que debemos enviar el mensaje con los datos de la tecla pulsada/soltada, el cual hemos guardado en un fichero de memoria desde la aplicacion, así que, intentamos abrir el fichero, y leer dicho handle, y si todo va bien, enviamos el mensaje mediante un PostMessage:

{Miramos si existe el fichero}

FicheroM:=OpenFileMapping(FILE_MAP_READ,False,'ElReceptor');
{Si no existe, no enviamos nada a la aplicacion receptora}

if FicheroM<>0 then
begin
PReceptor:=MapViewOfFile(FicheroM,FILE_MAP_READ,0,0,0);
PostMessage(PReceptor^,CM_MANDA_TECLA,wParam,lParam);


una vez enviado el mensaje, nos deshacemos del fichero de memoria:

UnmapViewOfFile(PReceptor);
CloseHandle(FicheroM);
end;
end;

luego, debemos llamar al siguiente hook que haya instalado.

{Llamamos al siguiente hook de teclado de la cadena}

Result := CallNextHookEx(HookDeTeclado, Code, wParam, lParam)
end;

Bien, tenemos instalado un hook, que captura los eventos de teclado y los reenvia a nuestra aplicacion... ¿cual es el siguiente paso?, claro, hacer algo para recibirlo ¿no crees?.
Tendremos que capturar el mensaje de usuario que nos hemos definido:

const
CM_MANDA_TECLA = WM_USER + $1000;

lo cual conseguiremos añadiendo esta linea en la parte private de la form:

procedure LlegaDelHook(var message: TMessage); message CM_MANDA_TECLA;
y claro, la correspondiente procedure en la parte implementation:

procedure TForm1.LlegaDelHook(var message: TMessage);
var
NombreTecla : array[0..100] of char;
Accion : string;
begin
{Traducimos de Virtual key Code a TEXTO}

GetKeyNameText(Message.LParam,@NombreTecla,100);

{Miramos si la tecla fué pulsada, soltada o repetida}

if ((Message.lParam shr 31) and 1)=1
then Accion:='Soltada' {Released}
else
if ((Message.lParam shr 30) and 1)=1
then Accion:='Repetida' {repressed}
else Accion:='Pulsada'; {pressed}

Memo1.Lines.Append( Accion+
' tecla: '+
String(NombreTecla) );
end;



En este ejemplo, simplemente traduzco los datos de la tecla que se ha pulsado/liberado, traduciendola a su nombre de tecla y añadiendola al TMemo.
Si quieres más informacion sobre los parámetros que recibirá la funcion, revisa el fichero de ayuda Win32.hlp buscando el topic 'KeyboardProc'.
Ahí verás el significado de los parámetros wParam y lParam que recibirás en la función.

Por ultimo, nos queda deshacer todo este tinglado cuando salgamos de la aplicación ¿no?. Vayamos con el evento OnDestroy de la aplicación:

Primero, desinstalamos el hook, llamando a la funcion HookOff de la DLL. Ojo, hay que usar el if Assigned, pues si hubiese habido algun problema al cargar la DLL en el OnCreate... ahora intentariamos ejecutar algo que no fue inicializado.

procedure TForm1.FormDestroy(Sender: TObject);
begin
{Desactivamos el Hook}

if Assigned(HookOff) then HookOff;

Ahora nos deshacemos de la DLL (si fué cargada):


{Liberamos la DLL}

if HandleDLL<>0 then
FreeLibrary(HandleDLL);


Y nos deshacemos del fichero mapeado en memoria:

{Cerramos la vista del fichero y el fichero}

if FicheroM<>0 then
begin
UnmapViewOfFile(PReceptor);
CloseHandle(FicheroM);
end;
end;

Para aquellos que no les ha funcionado, no olviden asociar los eventos de OnCreate y OnDestroy de la forma principal, con los eventos correspondientes.

Eso es básico, y no se debería de olvidar.

Ocultar La Aplicación De La De La Barra De Tareas.

La opción típica de

ShowWindow(Application.Handle, SW_HIDE);

ya no es válida en los últimos Windows. Al menos en XP funciona la que envía:

Andrés Galluzzi, a Trucomanía


procedure TfrmMain.BtnHideFromTaskBarClick(Sender: TObject);
begin
ShowWindow( Application.Handle, SW_HIDE );
SetWindowLong( Application.Handle, GWL_EXSTYLE,
GetWindowLong(Application.Handle, GWL_EXSTYLE) or
WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
ShowWindow( Application.Handle, SW_SHOW );
end;



Obtener el nombre de usuario.
(José Luis Freire)

Se obtiene a través de la función del API de Windows, GerUserName.

procedure TForm1.Button1Click(Sender: TObject);

var
buffer : array[0..255] of char;
Tambuffer : DWORD;
begin
Tambuffer := sizeOf(buffer);
GetUserName(@buffer, tambuffer);
ShowMessage(buffer);
end
;

Cómo Cambiar La Resolución De Pantalla Desde El Programa
function DynamicResolution(X, Y: word): BOOL;
var lpDevMode: TDeviceMode;
begin
Result := EnumDisplaySettings(nil, 0, lpDevMode);
if Result then
begin
lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT;
lpDevMode.dmPelsWidth := X; lpDevMode.dmPelsHeight := Y;
Result := ChangeDisplaySettings(lpDevMode, 0) = DISP_CHANGE_SUCCESSFUL;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if DynamicResolution(800, 600) then ShowMessage('Resolución a: 800*600');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if DynamicResolution(640, 480) then ShowMessage('Resolución a: 640*480');
end;


Cómo saber la posición del ratón en cualquier punto de la pantalla.

Creamos un Timer, por ejemplo, para la visualización, supongamos que con un intervalo de 100 y en el evento OnTimer un
procedure de esta forma:

procedure TForm1.Timer1Timer(Sender: TObject);

var position:tpoint;
begin
getcursorpos(position);
label1.Caption:='X: '+inttostr(position.x)+' Y: '+inttostr(position.y);
end;
end.

y siguen y siguen los trucos del xp

Copiar, cortar, pegar, arrastrar y colocar


Arrastrar y colocar
Para mover un objeto, con el botón primario del mouse arrástrelo desde una carpeta a la otra de la misma unidad. Para forzar un movimiento, utilice MAYÚSC+botón primario.
Para copiar un objeto, utilice el botón primario del mouse para arrastrar una carpeta a otra unidad. Para forzar una copia, utilice CTRL+Izquierda y arrastre.
Para crear un acceso directo a un ejecutable, utilice el botón primario del mouse para arrastrar un archivo ejecutable hasta una nueva carpeta.
Utilice el botón secundario del mouse para arrastrar un objeto desde una carpeta a otra y, a continuación, seleccione "Crear iconos de acceso directo aquí" para crear un acceso directo a dicho objeto. Las notaciones del icono indican qué ocurrirá: el signo más (+) para una copia, una flecha para un acceso directo y, si no hay ningún símbolo, para un movimiento. Presione ESC mientras arrastra el objeto para cancelar la acción.
Para crear accesos directos a documentos: con el botón secundario del mouse, arrastre una selección desde un documento OLE (como por ejemplo Word 95) sobre el Escritorio o una carpeta y, a continuación, seleccione "Crear acceso directo a documento aquí". Este acceso directo al documento abrirá el documento en aquel lugar originado por el acceso directo.
Para crear documentos temporales: con el botón primario del mouse, arrastre una selección desde un documento OLE (como por ejemplo de 95) sobre el Escritorio o una carpeta para crear un documento temporal (un documento temporal es un objeto OLE que contiene la selección).
Coloque el documento temporal sobre otro documento o de vuelta sobre el documento original para insertarlo o procesarlo (lo que corresponda).
Arrastrar y colocar con el botón secundario del mouse
Arrastrar y colocar con el botón secundario del mouse funciona igual que con el botón primario, con la diferencia de que al colocar el objeto aparece un menú. El menú de las carpetas presenta estos comandos: Mover aquí, Copiar aquí, Crear iconos de acceso directo aquí. El menú de objetos OLE incluye: Crear almacén temporal aquí, Mover almacén temporal aquí, Crear icono de acceso directo aquí.
Arrastrar a la barra de tareas
Podrá arrastrar objetos desde un documento abierto a otro (cubrir uno con el otro) arrastrando el objeto hasta la barra de tareas del documento de destino, esperando hasta que aparezca la ventana de destino y, a continuación, arrastrando el objeto hasta la ventana de destino.

Acceso rápido al Explorador de Windows


Para acceder rápidamente al Explorador de Windows nada tan sencillo como hacer clic con el ratón derecho sobre el botón Inicio, luego clic en Explorar y se abrirá el Explorador.

Acelera los menús emergentes


En Windows XP también existe la posibilidad de acelerar los menús desplegables del menú inicio, para conseguirlo sigue estos pasos:
Haces clic con el ratón derecho sobre una zona libre del Escritorio.
A continuación seleccionas Propiedades y luego pincha en la pestaña Apariencia.
En la ventana Apariencia pincha sobre el botón Efectos.
En esta ventana Efectos desactiva la opción Usar el efecto de transición siguiente para menús de información e información sobre herramientas, y pulsa sobre el botón Aceptar

Activar el suavizado de fuentes


Windows XP ofrece la posibilidad de suavizar las fuentes y los bordes. Parara activar el suavizado de las fuentes sigue estos pasos:
Haces clic con el ratón derecho sobre una zona libre del Escritorio y luego en Propiedades
Una vez estás en la pantalla de Propiedades pulsa sobre la pestaña Apariencia.
Ahora pulsa sobre el botón Efectos y marca la casilla de verificación Usar el siguiente método para suavizar los bordes de las fuentes de pantalla.
Después de haber marcado la casilla podrás acceder a la lista pulsando sobre la flechita y escoge la opción Clear Type.
Finalmente pulsa el botón Aceptar para que se guarden los cambios.

Activar o Desactivar la Hibernación


La hibernación de nuestro sistema lo que hace es reservar un espacio en el disco duro para almacenar lo que tiene en memoria y así poder volver al punto en el cual se encontraba el PC antes de hibernar. La mayoría de los usuarios no hacemos uso de la opción de hibernar, por lo que desactivar esta opción liberará el espacio reservado en nuestro disco duro para esta tarea.
La forma de desactivar o Activar la hibernación es la siguiente:
Haces clic en el botón Inicio, y luego en Panel de Control.
Ahora haces doble clic sobre el icono Opciones de Energía.
Luego seleccionas la pestaña Hibernación y es aquí donde debes activar o desactivar la hibernación.
Para terminar acepta todo y listo

Actualiza los iconos de tu escritorio


El sistema refresca los iconos del escritorio con demasiada frecuencia, esto puede ser debido a que la caché de iconos esta llena. En ese caso deberemos incrementar el tamaño de la caché y lo haremos de la siguiente forma:
Hacemos clic en el botón Inicio y luego en Ejecutar, después escribimos Regedit y pulsamos el botón Aceptar.
Una vez estemos en el Registro de Windows nos desplazaremos por la siguiente cadena:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer
Ahora crearemos o modificaremos el valor alfanumérico “Max Cached Icons” con el contenido “8192”. De esta forma incrementaremos el tamaño de la caché de iconos a 8 Mbytes.
Para terminar cerramos el Registro de Windows y reiniciamos el ordenador para que tengan efecto los cambios realizados.

Automatizar los subprogramas de Java


En algunas ocasiones y por motivos diversos podemos tener la opción de Automatización de los subprogramas de Java deshabilitado para habilitarlos seguiremos estos pasos:
Abrimos el Navegador de Internet Explorer 6 y pulsamos en el menú Herramientas, sobre Opciones de Internet
Seguidamente pulsamos sobre la ficha Seguridad y luego sobre el botón Nivel personalizado.
A continuación buscaremos la Opción de Automatización de los subprogramas de Java y activaremos la casilla Activar.
Para finalizar Aceptamos todas las ventanas y reiniciamos el ordenador.

Bloquear rápidamente el PC


Windows XP ofrece la posibilidad de bloquear de inmediato el PC simplemente pulsando las teclas Windows + la tecla L automáticamente el PC se situará en la pantalla de bienvenida, de esta forma podemos proteger nuestros datos de miradas indeseadas, y además si alguien quiere entrar deberá teclear la contraseña, pero también podemos crear un acceso directo y lo haremos de la siguiente forma:
Haz clic con el ratón derecho en una zona libre del Escritorio y selecciona Nuevo y Acceso directo.
En la pantalla de configuración de acceso directo escribe rundll32.exe user32.dll,LockWorkstation y pulsa el botón Siguiente
Ahora escribe el nombre que quieras darle al acceso directo, como por ejemplo Bloquear PC y pulsa el botón Finalizar.
Ahora con doble clic sobre este icono automáticamente irás a la pantalla de bienvenida y para volver a entrar deberás teclear la contraseña.
Aumentar la velocidad de los menús
Los menús en Windows se despliegan,quizás, en forma demasiado lenta. De hecho, tenemos que esperar casi hasta un segundo para que se despliegue la siguiente persiana.
Esta molesta "costumbre" la podemos rectificar editando el registro, ejecutando para ello el archivo regedit.exe del directorio Windows.
Una vez abierto, expandiremos la clave de nombre HKEY_CURRENT_USER.
Seguidamente, haremos lo propio con Control Panel, seleccionando la opción Desktop.
En ese momento, en la ventana de la derecha aparecerán una serie de valores.
Con el botón derecho del ratón pincharemos en un espacio en blanco, para seleccionar, consecutivamente, Nuevo y Valor de la Cadena.
Entonces se abrirá una caja donde introduciremos MenuShowDelay, y luego pulsaremos Intro. Introducida la clave, ahora vamos con el valor...
Deberá hacer doble click sobre la clave que acabamos de introducir, y en el cuadro de diálogo que sale, coloque el valor que desee: admite valores de 0-10. El 8 es un valor suficiente para que no se nos desboquen las persianas.

Velocidad correcta de CD-ROM


Una vez instalado Windows, debemos asegurarnos de que ha detectado correctamente la velocidad de nuestra unidad de CD Rom.
Para ello, abriremos las propiedades de Mi PC. Después, seleccionamos la ficha Rendimiento y luego, dentro de ésta, la opción Sistema de Archivos.
Por último, la ficha CD Rom. Allí podremos verificar o modificar la velocidad de nuestro CD Rom, además de especificar el tamaño que queremos para el caché suplementario.
Asimismo, y siguiendo el mismo camino, podremos comprobar en la ficha Disco Duro la misión principal de nuestro equipo, esto es, PC de sobremesa, portátil o servidor de red.

Evitar el autoplay de los CD


Cuando insertamos CD´s en la bandeja del nuestro CD Rom, preparados para Windows, el sistema los detecta gracias al archivo Autorun.inf y los lanza automáticamente pasados unos cuantos segundos.
Esta característica, que puede parecer provechosa, se puede convertir en un auténtico problema, sobre todo si trabajamos con CD´s habitualmente.
Si bien hay un truco para evitar esta operación, se trata de una solución "de urgencia", ya que es casi peor el remedio que la enfermedad.
El truco consiste en mantener pulsada la tecla de mayúsculas al tiempo que el sistema detecta el disco, una vez introducido.
Para evitar la detección de los discos, la solución definitiva es ir a Mi PC y en sus Propiedades seleccionar la ficha Administrador de Dispositivos.
Una vez seleccionada la unidad de CD Rom y sus Propiedades, hay que desactivar la casilla Aviso de inserción automática, dentro de la ficha Configuración del CD Rom.

Reiniciar sin resetear el equipo


Este truco es muy sencillo y de una gran utilidad. Nos permite la actualización de los componentes de Windows, sin tener que reiniciar todo el sistema.
Basta con seleccionar la opción Apagar el sistema, seleccionar Reiniciar el equipo, y mantener pulsada la tecla de mayúsculas, al tiempo que pulsamos el botón Sí en el mismo cuadro de diálogo. Inmediatamente aparecerá el mensaje "Windows se está Reiniciando".

Ayudar a la memoria en las sesiones MS-DOS


Si bien no es la solución definitiva para aquellos que "padezcan" problemas de memoria convencional a la hora de ejecutar aplicaciones MS-DOS (juegos fundamentalmente), es el remedio completo, junto con la optimización de los viejos conocidos Config.sys y Autoexec.bat.
Simplemente, el truco consiste en editar el archivo de sistema system.ini (localizado dentro del subdirectorio System del directorio Windows) y añadir en la sección [386 Enh] del mismo, la siguiente línea: LocalLoadhigh=1.
Modificar los valores de la lista desplegable de la opción Ejecutar...del menú de Inicio
1) ejecutar regedit
2) entrar en HKEY_CURRENT_USER\SOFWARE\MICROSOFT \WINDOWS\CURRENT\VERSION\EXPLORER\RUNMRU y eliminar o modificar los valores de las cadenas.
También podemos alterar el orden de aparición de los mismos cambiando el orden de las letras en la cadena MRULIST, ya que cada valor de la lista desplegable está asociado a una letra.

Cambiar el programa con el que se abre un archivo


Cuando pulsamos dos veces sobre cualquier tipo de archivo, por ejemplo un gráfico se ejecuta la aplicación asociada a ese tipo en concreto, por ejemplo el Paint, que es el que se encargará de abrirlo.
A veces nos interesará que la aplicación que lo abra sea otra distinta de la que tengamos previamente definida. Por ejemplo podríamos querer que el gráfico anterior se abriera con el Microsoft Photo Editor.
Pues bien, para ello primero seleccionaremos con el botón izquierdo el archivo a tratar. Una vez seleccionado, pulsaremos de nuevo sobre él pero esta vez con el botón derecho, pero habiendo pulsado previamente la tecla de "Mayúsculas" o "Shift". Seguidamente veremos que se nos abre el menú asociado a ese tipo de archivo, pero con una opción nueva llamada "Abrir con..." Si pulsamos sobre esa opción nos aparecerá la misma pantalla que cuando tratamos de abrir un archivo que no tiene ningún programa asociado, y en ella podremos indicarle que programa queremos utilizar. Si el programa no aparece en esa lista, tenemos la opción de indicarle dónde se encuentra dicho programa pulsando sobre el botón "otros". Pero para ello necesitaremos saber el nombre exacto del programa y la ruta en donde se encuentra.
Acto seguido sólo nos queda marcar la casilla "Utilizar siempre este programa para abrir este tipo de archivo". Si no la marcamos, igualmente se ejecutará dicha aplicación, pero sólo para esta ocasión.

Abrir un archivo con más de un programa


Muchas veces nos gustaría poder abrir un mismo tipo de archivo con diferentes programas. Por ejemplo cuando pulsamos dos veces sobre un archivo html normalmente se ejecuta el navegador y nos muestra la página, pero puede que lo que nos interese en ese momento sea editarlo mediante el nuestro editor html favorito, o directamente "a mano" con el Block de Notas (Notepad) o incluso puede que nos interese escojer entre verlo con el Navigator de Netscape o el Explorer de Microsoft en el caso de que tengamos ambos instalados.
Bien, pues todas estas opciones y otras que se nos ocurran podemos tenerlas definidas y acceder a ellas mediante el botón derecho de nuestro ratón.
Los pasos a realizar son los siguientes:
- Abrimos "Mi Pc" o el explorador de Windows.
- Menú "Ver" y "Opciones de Carpeta", después pulsamos sobre la ficha "Tipos de archivo"
Aquí podemos ver que ya tenemos algunas asociaciones creadas, por ejemplo Abrir, que es la predeterminada (está en negrita) es la que ejecuta Internet Explorer para visualizar la página, y por tanto es la que ejecutamos cuando hacemos doble click sobre el documento. La segunda (Modificar) es la que ejecuta FrontPage. Si pulsamos sobre Modificar y acto seguido pulsamos sobre el botón "Predeterminada" conseguiremos que al hacer doble click sobre un archivo de este tipo ejecute FrontPage en lugar del Explorer.
Bien, vamos ahora a añadir una nueva opción que llamaremos "Abrir con Navigator", y que nos permitirá elegir con que navegador queremos visualizar una determinada página html que tengamos guardada en nuestro disco.
- Primero pulsaremos sobre el botón "Nueva"
En el campo Acción pondremos el texto que queremos que aparezca cuando pulsemos con el botón derecho. En este caso pondremos "Abrir con Navigator". En el siguiente campo (Aplicación utilizada) pondremos la ruta y el nombre del archivo del programa a ejecutar. La ruta puede variar de una versión a otra, En las más modernas suele ser la siguiente: "C:\Archivos de Programa\Netscape\Communicator\Program\netscape.exe".(también deberemos escribir las comillas). Podemos escribirla directamente si la conocemos, o utilizar el botón "Examinar" e ir navegando por los distintas carpetas hasta encontrar el programa.
Bien, esto es todo. Pulsaremos sobre "Aceptar" en esta pantalla y en la anterior y ya sólo nos queda probarlo. Nos situaremos sobre un archivo html y después de seleccionarlo pulsaremos con el botón derecho del ratón sobre él, y deberá aparecernos una nueva opción que será la que acabamos de definir, y que al pulsar sobre ella ejecutará Navigator y nos mostrará el documento en cuestión. Recordemos que podremos definir el número de acciones que queramos y sobre cualquier tipo de archivo.

Abrir cualquier tipo de archivo con un determinado programa


Existen muchos tipos de archivos que no están registrados en Windows, y que por tanto no podemos editarlos de manera fácil pulsando con el ratón sobre ellos.
Muchos de estos archivos son símplemente de texto "plano" y podríamos editarlos perfectamente con el "Block de Notas". De hecho si el archivo posee la extensión "txt" si ocurrirá lo comentado, pero ¿que ocurre con los .BAT, LOG, ASC, BAS, INI, SYS, DOS, etc...?
Una solución podría ser asociar cada uno de estos archivos con dicho programa, pero aparte de ser un trabajo tedioso, siempre encontraremos algún archivo de texto con alguna extensión "caprichosa" que no tengamos registrada.
La solución más fácil y rápida y que además nos servirá para cualquier tipo de archivo es crear un acceso directo dentro de la carpeta "SendTo" que apunte al "Block de Notas", lo que nos permitirá pulsar con el botón derecho sobre el archivo en cuestión y acto seguido ejecutar la opción "Enviar a..." y "Block de Notas".
Para ello iremos hasta esa carpeta utilizando "Mi Pc" o el explorador de Windows. Dicha carpeta se encuentra dentro de la de Windows.
Una vez dentro de la carpeta, deberemos crear el acceso directo. Para ello accederemos al menú "Archivo" y dentro de él pulsaremos sobre "Nuevo" y "Acceso Directo".
En ella procederemos a escribir la ruta completa y el nombre del ejecutable, que en este caso será "C:\WINDOWS\Notepad.exe". Acto seguido pulsaremos sobre Siguiente.
Nos aparecerá otra pantalla pidiéndonos un nombre. En ella podemos poner "Block de Notas" y pulsar sobre "Finalizar".
Si todo ha ido bien, aparecerá el acceso directo correspondiente dentro de la carpeta "SendTo". Ya sólo nos queda probarlo...
Ahora, pulsando con el botón derecho encima de cualquier archivo y pinchando la opción "Enviar a..." nos mostrará junto con las que ya teníamos definidas una nueva que aparecerá como "Block de Notas". Pulsando sobre ella podremos ver y editar ese archivo (siempre que esté en formato texto, claro)
Mediante este mismo procedimiento podremos abir cualquier archivo con cualquier programa del que previamente hayamos creado un acceso directo en la carpeta SendTo.
Por otro lado, si el acceso directo es a una carpeta, conseguiremos poder mover cualquier archivo seleccionado a esa carpeta de una forma fácil.
Si el acceso directo lo creamos a una impresora, lo que conseguiremos será imprimir todos los documentos selecciondos en esa impresora.

Actualizar el Archivo de Registro sin reiniciar


La gran mayoría de las veces, una vez manipulado el registro debemos reiniciar el ordenador o Windows para que los cambios tengan vigencia.
Sin embargo, hay un truco útil y sencillo: teniendo cerrados todos los programas, pulsamos la combinación de teclas Ctrl+Alt+Supr, y así aparecerá la ventana de Cerrar Programa. Seleccionaremos Explorer, y entonces la pantalla se oscurecerá y aparecerá el cuadro de diálogo de Cierre de Windows.
Pincharemos en No y transcurridos unos segundos, saldrá otra ventana en la que pincharemos Finalizar Tarea.
De esta forma, actualizamos el registro ahorrando tiempo.

Solucionar problemas de apagado en Windows XP


Se a comprobado que en muchos equipos ATX, donde en anteriores versiones al Windows XP apagaban automáticamente el sistema, en Windows XP no lo hacen, mostrando el mensaje: "Ahora es seguro apagar el sistema" o incluso reiniciando en vez de apagarse.

Y este problema lo podemos solucionar mediante el registro de Windows. Para ello ejecutamos "regedit.exe" desde el menú "Inicio/Ejecutar".

Allí localizamos la siguiente clave: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon.

Una vez localizada dicha clave, comprobamos si el contenido de los valores alfanuméricos PowerDownAfterShudown y ShutdownWithoutLogon es "1", pues de lo contrario, tendremos que ponerlo con ese valor.

Otra cosa, recomiendada es: revisar en la clave HKEY_CURRENT_USER\Control Panel\Desktop si existe el valor alfanumérico PowerOffActive, cuyo contenido deberá ser "1".

Si esto aun sigue sin causar ningún cambio, lo intentaremos de otro modo:
Iniciamos la herramienta de administración del sistema, pulsando con botón derecho sobre el icono de Mi PC seleccionando "Administrar".
Una vez dentro del administrador de dispositivos, comprobamos que el apartado Ordenador, indique lo siguiente: "Equipo ACPI compatible" o "PC Estándar APM".

En este último caso, dentro del menú Ver, seleccionamos Mostrar dispositivos ocultos y nos aseguramos que el elemento "NT ATM / Legacy Interfaz mode" no tenga un marca de color rojo, pues de suceder esto tenemos que hacer lo siguiente:

Accedemos a sus Propiedades y Habilitar el dispositivo.

Ccomprobar que en las Propiedades de energía, dentro del Panel de control, en la pestaña APM se encuentre activada la opción "Habilitar la compatibilidad con la administración avanzada de energía".