From the category archives:

Windows

Snapshot: Hilos en C++ (Windows)

by Jorge Machin on September 26, 2008 · 0 comments

in C/C++, Programación, Snapshots, Windows

Una clase "quick and dirty" para crear hilos en cajas windows.

Encabezado:

#pragma once

#include <windows.h>

class CThread {

   public:

      // Constructor por defecto:

      CThread(void);

      // Destructor virtual
   
      virtual ~CThread(void);

      // Esta función inicia el hilo:

      bool start();

      // Esta función se debe sobrecargar con lo que tiene que hacer el hilo:

      virtual void run() = 0;

      // Esta función espera a que el hilo se detenga. Se debe llamar en el destructor de la clase derivada.

      void join();

   private:

      unsigned long id;

      void *threadHandle;

      static DWORD WINAPI entryPoint( void *pthis );

};

Archivo cpp:

#include "StdAfx.h"
#include "thread.h"

CThread::CThread(void) : threadHandle( NULL ) {

   MessageBox( NULL, "CThread::CThread", "Aviso", MB_OK );

}

DWORD WINAPI CThread::entryPoint( void *pthis ) {

   CThread *pt = ( CThread * ) pthis;
   pt -> run();
   return 0;

}

bool CThread::start() {

   threadHandle = CreateThread( NULL, 0, ( LPTHREAD_START_ROUTINE ) entryPoint, this, 0, &id );
   return true;

}

void CThread::join() {

   if ( threadHandle != NULL )

      WaitForSingleObject( threadHandle, INFINITE );

}

CThread::~CThread(void) {

   MessageBox( NULL, "CThread::~CThread", "Aviso", MB_OK );

   if ( threadHandle != NULL )   

      CloseHandle( threadHandle );

}

Como se dislumbra de los comentarios, para utilizarla es necesario crear una clase que herede de Cthrean y sobrecargar la función run con lo que debe hacer nuestro hilo.

{ 0 comments }

Para convertir archivos .docx, .xlsx y .pptx a versiones anteriores, una soloción es instalar en Windows, el paquete de compatibilidad de Office. Se puede bajar de la siguiente URL que no requiere ninguna validación:

http://office.microsoft.com/en-us/products/HA101686761033.aspx

No es necesario tener instalado Office. Si quiere ver los archivos es necesario tener instalado los visores correspondientes.

{ 0 comments }

Hacer imagenes de dispositivos de memoria

by Jorge Machin on April 17, 2008 · 0 comments

in Linux, Windows

Ahora es común tener algún dispositivo embebido con alguna unidad USB o tarjeta de memoria como medio de almacenamiento debido a su sencillez y que los precios de estas memorias han bajado notablemente. Aunque la mayoría utilizan el formato VFAT32, existen otros que maneja el suyo propio por razones debido al sistema operativo que utilizan o por razones de patentes.

Memoria Compact Flash
Esta memoria la utilizo en mi
Color Computer 2 como disco duro

Si deseamos tener una imagen de alguna memoria como respaldo o para edición desde nuestra PC, podemos utilizar el comando de unix dd (tanto en windows como en Linux) sin importar el formato que tenga.

En Linux

Primero debemos saber donde se encuentra nuestra tarjeta de memoria. Si tiene un formato desconocido para Linux, está no aparecerá en el directorio media ni tampoco la reportará el comando mount. Para ello debemos de apoyarnos de una utilería externa: lsscsi.

En Fedora, se instala de la forma usual:

yum install lsscsi

Obtenemos el directorio del dispositivo con:

[renato@jorge renato]$ lsscsi  --long
[0:0:0:0]    disk    ATA      ST3320820AS      3.AH  /dev/sda 
state=running queue_depth=31 scsi_level=6 type=0 device_blocked=0 timeout=60
[4:0:0:0]    cd/dvd  ATAPI    DVD A  DH16AYH   YH13  /dev/sr0 
state=running queue_depth=1 scsi_level=6 type=5 device_blocked=0 timeout=0
[6:0:0:0]    disk    Generic  USB SD Reader    1.00  /dev/sdb 
state=running queue_depth=1 scsi_level=0 type=0 device_blocked=0 timeout=60
[6:0:0:1]    disk    Generic  USB CF Reader    1.01  /dev/sdc 
state=running queue_depth=1 scsi_level=0 type=0 device_blocked=0 timeout=60
[6:0:0:2]    disk    Generic  USB SM Reader    1.02  /dev/sdd 
state=running queue_depth=1 scsi_level=0 type=0 device_blocked=0 timeout=60
[6:0:0:3]    disk    Generic  USB MS Reader    1.03  /dev/sde 
state=running queue_depth=1 scsi_level=0 type=0 device_blocked=0 timeout=60

