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

lunes, 17 de diciembre de 2007

comandos de ms-dos

Comandos bajo MSDOS en Windows XP

Para acceder a la consola de comandos, tan sólo tendremos que ir al menú Inicio, seleccionar la opción ejecutar y escribir cmd.exe

Archivos y sistemas de ficheros:

cacls - Permite modificar los permisos en ficheros y carpetas, permitiendo o prohibiendo a cada usuario leer, escribir o modificar el contenido de dichos archivos o carpetas.

chkdsk- Comprueba el estado de una partición y repara los daños en caso de que encuentre alguno. Si lo ponemos sin ningún parámetro simplemente escaneará la partición, si queremos que además corrija los errores, deberemos añadir la opción /F, es decir, chkdsk /F

cipher- Permite cifrar archivos, directorios o particiones siempre que se encuentren en el sistema de archivos NTFS.

comp- Compara archivos o carpetas y muestra las diferencias existentes entre ellos.

compact- Permite comprimir archivos o carpetas para ahorrar espacio en el disco duro. Para comprimir los archivos deberemos utilizar el modificador /c y para descomprimirlo en modificador /u. Por ejemplo, para comprimir la carpeta c:\pruebas debemos utilizar el comando compact /c c:\pruebas y para descomprimirla compact /u c:\pruebas

convert- Convierte particiones FAT ó FAT32 a NTFS. Antes de utilizar este comando es recomendable realizar una copia de seguridad puesto que es posible que durante la conversión se pierdan datos.


defrag- herramienta para el intérprete de comandos que nos permitirá defragmentar volúmenes.

diskpart- utilidad con la que administraremos las particiones de nuestros discos. Al introducir *diskpart* en el intérprete de comandos, nuestro prompt se cambiará por DISKPART>. Con *diskpart /?* obtendremos ayuda sobre esta utilidad y para volver a c/ debemos escribir la palabra EXIT.

driverquery- Obtendremos una lista de los controladores de sistema y sus propiedades.

find y findstr-Estos comandos buscan cadenas de textos en el interior de uno o varios archivos. Sin embargo, el comando findstr ofrece más opciones de búsqueda que el comando find.


fsutil- Con este comando podemos administrar muchos aspectos de nuestro sistema, desde consultar el espacio libre en un volumen, hasta administrar las cuotas de usuario.

getmac- Con esta utilidad obtendremos la dirección MAC (Media Access Control) del adaptador de red.

gpresult- Conseguiremos el RSOP (Resultant Set Of Policies), es decir, la configuración de directivas de grupo y la configuración del usuario.

iexpress- Este comando lanzará un asistente para crear archivos comprimidos .CAB autodescomprimibles.

netsh- La herramienta de configuración de red. Escribiendo *netsh* entraremos en la herramienta y nuestro prompt se cambiará por NETSH>. Con *netsh /?* aprenderemos más sobre esta herramienta.

openfiles- Herramienta que permite al administrador mostrar o desconectar archivos abiertos a los que estén accediendo de forma remota otros usuarios.

recover- Con este comando intentaremos recuperar toda la información legible de un disco dañado.

reg- La herramienta de edición del registro en modo texto. Con ella podremos exportar, copiar, restaurar, comparar registros y muchas otras tareas.

sfc- El comprobador de archivos de sistema verificará todos los archivos críticos y reemplazará aquellos que nosotros o alguna aplicación hayan modificado o reemplazado con la versión oficial de Microsoft.


Configuración del sistema:


bootcfg: Permite ver y modificar las entradas del archivo boot.ini. Estas entradas nos permiten seleccionar con que sistema operativo deseamos iniciar el equipo.

control userpasswords2: Permite modificar las claves y los permisos de los diferentes usuarios, así como requerir la pulsación de control+alt+suprimir para poder iniciar sesión, haciendo el inicio de sesión más seguro.


driverquery: Hace un listado de todos los drivers instalados en el sistema y muestra información sobre cada uno de ellos.

