viernes, 23 de julio de 2010

ColorCtrl

0

ColorCtrl es una pequeña utilidad hecha con el Visual C# 2010 que te servirá para configurar el brillo, contraste y gamma de tu pantalla, con la posibilidad de ajustar estos parámetros en cada color independientemente.

DESCARGAR SOURCE CODE

NOTA: Para que funcione requiere tener instalado ".net framework 3.5"

Comparte o puntua esta publicación ▼

Captcha graciosa

0

Intentando descargar un archivo de SharingMatrix....


Comparte o puntua esta publicación ▼

martes, 13 de julio de 2010

Explorador de archivos con c++

2

En esta entrada voy a mostrar la manera de ver el contenido de una carpeta o buscar algún archivo usando c++.

#include<windows.h>
#include<iostream>

using namespace std;

int main()
{
    WIN32_FIND_DATA FindFileData;
    HANDLE hFind;
    hFind = FindFirstFile("C:\\*", &FindFileData);

    if (hFind == INVALID_HANDLE_VALUE)
    {
        cout << "FindFirstFile failed: " << GetLastError() << endl;
        return 1;
    }

    do cout << FindFileData.cFileName << endl;
    while (FindNextFile(hFind, &FindFileData));

    FindClose(hFind);
    return 0;
}

Como se puede ver, hace uso de las funciones FindNextFile() y FindFirstFile() y de la estructura WIN32_FIND_DATA(). El primer parámetro de FindFirstFile() puede ser el nombre de un archivo o directorio y pueden usarse los caracteres '*' y '?'

Comparte o puntua esta publicación ▼

miércoles, 7 de julio de 2010

Controla el nivel de backlight de una lcd

2

Hoy en día la mayoría de los portatiles, por no decir todos permiten cambiar el nivel backlight o de luz que emite la pantalla.

Aunque me a costado he conseguido encontrar la información suficiente para poder hacer un primer ejemplo funcional, por lo menos en mi Asus EeePC, aunque estoy seguro que funciona en la mayoría.

Las primeras 25 líneas no harían falta si tienes el kit de desarrollo de drivers de Windows.

#include <windows.h>
#include <iostream>

using namespace std;

typedef struct _DISPLAY_BRIGHTNESS
{
    UCHAR ucDisplayPolicy;
    UCHAR ucACBrightness;
    UCHAR ucDCBrightness;
} DISPLAY_BRIGHTNESS, *PDISPLAY_BRIGHTNESS;

#define FILE_DEVICE_VIDEO   0x00000023
#define METHOD_BUFFERED     0
#define FILE_ANY_ACCESS     0

#define CTL_CODE(a,b,c,d) ((a)<<16 | (b)<<2 | (c)<<14 | (d))

#define IOCTL_VIDEO_QUERY_SUPPORTED_BRIGHTNESS \
    CTL_CODE(FILE_DEVICE_VIDEO, 0x125, METHOD_BUFFERED, FILE_ANY_ACCESS)

#define IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS \
    CTL_CODE(FILE_DEVICE_VIDEO, 0x126, METHOD_BUFFERED, FILE_ANY_ACCESS)

#define IOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS \
    CTL_CODE(FILE_DEVICE_VIDEO, 0x127, METHOD_BUFFERED, FILE_ANY_ACCESS)