Y ahora podemos sacar la imagen de la memoria con dd:

dd if=/dev/sdc of=memory.img bs=1M

Si se quiere pasar de una imagen a la memoria, simplemente se invierten los parámetros.

En Windows

Afortunadamente existe para windows un port del comando dd que podemos bajar de http://www.chrysocome.net/dd.

Al igual que en Linux, debemos primero saber algunos datos como la ubicación y volúmenes de la memoria. Para ello, utilizamos desde una terminal MS-DOS:

C:\Users\Jorge Machin>dd --list
rawwrite dd for windows version 0.5.
Written by John Newbigin <jn@it.swin.edu.au>
This program is covered by the GPL.  See copying.txt for details
Win32 Available Volume Information
\\.\Volume{3d581a9d-fc8d-11dc-a562-806e6f6e6963}\
  link to \\?\Device\HarddiskVolume1
  fixed media
  Mounted on \\.\c:

\\.\Volume{3d581a9e-fc8d-11dc-a562-806e6f6e6963}\
  link to \\?\DeviceHarddiskVolume2
  fixed media
  Mounted on \\.\d:

\\.\Volume{3d581aa1-fc8d-11dc-a562-806e6f6e6963}\
  link to \\?\Device\CdRom0
  CD-ROM
  Mounted on \\.\e:

\\.\Volume{3d581aec-fc8d-11dc-a562-00137227c053}\
  link to \\?\Device\HarddiskVolume3
  removeable media
  Mounted on \\.\f:

\\.\Volume{3d581af4-fc8d-11dc-a562-00137227c053}\
  link to \\?\Device\HarddiskVolume4
  removeable media
  Mounted on \\.\g:

\\.\Volume{3d581b06-fc8d-11dc-a562-00137227c053}\
  link to \\?\Device\HarddiskVolume5
  removeable media
  Mounted on \\.\h:

\\.\Volume{3d581b11-fc8d-11dc-a562-00137227c053}\
  link to \\?\Device\HarddiskVolume6
  removeable media
  Mounted on \\.\i:

NT Block Device Objects
\\?\Device\CdRom0
  Removable media other than floppy. Block size = 2048
  size is 3063644160 bytes

Virtual input devices
 /dev/zero   (null data)
 /dev/random (pseudo-random data)
 -           (standard input)

Virtual output devices
 -           (standard output)

Con esta información, ya podemos utilizar el comando dd:

dd if=\.Volume{3d581af4-fc8d-11dc-a562-00137227c053} of=memory.img bs=1M --size --progress

También se puede usar el comando dd desde cygwin si lo tiene instalado.

{ 0 comments }

Respaldo de partidas de juegos

by Jorge Machin on April 13, 2008 · 2 comments

in Videojuegos, Windows

En este post iré poniendo mi acordeón de las rutas de los archivos de las partidas de algunos de los video juegos que me han costado algo de tiempo terminar. Parece increible pero a veces las guardo más que los listados de mis programas.

- Call of Cthulhu

\mi_usuario\Documentos\Bethesda\Call of Cthulhu

- Dreamfall

\mi_usuario\AppData\Local\VirtualStore\Program Files\Funcom\Dreamfall

Nota: AppData es una carpeta oculta.

- Oblivion

\mi_usuario\MyGames\Oblivion\saves

- Resident Evil 4

En Windows Vista:

/mi_usuario/AppData/Local/VirtualStore/Program Files/CAPCOM/resident evil 4/SaveData.dat

Nota: AppData es una carpeta oculta.

{ 2 comments }

Problemas y soluciones a la Vista

by Jorge Machin on September 2, 2007 · 0 comments

in Videojuegos, Windows