dxdiag: Lanza la herramienta de diagnóstico de Direct X, con la cual podremos comprobar la versión Direct X que tenemos instalada y permite comprobar mediante tests que todo lo referente a estos controladores funcione correctamente.

gpresult: Muestra información sobre las políticas de grupo aplicadas a un usuario.

gpupdate: Vuelve a aplicar las políticas de grupo.

msconfig: Desde esta aplicación en modo gráfico podremos seleccionar que programas y servicios se cargan durante el inicio de Windows así como los sistemas operativos que el usuario puede seleccionar para iniciar el ordenador.

pagefileconfig: Permite configurar el archivo de paginación de Windows.

prncnfg: Muestra información sobre las impresoras instaladas

prnjobs: Muestra información sobre los trabajos de impresión en cola.

sc: Este commando nos permite administrar los servicios, ya sea iniciar uno, detenerlo, mandarle señales, etc.

sfc: Este comando permite buscar archivos del sistema dañados y recuperarlos en caso de que estén defectuosos (es necesario el CD de instalación del sistema operativo para utilizarlo). Para realizar una comprobación inmediata, deberemos ejecutar la orden sfc /scannow.

systeminfo: Muestra información sobre nuestro equipo y nuestro sistema operativo: número de procesadores, tipo de sistema, actualizaciones instaladas, etc.

taskkill: Permite eliminar un proceso conociendo su nombre o el número del proceso (PID).

tasklist: Realiza un listado de todos los procesos que hay. Útil si deseamos eliminar un proceso y no conocemos exactamente su nombre o su PID.


Redes:


arp: Muestra y permite modificar las tablas del protocolo ARP, encargado de convertir las direcciones IP de cada ordenador en direcciones MAC (dirección física única de cada tarjeta de red).

ftp: Permite conectarse a otra máquina a través del protocolo FTP para transferir archivos.

getmac: Muestra las direcciones MAC de los adaptadores de red que tengamos instalados en el sistema.

ipconfig: Muestra y permite renovar la configuración de todos los interfaces de red.

nbtstat: Muestra las estadísticas y las conexiones actuales del protocolo NetBIOS sobre TCP/IP, los recursos compartidos y los recursos que son accesibles.

net: Permite administrar usuarios, carpetas compartidas, servicios, etc. Para un listado completo de todas las opciones, escribir net sin ningún argumento. Para obtener ayuda sobre alguna opción en concreto, escribier net help opción.

netsh: Este programa en modo consola permite ver, modificar y diagnosticar la configuración de la red

netstat: Mediante este comando obtendremos un listado de todas las conexiones de red que nuestra máquina ha realizado.

nslookup: Esta aplicación se conecta a nuestros servidores DNS para resolver la IP de cualquier nombre de host.

pathping: Muestra la ruta que sigue cada paquete para llegar a una IP determinada, el tiempo de respuesta de cada uno de los nodos por los que pasa y las estadísticas de cada uno de ellos.

ping: Poniendo detrás del comando ping el nombre o la dirección IP de la máquina, por ejemplo ping 192.168.0.1 enviaremos un paquete a la dirección que pongamos para comprobar que está encendida y en red. Además, informa del tiempo que tarda en contestar la máquina destino, lo que nos puede dar una idea de lo congestionada que esté la red.

rasdial: Permite establecer o finalizar una conexión telefónica.

route: Permite ver o modificar las tablas de enrutamiento de red.

tracert: Muestra el camino seguido para llegar a una IP y el tiempo de respuesta de cada nodo.

jueves, 22 de noviembre de 2007

Cambiar de ip con Modem De Telmex o 2wire

Creo que a muchos nos ha pasado que cuando queremos bajar mas de un archivo de las paginas de Rapidshare Depositfiles, y servidores similares, estos detectan tu ip, y no te permiten descargar hasta pasado cierto tiempo... y la verdad esto es bastante desesperante sobre todo cuando los archivos que estas descargando los pueden eliminar, por quien sabe que razon verdad.


