Entradas

Mostrando las entradas etiquetadas como consola

Explorador de archivos con c++

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 '?'

Controla el nivel de backlight de una lcd

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_V...

calcular CRC32 facil

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 , 0x6...

Cambiar el color del texto de la consola

No es muy común en Windows pero quizás alguna vez quieras cambiar el color del texto/fondo de la consola, por ejemplo, que los mensajes de error salgan de color rojo. Creo que con el ejemplo es mas que suficiente para saber y entender como hacerlo. De todas formas, por si alguien anda un poco despistado pongo todos los posibles valores del segundo parámetro de la función que se encarga de cambiar el color. Y acuérdate que para poner varios hay que usar el operador binario OR | . FOREGROUND_INTENSITY FOREGROUND_RED FOREGROUND_GREEN FOREGROUND_BLUE BACKGROUND_INTENSITY BACKGROUND_RED BACKGROUND_GREEN BACKGROUND_BLUE #include <windows.h> HANDLE hstdout ; void write ( const char * message ) { DWORD t ; WriteConsole ( hstdout , ( const void *) message , lstrlen ( message ), & t , NULL ); } int main () { hstdout = GetStdHandle ( STD_OUTPUT_HANDLE ); write ( " \n\n " ); SetConsoleTextAttribute ( hstdout , FOREGROUND_INTEN...

Clase para reproducir sonido con MCI

Esta tarde he estado haciendo un clase para poder reproducir música en formatos como mp3, wav, y dependiendo del sistema operativo o codecs instalados aac, ogg, pero no estoy seguro. Para ello uso MCI , que realmente vale para muchísimas otras cosas, como reproducir o capturar vídeo de un archivo o de hardware como una webcam, reproducir midi y formatos anteriores,... #include <windows.h> #include <iostream> #include <string> enum mode {unknown, open, playing, paused, stopped }; class MCI { // davidxl.blogspot.com private: std::string filename; unsigned int lenght; int volume; int balance; public: MCI() : lenght(0),volume(1000),balance(0) { }; MCI(std::string filename): volume(1000),balance(0) { Open(filename); }; ~MCI() { Close(); } void Open(std::string filename) { Close(); this-...

gotoxy() sin el encabezado conio.h

La función gotoxy(), que permite escribir en cualquier parte de la pantalla, esta declarada en el encabezado <conio.h>, la cual viene en los compiladores del Turbo C y Borland C++, pero si usas otro compilador esta función no existe. La cabecera <conio.h> fue portada a otros compiladores pero actualmente ya se encuentra obsoleta, sin embargo todavía se siguen viendo muchas lineas de código que incluyen esta función. Para poder compilar antiguos programas que usaban esta función con los compiladores de hoy en día, lo mejor es usar una función equivalente y deshacernos de <conio.h> #include <windows.h> #include <iostream> using namespace std; bool gotoxy(unsigned short x, unsigned short y) { HANDLE hstdout; if ((hstdout = GetStdHandle(STD_OUTPUT_HANDLE)) == INVALID_HANDLE_VALUE) return false; if (SetConsoleCursorPosition(hstdout, (COORD){x,y}) == 0) return false; return true; } int main() { gotoxy(23,10); cout <...

Analizar los argumentos de la línea de comandos

Este programa de ejemplo permite la entrada de parámetros realizando un análisis básico, tal como esta es muy fácil extender las posibilidades de la entrada de argumentos para tu programa. #include <iostream> #include <string> using namespace std; void Usage() { cout << "Uso: myApp -z -n <nombre> -a <apellido> -h" << endl; cout << "o: myApp /z /n <nombre> /a <apellido> /h" << endl;; } int main(int argc, char* argv[]) { bool z = false; string name; string ape; int i; if (argc < 2) { Usage(); return 1; } for (i=1; i < argc ;i++) { if (strlen(argv[i]) < 2) continue; if (argv[i][0] == '-' || argv[i][0] == '/') { switch (argv[i][1]) { case 'z': z = true; break; case 'n': ...