int main(void)
{
    HANDLE hLCD = CreateFile("\\\\.\\LCD",       // open LCD device
                             GENERIC_READ,                  // access to the drive
                             FILE_SHARE_READ|FILE_SHARE_WRITE,// share mode
                             NULL,                          // default security attributes
                             OPEN_EXISTING,                 // disposition
                             0,                             // file attributes
                             NULL);

    if (hLCD == INVALID_HANDLE_VALUE)
    {
        cout << "error:" << GetLastError() << endl;
        return 1;
    }

    BYTE SupportedBrightness[256];
    DWORD nBytesReturned;

    int nRes = DeviceIoControl(
                   (HANDLE) hLCD,                           // handle to device
                   IOCTL_VIDEO_QUERY_SUPPORTED_BRIGHTNESS,  // dwIoControlCode
                   NULL,                                    // lpInBuffer
                   0,                                       // nInBufferSize
                   (LPVOID) SupportedBrightness,            // output buffer
                   sizeof(SupportedBrightness),             // size of output buffer
                   (LPDWORD) &nBytesReturned,               // bytes returned
                   NULL                                     // OVERLAPPED
               );

    if (nRes == 0)
    {
        cout << "error:" << GetLastError() << endl;
        return 2;
    }

    cout << "Niveles soportados: ";
    for (DWORD i=0; i<nBytesReturned; i++)
    {
        cout << (DWORD)SupportedBrightness[i] << ", ";
    }
    cout << endl << endl;

    DISPLAY_BRIGHTNESS DisplayBrightness;
    nRes = DeviceIoControl(
               (HANDLE) hLCD,                           // handle to device
               IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS,    // dwIoControlCode
               NULL,                                    // lpInBuffer
               0,                                       // nInBufferSize
               (LPVOID) &DisplayBrightness,             // output buffer
               sizeof(DisplayBrightness),               // size of output buffer
               (LPDWORD) &nBytesReturned,               // bytes returned
               NULL                                     // OVERLAPPED
           );

    if (nRes == 0)
    {
        cout << "error:" << GetLastError() << endl;
        return 3;
    }

    cout << "DisplayPolicy: " << (int)DisplayBrightness.ucDisplayPolicy << endl
         << "ACBrightness: " << (int)DisplayBrightness.ucACBrightness  << endl
         << "DCBrightness: " << (int)DisplayBrightness.ucDCBrightness << endl
         << endl;

    system("PAUSE");

    DISPLAY_BRIGHTNESS ON = {2,36,36};  // eeePC max
    DISPLAY_BRIGHTNESS OFF = {2,1,1};
    while (!GetAsyncKeyState(VK_ESCAPE))
    {
        Sleep(500);
        DeviceIoControl((HANDLE) hLCD,IOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS,(LPVOID)&ON,sizeof(DISPLAY_BRIGHTNESS),NULL,0,(LPDWORD) &nBytesReturned,NULL);
        Sleep(500);
        DeviceIoControl((HANDLE) hLCD,IOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS,(LPVOID)&OFF,sizeof(DISPLAY_BRIGHTNESS),NULL,0,(LPDWORD) &nBytesReturned,NULL);
    }

    nRes = DeviceIoControl(
               (HANDLE) hLCD,                           // handle to device
               IOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS,      // dwIoControlCode
               (LPVOID) &DisplayBrightness,             // lpInBuffer
               sizeof(DisplayBrightness),               // nInBufferSize
               NULL,                                    // output buffer
               0,                                       // size of output buffer
               (LPDWORD) &nBytesReturned,               // bytes returned
               NULL                                     // OVERLAPPED
           );

    if (nRes == 0)
    {
        cout << "error:" << GetLastError() << endl;
        return 4;
    }

    CloseHandle(hLCD);
    return 0;
}

Comparte o puntua esta publicación ▼

lunes, 5 de julio de 2010

calcular CRC32 facil

5

Calcular el CRC32 de un archivo o determinados datos es útil para saber si los datos se han transferido correctamente. El valor del crc del archivo de origen tiene que ser exactamente igual que el de destino, en caso contrario el archivo de destino es diferente (erróneo).

PHP tiene una función que lo calcula:

function checksum($filename)
{ 
    return (strtoupper(dechex(crc32(file_get_contents($filename))))); 
}

En C o C++ la función la tienes que hacer tu o usar esta, tienes la posibilidad de usar una tabla ya procesada o de generarla con la función initialise_crc32_table().

#include <iostream>
using namespace std;

unsigned crc32_table[] =
{
    0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
    0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
    0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
    0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
    0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
    0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
    0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
    0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
    0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
    0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
    0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
    0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
    0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
    0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
    0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
    0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
    0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
    0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
    0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
    0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
    0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
    0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
    0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
    0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
    0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
    0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,
    0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
    0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
    0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
    0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
    0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
    0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
};

unsigned int crc32_table[256];

void initialise_crc32_table()
{
    char const polynomial_terms[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26};
    unsigned int polynomial_pattern = 0;
    for (unsigned int i = 0; i < sizeof(polynomial_terms); ++i)
        polynomial_pattern |= 1 << (31 - polynomial_terms[i]);
    const unsigned int size = sizeof(crc32_table)/sizeof(int);
    for (unsigned int i = 0; i < size; ++i)
    {
        unsigned int new_table_entry = i;
        for (unsigned int j = 0; j < 8; ++j)
        {
            bool first_bit_was_set = (new_table_entry & 1);
            new_table_entry >>= 1;
            if (first_bit_was_set == true)
                new_table_entry ^= polynomial_pattern;
            crc32_table[i] = new_table_entry;
        }
    }
}

unsigned crc32(const char * data, size_t size, unsigned sum = 0)
{
    sum ^= 0xffffffff;
    while (size--) sum = crc32_table[(*data++ ^ sum) & 0xff] ^ (sum >> 8);
    return sum ^ 0xffffffff;
}


int main()
{
    initialise_crc32_table();
    cout << hex << crc32("DavidXL",7) << endl;
    return 0;
}

Espero que te sirva el ejemplo.

Comparte o puntua esta publicación ▼