Lo que puedes hacer es muy sencillo (teniendo en cuenta que tengas un modem 2wire de telmex, me imagino que ha de funcionar similarmente para los demas).

Abres el explorador de Internet, cualquiera que utilices, ya sea, mozila firefox o internet explorer, opera, Etc. y pones 192.168.1.254 y enter.

Esto es para poder eccesar a la pagina de configuracion del modem, una vez, que hayas entrado a la configuracion, te vas a la seccion de "Banda Ancha" y anotas la ip que aparece, solo con fines de referencia,

El das click a configuracion avanzada, en la parte superior derecha, esta activada "Obtener dirección IP automáticamente"; pues activas "Configurar manualmente la configuración de la dirección IP:" y se activara una caja de texto en la cual vas a poner la ip que tenias, pero cambiando la última parte

Ejemplo:
ip que tenias: 189.187.15.11
ip que pondrias 189.187.15.10
Por último guardas.

El último grupo de numeros es el que debes de cambiar, sin rebasar el 255, osea que el rango que debes poner va desde el 1 hasta el 255. Si cambias uno de los otros grupos de numeros la ip ya no funcionara de ninguna forma.

Esto no te garantiza que cualquier ip que pongas, te va a funcionar, ya que alguna ip pudiese estar ocupada, por otro modem, recuerda que la ip, es el que identifica a cada maquina, o a cada peticion que se haga en internet, por lo que no puede existir ninguna ip repetida.

por lo cual si la ip que pusiste esta ocupada, a el modem le predera un led de color rojo, indicando que no hay internet, esto no hay ningun problema, puedes seguir amuentando el numero, hasta que lo consigas, no te preocupes por tu modem, no le pasara nada, ya que estos son procesos que regularmente los hace tu modem.

bueno pues suerte

jueves, 25 de octubre de 2007

historia de windows

una peuqña reseña de lo que ha sido el boot de windows

martes, 23 de octubre de 2007

Recuperar Contraseñas de Windows (OphCrack)

Buscando Tonterias y cosas por el estilo me encontré un programita para darle en la madre a las contraseñas de windows tanto del xp como del vista WOW si del vsita Tañen,
el programa se llama OphCrack... y si como se imaginan esto solo podía ser por linux, osease que truena las de linux como las de windows (la primera no la he comprobado), el sistema de OphCrack, trabaja sobre el sistema SAM (Security Accounts Manager), que es el sistema que se encarga de la seguridad de casi todos los Windows,

para recuperar la contraseña es muy sencillo, lo que debes de hacer es lo siguiente:
te bajas la imagen del archivo aqui
quemas la imagen en un cd
en el equipo en el que vallas a recuperar la contraseña, te aseguras de que tenga el boot primario en el cd
y cuando la prendas metes el cd par que incie desde el cd, lo dejas que corra, y listo, ya tienes las contraseñas de los o del usuario.

coste, pero coste que la información es mera informativa, nunca para lucrar, solo para informar

aqui les dejo el vídeo par que vena que si jala


sábado, 20 de octubre de 2007

Windows Xp Edicion Desatendida (EU Unattended Edition)


que onda jóvenes, buscando pendejadas y chingaderas, me encontré con la versión desatendida del windows xp con el paquete de servicios (SP) 2, y con unas cuantas mejoras y eliminacion de software, que no valia la pena tener instalado en el equipo, bueno para usuarios convencionales que solo utilizan la mínima parte del windows.

a el chavo que se dedicaba a este cotorreo, el que lo modificaba, lo obligaron a que cerrara la pagina, por motivos que ya todos hemos de imaginar... aqui les dejo la pagina para que chequen su despedida, casi me hace llorar..

http://www.windowsue.com/
y aqui esta lo que habia en su pagina:

Actualizaciones:

msxml2.msi
msxml2sp6-KB887606
msxml4-KB927978
msxml6_x86.msi
WindowsInstaller-KB893803-v2
WindowsMedia-KB911564
WindowsMedia6-KB925398-v2
WindowsMedia6-KB925398
WindowsMedia9-KB917734
WindowsUpdateAgent30-x86.exe

KB873333 KB873339 KB885222 KB885250 KB885626
KB885835 KB885836 KB886185 KB887472 KB887742
KB887797 KB888111 KB888113 KB888302 KB889527
KB890046 KB890830 KB890859 KB891781 KB893086
KB893357 KB893756 KB894391 KB896256 KB896358
KB896422 KB896423 KB896424 KB896428 KB896688
KB897663 KB898461 KB899587 KB899588 KB899589
KB899591 KB900485 KB900725 KB900930 KB901017
KB901214 KB902400 KB904412 KB904706 KB904942
KB905414 KB905474 KB905749 KB905915 KB906569
KB907865 KB908519 KB908521 KB908531 KB909095
KB909520 KB910437 KB911280 KB911562 KB911567
KB911927 KB912812 KB912919 KB913446 KB913580
KB914388 KB914389 KB914440 KB916281 KB916595
KB916846 KB917344 KB917953 KB918005 KB918118
KB918439 KB918899 KB918997 KB919007 KB920213
KB920214 KB920342 KB920670 KB920683 KB920685
KB920872 KB921398 KB921883 KB922582 KB922616
KB922760 KB922819 KB923191 KB923414 KB923689
KB923980 KB924191 KB924270 KB924667 KB924867
KB925454 KB925486 KB925902 KB926247 KB926255
KB926436 KB927779 KB927802 KB927891 KB928090
KB928255 KB928388 KB928843 KB929120 KB929123
KB929338 KB929969 KB930178 KB930916 KB931261
KB931784 KB931836 KB933566 KB935448 KB935839
KB935840 KB936357 KB938828 KB939373

En total son 139.
He quitado algunas que ya eran obsoletas porque están sustituidas por otras más nuevas.

Características básicas:

WGA 1.7 - Parche para Windows Geniune Advantage 1.7
WU6 - Windows Update 6
DirectX 9.0c - Agosto 2007
UXTheme - UXTheme.dll modificado para soportar temas no firmadas
5.000 conexiones simultaneas sin terminar (antes 10)
SFC Deshabilitado - protección de archivos de sistemas deshabilitada
• Sin requerimientos mínimos (RAM & HDD) para la instalación
Prefetch Cache - arranque
• 95% instalable en cualquier partición - ahora ya casi no es necesario que sea C:
OEM desactivado - podrás cargar los controladores SATA desde el disquete como con cualquier Windows XP
• Windows Firewall - desactivado
• WPI ahora con barra de progreso - podrá ver lo que falta para terminar la instalación
• WPI ahora funciona en resolución 800×600 pero se recomienda 1024×768 como mínimo
• Se limpian algunos registros después de la instalación
• Limpieza automáticamente después de la instalación (temporarios)
• Ya no tiene contraseña

Lista aplicaciones que se incluyen:

