Entradas

Mostrando entradas de mayo, 2010

Obtén información del sistema con GetSystemMetrics()

Si alguna vez necesitaste o te preguntaste como obtener la resolución de la pantalla, si el ratón tiene rueda, cuantos botones u otra información con la función GetSystemMetrics() lo podrás saber. #include <windows.h> #include <iostream> using namespace std; int main() { cout << "Numero de monitores: " << GetSystemMetrics(SM_CMONITORS) << endl; cout << "Tamaño de la pantalla principal: "; cout << GetSystemMetrics(SM_CXSCREEN) <<'x'<< GetSystemMetrics(SM_CYSCREEN); cout << endl << endl; if (GetSystemMetrics(SM_NETWORK)) cout << "Hay red presente"; else cout << "No hay red presente"; cout << endl << endl; if (!GetSystemMetrics(SM_MOUSEPRESENT)) cout << "No tiene un raton conectado" << endl; else { cout << "Tiene un raton conectado" <

Iniciar el protector de pantalla, C++

Muy parecido a la manera de apagar la o las pantallas a la vez mediante un pequeño ejecutable , se trata de un pequeño código que, una vez creado el ejecutable, podrás abrir el protector de pantalla cuando quieras. #include <windows.h> int main() { SendMessage(GetForegroundWindow(), WM_SYSCOMMAND, SC_SCREENSAVE, 0); } ¿Y si hacemos un protector de pantalla que al cerrarse ejecute este código? Que pasara... Actualizado el 1/12/2011

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-

Manejando el mouse

Un par de ejemplos de como obtener las coordenadas del cursor y de como posicionarlo en una posición concreta. #include #include int main() { POINT p; while(!GetAsyncKeyState(VK_F8)) { GetCursorPos(&p); std::cout << p.x << " - " << p.y << std::endl; } return 0; } Sitúa el ratón en la posición (0,0) hasta que se pulse la tecla F8 #include int main() { FreeConsole(); while(!GetAsyncKeyState(VK_F8)) SetCursorPos(0,0); }

Usando Hotkeys con C, C++

Las teclas globales o hotkeys son teclas o combinaciones de teclas cuya pulsación puede ser captada sin que el programa tenga el foco. El programa de ejemplo que muestro, al ejecutarse no veras nada, ni ventana, ni consola, se trata de un proceso que capta unas teclas (mira las funciones RegisterHotKey ), para salir pulsa la tecla de escape y tendría que aparecer un mensajito con el texto "bye bye". #include <windows.h> #define CTRL_ALT_F1 101 #define CTRL_F2 102 #define ALT_F3 103 #define CTRL_UP 104 #define CTRL_DOWN 105 #define CTRL_RIGHT 106 #define CTRL_LEFT 107 #define EXIT_KEYS 108 LRESULT CALLBACK WinProc(HWND, UINT, WPARAM, LPARAM); char Name[] = "HotKey demo - DavidXL"; int WINAPI WinMain ( HINSTANCE hInst,HINSTANCE hPrevInst, LPSTR lpszArgument,int nFunsterStil ) { HWND hwnd; MSG messages; WNDCLASSEX wincl = {sizeof(WNDCLASSEX),0,WinProc,0,0,hInst,0,0,0,0,Name,0}; if (!RegisterClassEx (

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

Reproducir sonidos con c++ y sndPlaySound()

En este post muestro una manera fácil y rápida de reproducir sonidos en formato wav, muy útil para pequeños juegos y aplicaciones. Para ello la función usada es sndPlaySound() , incluida en <mmsystem.h> . A la hora de hacer el link se necesita la librería winmm.lib , si te la pide y no sabes donde encontrarla, yo use la que viene con el kit de desarrollo de Windows 7, "Windows 7 SDK". Es recomendable visitar la pagina de la función sndPlaySound() para conocer todos los posibles flags, ya que en el ejemplo solo muestro una implementación básica. #include <windows.h> #include <mmsystem.h> int main() { sndPlaySound("file.wav", SND_ASYNC | SND_FILENAME | SND_LOOP); system("PAUSE"); return 0; }

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