Finalmente me llegó la hora de jugar un rato con Windows Vista y para mi mala fortuna, los rumores en sitios de noticias y blogs sobre las incompatibilidades, gastos de recursos y problemas en general de Windows Vista no eran exagerados (2007). Obviamente estoy conciente que un cambio fuerte de versión siempre viene acompañado de este tipo de cosas. De hecho, me tocó vivir algo similar ya hace bastantes años cuando emigré de Windows 3.11 a Windows 95. Aunque en aquella ocasión, la diferencia tecnológica era tanta, que daba gusto actualizarse y soportar uno que otro bug a cambio de tener un mejor multiproceso y una mejor interface gráfica. Afortunadamente, en aquella ocasión, los fabricantes y Microsoft se preocuparon por sus clientes y no tardaron mucho en tener nuevas versiones de sus controladores. Ahora, tristemente, parece que no es el caso.

Windows Vista
Windows Vista en toda su gloria

Dejando atrás el negativismo, en este post iré poniendo los problemas con los que me he encontrado y como los he ido solucionado. Espero que al pasar el tiempo, Microsoft y las compañías de software/hardware vayan arreglando sus problemas para que pueda disfrutar de los juegos de PC/programas y aparatos que me ayudan a ser productivo y quitarme la tensión del trabajo.

Las cosas que en teoría el dinero puede arreglar

Impresoras Lexmark como la X83 no tienen soporte y no lo tendrán jamás.

Seguramente la solución más sencilla es comprarse una nueva impresora, pero creo que por el momento (2007), tendré que imprimir en la máquina Linux y switchearme a XP cuando quiera usar el scanner.

Cámaras Handycam como la TRV-22 de Sony, no sirven cuando se usa conectandolas por medio de usb.

Pues sí, en Windows Vista no esta soportado el USB streaming; por lo que la única manera de usarla es con una tarjeta Firewire.

No son recomendables los programas Nero 6 que venían gratis con unidades de DVD

La nueva versión cuesta alrededor de 60 a 70 dólares e incluye soporte para HD-DVD y Blue-ray. Aunque por el momento prefiero switchearme a XP para seguir usándolo; cuando se popularice alguno de los medios de alta definición y me compre alguna unidad, seguramente está incluirá de igual forma una versión gratis.

Las cosas que un nuevo driver o programa puede arreglar

Los juegos de XP al correrse en Vista no soportan EAX

Esta fue una de las cosas que más me dolió, porque el uso que le doy a Windows en mi casa es escencialmente para jugar y cuando hago uno que otro outsourcing. El problema se debe a la incompatibilidad provocada al remover el llamado "Vendor Extension Mechanism" en la implementación de DirectSound de Windows Vista, el cual era utilizado por muchos juegos para comunicarse con las tarjetas de Creative.

Para solventar este problema, Creative desarrolló un programa llamado ALchemy que una vez identificando el juego, intercepta las antiguas llamadas de EAX o DirectSound3D para enviarlas a través de OpenAL. Las malas noticias son que no todos los juegos están soportados y los posedores de tarjetas Audigy tienen que pagar alrededor de 9 dólares por tenerlo. No hay ningún costo para los afortunados posedores de tarjetas X-Fi.

Las cosas que un cambio en la configuración puede arreglar

Aero hace que el ventilador de la tarjeta de video este prendido gran parte del tiempo

Al requerir un modo gráfico con efectos, es más común que tengamos que escuchar el ventilador de la tarjeta de sonido; cosa imperseptible cuando jugamos pero bastante molesta cuando se trabaja solo en la casa o en la madrugada.

Aero hace que blender funcione incorrectamente con tarjetas Intel

No se borran algunos menús o tienen sombras negras. Además que la ventana de rendereo no muestra nada hasta que se magnifica.

Para desactivar aero:

1. Abrir el Panel de Control.

2. Click en Apariencia y Personalización.

3. En Personalizacion, click en Cambiar la combinación de colores.

4. En esquema de color cambiar a Básico de Windows Vista.

aero
Pantalla para desactivar Aero

Aero no le quita rendimiento o memoria a su máquina; por lo que no es necesario desactivarlo si tiene un ventilador silencioso en su tarjeta de video. En algunos foros leí que nvidia estaba buscando la forma de solventar este problema.

Además es buena idea aplicar estos hotfixes:

http://www.nvidia.com/object/windows_vista_hotfixes.html

Las cosas que una nueva programación puede arreglar

La función ShellExecute del API de Win32 en Windows Vista ya no reconoce al / como separador de directorios.

Pues aquí no hay de otra... a modificar las rutas de los programas que tiren programas o documentos usando dicha función.

Juegos que ya no corren

Fahrenheit

Lo logré instalar modificando con orca el archivo de instalación, pero nunca arranca a la hora de correr.

{ 0 comments }