1. .Net Framework 1.1 SP1 (+Up)
2. .Net Framework 2 (+Up)
3. Adobe Reader 8.1 (Lite)
4. Alcohol 120% 1.9.6.5429
5. BSPlayer Pro 2.22
6. CCleaner 1.41
7. Damn NFO Viewer
8. DVD Shrink 3.2.0.16
9. eMule 0.48a {Oficial}
10. Everest Ultimate Edition 4.0.976
11. GMail Drive 1.0.11
12. Google Toolbar 4
13. HashTab Shell Extension 1.11
14. Image Resizer Powertoy
15. ImageShack QuickLoad 1.0.36
16. Internet Explorer 7 (+ 4 Up)
17. Java RE Version 6 Up2
18. K-Lite Codec Pack 3.3.0 Standard
19. Live Messenger 8 (-Pub)
20. Microsoft Office 2003 SP2 (OGA + Up)
21. Mozilla Firefox 2.0.0.5 + Plugins
22. Nero Burning Rom 7.10.1.0 Lite
23. NOD32 Antivirus System 2.70.39
24. Windows uE Sound Scheme v2
25. Picasa 2.7
26. Windows Media Player 11
27. PowerDVD 7 Deluxe
28. PuTTY 0.60
29. QT Lite 1.11
30. Real Alternative 1.52
31. Shockwave 10.2.0.22
32. Skype 3.2.32.175
33. TaskSwitchXP Pro 2.0.11
34. TuneUp Utilities 2007 6.0.2200.0
35. Unlocker 1.8.5
36. uTorrent 1.7.2
37. Virtual Desktop Manager Powertoy
38. Winamp 5.35 Pro + MMD3 Theme
39. WinRAR 3.70
40. WinSnap 2.0.7
41. XPize 4.6 Lite
42. Yahoo! Instant Messenger 8.1 (-Pub)

Tweaks (registros para configurar opciones):

43. Desactivar la barra de idioma
44. Activar Auto-Arranque CD/USB
45. Activar carpeta TEMP clásica
46. Activar la cuenta de Administrador
47. Activar Restaurar Sistema
48. Activar IMAPI - Grabador Windows XP

Algunas especificaciones:

• .Net Framework 1.1 SP1 (+ Actualizaciones) - incluye además de SP1 - KB928366 y español
• .Net Framework 2 (+ Actualizaciones) - incluye KB928365 y español
• Adobe Reader 8.1 (Lite) - versión básica
• eMule 0.48a {Oficial} - versión oficial - no modificada
• Internet Explorer 7 (+ 4 Actualizaciones) - incluye KB929969 KB931768 KB933566 y Roots-Update: KB933566
• Live Messenger 8 (- Publicidad) - incluye parche para quitar la publicidad
• Microsoft Office 2003 SP2 (OGA + Up) - incluye OGA (Office Genuine Advantage) ademas de muchas actualizaciones
• Mozilla Firefox 2.0.0.5 + Plugins - incluye plugins para Flash, Shockwave y Windows Media Player
• Nero Burning Rom 7.10.1.0 Lite - version basica - incluye Nero Burning ROM y Nero Express
• Windows uE Sound Scheme v2 - sonidos únicos de esta versión - compilación realizada por AdrenalinE
• WinSnap 2.0.7 - versión PRO
• Yahoo! Instant Messenger 8.1 (- Publicidad) - incluye parche para quitar la publicidad

aqui les dejo los enlaces para que bajen las version, yo ya la cheque, esta muy chida y la neta, para gente que nos dedicamos a desmadrar las computadoras de los demas esta chido, metes el cd, te vas a hecharte unas cheves, te puedes poner ebrio, y no la cagas por que todo se instala,

nadas faltan los drivers que siempre van a ser problemas

http://torrents.thepiratebay.org/3759021/Windows_XP_Service_Pack_2_Unattended_Edition_version_7.3759021.TPB.torrent

http://www.gigasize.com/get.php/-1099751450/WinXP_Sp2_uE_v7_-_Bj_-_Spanish.rar

http://www.pando.com/link/preinstall?package=528B9BB227D760F452373474161AAB8F6A3803AC&key=0D283BBB422B70E0D0CB34DD02591E0B148FCC3627F32A873D8C877823765252&referer=http%3A%2F%2Fwww.taringa.net%2Fpost.php%3Fid%3D868308

http://www.megaupload.com/es/?d=GPWLZBTE

espero que les sirva

viernes, 28 de septiembre de 2007

Windows 98 falla en público

Algo se comentaba que en la presentacion de bill gates de su nuevo sistema operativo el win 98, este se habia caido, co su ya famosisima Pantalla Azul, pero no se habia demostrado nada, he aqui el video, en este video, conectan un scaner, y al detectar los drivers puffff Pantalla Azul.

Como Funciona el Disco Duro por Dentro

¿Comó funciona un disco duro? es un enigama que la mayoria de nosotros tenemos, pero eso es hasta hace tiempo aqui les muestro un video muy claro del funcionamiento de un DD, cabe mencionar que el DD ya esta un poco viejo, y e ahi de el por que suele tronar, espero que les sirva este video.



lunes, 17 de septiembre de 2007

Bloquear Pagina de Inicio

este truco se refiere a la activacion/desactivacion de la pagina de inicio y poner la pagina que uno quiere....

para realizar este truco copiamos el siguiente texto y lo pegamos en el bloc de notas, y guardamos, por ejemplo "activapagInicio.reg", no se te olvide ponerle ".reg" esta es la extencion para activar los registros.

(esta entrada de registro lo que hace es que el usuario NO pueda cambiar la pagina de incio)

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel]
"Homepage"=dword:00000001



(esta entrada de registro lo que hace es que el usuario SI pueda cambiar la pagina de incio)
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel]
"Homepage"=dword:00000000


Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\main]
"start page"= "http://rakzo-zeram.blogspot.com/"

viernes, 14 de septiembre de 2007

Compartir Impresoras DHCP

PCs con Windows95/98:

1.- Instalar la capa de protocolos TCP/IP solamente. En principio, no tiene por que estar instalado ningún otro protocolo. Esta instalación se realiza en el momento de instalar Windows95 o posteriormente desde los discos de instalación del mismo.
2.- En "Mi PC", dentro de "Paneles de Control" dar click en "Red". En "Identificacion", se debe poner como "Nombre del PC", el nombre tal y cómo se ha solicitado al pedir la dirección IP. Añadir el "Grupo de trabajo" y la "Descripcion del PC" cómo se desee. En el apartado "Configuración" debe aparecer: "Clientes para redes Microsoft" "Compartir impresoras y archivos para redes Microsoft" "TCP/IP" y el controlador para el tipo de placa de que disponga el PC. En caso de que no aparezcan alguna de estas entradas, se pueden añadir pulsando en "Agregar..." y buscando el protocolo o servicio necesitado. Al "Aceptar", posiblemente solicitara reiniciar Windows para seguir.
3.- Volver a abrir "Mi PC"/"Paneles de Control"/"Red" Picando en "TCP/IP" dos veces, se abre la ventana de "Propiedades de "TCP/IP":
En"Dirección IP", marcar "Obtener una dirección IP automáticamente"
En "Configuración DNS", tiene que estar marcado "Desactivar DNS"
En "Enlaces", marcar "Clientes para redes Microsoft" y "Compartir impresoras y archivos para redes Microsoft", si lo desea.
En "Gateway", todo debe estar en blanco.
En "Configuración WINS", marcar "Usar DHCP para resolucion WINS"
En "Avanzado", en la ventana "Propiedades" debe aparecer sólo "Ninguno".
Pulsar "Aceptar" para finalizar la configuración TCP/IP
4.- Pulsar "Aceptar" de nuevo y reiniciar Windows para que los cambios surtan efecto.
5.- Comprobar que la instalación es correcta mediante el siguiente procedimiento: En "Inicio", seleccionar "Ejecutar...". Introducid el comando winipcfg y pulsar "Aceptar" Esto ejecuta el programa de comprobación.Pulsad en el boton "Mas información>>". Ahora debe aparececer toda la información proporcionada por el servidor de bootp/dhcp.Podeis comprobar que la renueva sin problemas pulsando "Liberar todo" y luego "Renovar todo"

PC´s con Windows 2000:

1.- Abrir en "Mi PC"/"Panel de control"/"Conexiones de red y de acceso telefónico".
2.- Picar en "Conexión de área local". Picar en "Propiedades".
3.- En "Conectar usando:" debe aparecer el controlador de la tarjeta de red que tenga el PC.
4.- En los componentes seleccionados debe aparecer como único protocolo el "Protocolo Internet(TCP/IP)" y los servicios que se deseen tales como "Cliente para redes Microsoft" o Compartir impresoras y archivos para redes Microsoft"
5.- Picar dos veces en "Protocolo Internet(TCP/IP)" para abrir las propiedades.
6.- Seleccionar "Obtener una dirección IP automáticamente" y "Obtener la dirección DNS automáticamente"
7.- Pulsar en "Avanzada...". En "Direcciones IP" debe aparecer "DHCP habilitado"
8.- Picar en DNS.Debe estar picado "Anexar sufijos DNS principales y de conexiones especificas".Debe estar marcado "Anexar sufijos primarios del sufijo DNS principal.
9.- IMPORTANTE: Desactivar (desmarcar) la opción de "Registrar estas direcciones de conexiones en DNS".
10.- Pulsar en "Aceptar". Pulsar en "Acepctar" de nuevo. Y pulsar "Aceptar" por tercera vez. Pulsar "Cerrar".
11.- Reiniciar el ordenador.
12.- Comprobar la configuración obtenida por bootp/dhcp tecleando "ipconfig /all" en la linea de comandos ("Inicio"/"Programas"/"Accesorios"/"Símbolo del sistema").

PCs con Windows 3.11 + Microsoft TCP/IP:

1.- Cargar el protocolo Microsoft TCP/IP.
2.- En "Principal", abrir "Instalar Windows" y en la entrada del menú "Opciones", seleccionar "Cambiar la configuración de la red".En la ventana de "Controladores de red" debe aparecer: "Microsoft TCP/IP-32 11a" y el controlador de la placa de red de que disponga el ordenador. Picar dos veces en "Microsoft TCP/IP-32 11a".En la ventana que aparece, marcar "Enable automatic DHCP configuration"Pulsar en "Avanced" Seleccionar "Enable DNS for Windows Name Resolution"Pulsar en "OK"Pulsar en "OK".Pulsar en "Aceptar"Seleccionar del menu "Opciones", "Salir"
3.- Si en algún punto no ha podido reiniciar Windows, rearrancar el ordenador tras este proceso.

PCs con Windos 3.xx + Wsock de Peter Tattam (tcpman):

1.- Instalar el Wsock del modo usual.
2.- Picar en el icono de TCPMAN, normalmente situado en la carpeta "Inicio" o arrancado ya.
3.- En "IP address" introducir "bootp". En minúsculas y sin comillas!!!.
4.- Cerrar el TCPMAN y reiniciar windows.

PC's con NCSA y WATTCP:

1.- Instalar el software del modo usual.
2.- Editar el archivo CONFIG.TEL (habitualmente en C:\NCSA) y modificar "myip=" poniendo "myip=bootp". El resto no modificarlo.
3.- Editar el archivo WATTCP.CFG (habitualmente en C:\NCSA). Dejar solo una línea con: my_ip=bootp.

Macintosh con MacTCP:

1.- En "Paneles de Control", picar dos veces en "MacTCP".
2.- Pulsar "More..."
3.- Seleccionar en "Obtain Address" la opcion "Manual".
4.- Pulsar "OK".
5.- Poner "0.0.0.0" en la ventana "IP Address". Pulsar "More..."
6.- Poner "0.0.0.0" en la ventana "Gateway Address:"
7.- Dejar en blanco todo en "Domain Name Server Information:"
8.- Seleccionar en "Obtain Address" la opcion "Server".
9.- Pulsar "OK"
10.- Cerrar la ventana de MacTCP y reiniciar el ordenador.
Macintosh con TCP/IP:
1.- En "Paneles de Control", picar dos veces en "TCP/IP".
2.- En "Configuración", seleccionar en el campo "Utilizar" la opción "Servidor BootP". También funcionará correctamente usando "Servidor DHCP". El resto debe de estar en blanco.
3.- Cerrar la ventana "TCP/IP". Responder "Guardar" a la pregunta si se desean guardar los cambios.
4.- Reiniciar el Macintosh.

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.