elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 2 [3]
21  Programación / Programación C/C++ / Re: [RETO] + Funcion Extraer Numeros de Cadenas! [Cpp/C] en: 6 Enero 2012, 06:02 am
Aqui va otra forma diferente, sin duda no es practica, ni rapida, ni versatil, pero hey! funciona. xD
Código
  1. //typedef int (* mprintf) ( const char * format, ... );
  2. //mprintf myprintf = (mprintf)0x77c4186a;
  3. //myprintf("%c", cad[x]);
  4.  
  5. unsigned short mstrlen(char *cad)
  6. {
  7.  char *pcad = cad;
  8.  while(*pcad++);
  9.  return pcad - cad;
  10. }
  11.  
  12. void extraer(char *cad)
  13. {
  14. unsigned short x = 0;
  15. while(x++ <= mstrlen(cad))
  16. if(cad[x] <=  57 && cad[x] >= 48 )
  17. ((int (*)( const char * format, ... ) )0x77c4186a)("%c", cad[x]);
  18.  
  19. }
  20.  
  21. int main()
  22. {
  23. char cad[] = "sdh!w2 28 :-)  9ndk#1@b______dy0--hveybd@  # qism083  s'kl...: su2b7h ++bjsnbvxj77ygv1hiiiioms90nms sjbah b#!1!  --R-E-D--0+-w++ONE***WWW.";
  24. extraer(cad);
  25. return 0;
  26. }
  27.  
22  Programación / Programación C/C++ / Re: Duda con SetWindowText en: 12 Diciembre 2011, 00:34 am
Bueno en int no era, era en float o un double(numero grandes), pero he estado pensando y he mirado un ejercico que tenia y he probado lo siguiente y me ha funcionado
sprintf (a, "%.0f", y);

¿De esa manera puede dar algun problema si solo quiero numeros sin decimales?
Un entero es un no decimal.   :P
Aunq si, asi tambien funcionara.

Saludos.
23  Programación / Programación C/C++ / Re: Problema con cadenas en: 11 Diciembre 2011, 23:37 pm
Código
  1. cout << <variable> ;

cout acepta enteros para mostrarlos por pantalla.
? Esto a que viene.  :P

Lo que quiero es saber como meter el entero en medio de la cadena.
Total me diste una idea, lo hice asi pero no se resolvio mi duda. D:

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.    char cadena[100], cadena_n[100], *aux = cadena-1;
  8.    int veces(0);
  9.  
  10.    //int i(0);
  11.  
  12.    cout << "Cadena: ";
  13.    cin.getline(cadena,100);
  14.  
  15.    cout << "\n\nCadena_n: ";
  16.  
  17.    while( *aux++ )
  18.    {
  19.           if(*aux == *(aux+1) )
  20.           {
  21.              veces++;
  22.  
  23.           if( *(aux+1) !=  *(aux+2) )
  24.           {
  25.               cout << veces;              
  26.               //cadena_n[i] = veces;            
  27.               //i++;
  28.               veces = 0;
  29.           }
  30.  
  31.              continue;
  32.  
  33.           }
  34.  
  35.    //cadena_n[i] = *aux;
  36.    //i++;
  37.    cout << *aux;
  38.  
  39.    }
  40.  
  41.    //cadena_n[i] = '\0';            
  42.  
  43.    //cout << "\n\nCadena_n: " << cadena_n;
  44.    cout << "\n\nCadena: " << cadena;
  45.  
  46.    setbuf(stdin, NULL);
  47.    cin.get();
  48.    return 0;
  49.  
  50.  
  51. }
  52.  
24  Programación / Programación C/C++ / Re: el uso del teclado en c++ en: 11 Diciembre 2011, 19:00 pm
no se mucho de programacion en c++, ace poco que empece a aprender... me puedes poner un ejemplo de un codigo con "hooks"???
Alguien de este mismo foro publico esto hace un tiempo. Es un gran ejemplo:
Código
  1. #include <windows.h>
  2. #include <stdio.h>
  3.  
  4. HHOOK hHook;
  5. MSG messages;
  6.  
  7. LRESULT CALLBACK hook_teclado(int nCode, WPARAM wParam, LPARAM lParam);
  8.  
  9. int WINAPI WinMain (HINSTANCE hThisInstance,
  10.                     HINSTANCE hPrevInstance,
  11.                     LPSTR lpszArgument,
  12.                     int nCmdShow)
  13. {
  14.    hHook = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)hook_teclado, hThisInstance, NULL);
  15.  
  16.    while(GetMessage(&messages, NULL, NULL, NULL)){
  17.        TranslateMessage(&messages);
  18.        DispatchMessage(&messages);
  19.    }
  20.  
  21.    return messages.wParam;
  22.  
  23. }
  24.  
  25. LRESULT CALLBACK hook_teclado(int nCode, WPARAM wParam, LPARAM lParam){
  26.    if(nCode < 0)
  27.        return CallNextHookEx(hHook, nCode, wParam, lParam);
  28.  
  29.    if(wParam == WM_KEYDOWN){
  30.        PKBDLLHOOKSTRUCT teclado = (PKBDLLHOOKSTRUCT)lParam;
  31.  
  32.        teclado->vkCode = VK_SPACE;
  33.        printf("%c", teclado->vkCode);
  34.  
  35.        free(teclado);
  36.    }
  37.  
  38.    return CallNextHookEx(hHook, nCode, wParam, lParam);
  39. }
  40.  

Saludos.
25  Programación / Programación C/C++ / Re: el uso del teclado en c++ en: 11 Diciembre 2011, 00:57 am
Hola a todos...
 
Me preguntaba si se puede acer lo siguiente en c++:

Al presionar una letra del abecedario en el teclado... que haga un enter sin tener que presionarlo

Si se puede... me podriais explicar como???

GRACIAS
Puedes usar hooks o puedes hacer esto:

Código
  1. #include <iostream>
  2. #include <windows.h>
  3.  
  4. using namespace std;
  5.  
  6. char *tomar(char *);
  7. void input();
  8.  
  9. int main()
  10. {
  11.    char cad[10];
  12.  
  13.    tomar(cad);
  14.  
  15.    if(cad[0] != 0)
  16.    {
  17.     input();
  18.    }
  19.  
  20.    setbuf(stdin, NULL);
  21.    cin.get();
  22.    return 0;
  23. }
  24.  
  25. char *tomar(char *cad)
  26. {
  27.    DWORD num, modo = 0;
  28.    HANDLE input    = GetStdHandle(STD_INPUT_HANDLE);    
  29.    GetConsoleMode(input,&modo);
  30.    SetConsoleMode(input,modo&~(ENABLE_ECHO_INPUT|ENABLE_LINE_INPUT));
  31.  
  32.    ReadConsole(input,&cad[0],1, &num, NULL);
  33.    SetConsoleMode(input,modo);
  34.  
  35.    return cad;
  36. }
  37.  
  38. void input()
  39. {
  40.    keybd_event(VK_SPACE, 0, KEYEVENTF_EXTENDEDKEY | 0, 0 );
  41.  
  42. }
  43.  
Espero haberte ayudado. :)
26  Programación / Programación C/C++ / Problema con cadenas en: 10 Diciembre 2011, 22:08 pm
Andaba leyendo unos concursos y decidi intentar un problema.
El punto era emular algo asi:

entrada:
holaaaa muuundooo

salida:
hol3a m2und2o

Logre hacer esto:

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.    char cadena[100],cadena_n[100], *aux = cadena-1;
  8.    char veces('0'); int i(0);
  9.  
  10.    cout << "Cadena: ";
  11.    cin.getline(cadena,100);
  12.  
  13.    while( *aux++ )
  14.    {
  15.           if(*aux == *(aux+1) )
  16.           {
  17.              veces++;
  18.  
  19.           if( *(aux+1) !=  *(aux+2) )
  20.           {
  21.  
  22.               cadena_n[i] = veces;            
  23.               i++;
  24.               veces = '0';
  25.           }
  26.  
  27.              continue;
  28.  
  29.           }
  30.  
  31.    cadena_n[i] = *aux;
  32.    i++;
  33.    }
  34.        cadena_n[i] = '\0';            
  35.  
  36.  
  37.  
  38.    cout << "\n\nCadena_n: " << cadena_n;
  39.    cout << "\n\nCadena: " << cadena;
  40.  
  41.    setbuf(stdin, NULL);
  42.    cin.get();
  43.    return 0;
  44.  
  45.  
  46. }
  47.  
El problema en el code radica en que utilizo un char para contar las veces y poder meterlo en la cadena sin problemas pero como en la tabla ascii solo existe espacio del 1 al 9 despues de esos sigue monstrando el caracter correspondiente en la tabla.

Me pregunto de que forma podria lograr meter el integer en la cadena?
Se me ocurre una forma de hacerlo pero es poco practico y muy engorroso. Pense en hacer uso de atoi y itoa pero no veo de q forma implementarlo correctamente para que me de el resultado q quiero. :/
Pues d q forma se podria hacer tambien? : )

un saludo y gracias!


27  Programación / Programación C/C++ / Re: Problema listando proceso en win32 en: 20 Noviembre 2011, 06:04 am
Bueno a simple vista no veo nada extraño pero no puedo probar porque ahora no estoy en windows pero verifica que se cumpla esta condicion:

Código
  1. (HWND)lParam == Button2
  2.  

Ojo te lo digo asumiendo de que se cree bien la ventana y el botón...

EDIT:

Bueno ya lo corrí en Windows y el problema es el siguiente en tu función Buscar_proceso():

dwSize
The size of the structure, in bytes. Before calling the Process32First function, set this member to sizeof(PROCESSENTRY32). If you do not initialize dwSize, Process32First fails.

Es decir:

Código
  1. Proceso.dwSize = sizeof(PROCESSENTRY32);

::-O
Muchisimas gracias!!!!

Ya veo . . . pero me causa curiosidad porque cuando uso el console subsystem no tengo declarar el tamaño de la estructura ???
Que raro. .

Pero bueno, gracias. (:

saludos!
28  Programación / Programación C/C++ / Problema listando proceso en win32 en: 20 Noviembre 2011, 03:18 am
Hola, buenas, saludines. : )

Tengo un problema que me esta tirando los pelos d la cabeza, con este codigo que no logro que funcione como debe.

Estoy intentando verificar si un proceso esta corriendo desde interfaz grafica, pero por alguna razon no me funciona, el codigo esta asi:

Código
  1. #include <windows.h>
  2. #include <Tlhelp32.h>
  3.  
  4. /*  Declare Windows procedure  */
  5. LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
  6.  
  7. /*  Make the class name into a global variable  */
  8. char szClassName[ ] = "WindowsApp";
  9. int Buscar_Proceso();
  10. void Crear_Ventana(HWND hwnd);
  11. HINSTANCE instancia;
  12. HWND Button2;
  13.  
  14.  
  15.    int WINAPI WinMain (HINSTANCE hThisInstance,
  16.                    HINSTANCE hPrevInstance,
  17.                    LPSTR lpszArgument,
  18.                    int nFunsterStil)
  19.  
  20. {
  21.    HWND hwnd;               /* This is the handle for our window */
  22.    MSG messages;            /* Here messages to the application are saved */
  23.    WNDCLASSEX wincl;        /* Data structure for the windowclass */
  24.    instancia = hThisInstance;    
  25.    /* The Window structure */
  26.    wincl.hInstance = hThisInstance;
  27.    wincl.lpszClassName = szClassName;
  28.    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
  29.   // wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
  30.    wincl.cbSize = sizeof (WNDCLASSEX);
  31.  
  32.    /* Use default icon and mouse-pointer */
  33.    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
  34.    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
  35.    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
  36.   // wincl.lpszMenuName = NULL;                 /* No menu */
  37.    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
  38.    wincl.cbWndExtra = 0;                      /* structure or the window instance */
  39.    /* Use Windows's default color as the background of the window */
  40.    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
  41.  
  42.    /* Register the window class, and if it fails quit the program */
  43.    if (!RegisterClassEx (&wincl))
  44.        return 0;
  45.  
  46.    /* The class is registered, let's create the program*/
  47.    hwnd = CreateWindowEx (
  48.           0,                   /* Extended possibilites for variation */
  49.           szClassName,         /* Classname */
  50.           "Windows App",       /* Title Text */
  51.           WS_OVERLAPPEDWINDOW, /* default window */
  52.           CW_USEDEFAULT,       /* Windows decides the position */
  53.           CW_USEDEFAULT,       /* where the window ends up on the screen */
  54.           544,                 /* The programs width */
  55.           375,                 /* and height in pixels */
  56.           HWND_DESKTOP,        /* The window is a child-window to desktop */
  57.           NULL,                /* No menu */
  58.           hThisInstance,       /* Program Instance handler */
  59.           NULL                 /* No Window Creation data */
  60.           );
  61.  
  62.    /* Make the window visible on the screen */
  63.  
  64.    ShowWindow (hwnd, nFunsterStil);
  65.  
  66.    /* Run the message loop. It will run until GetMessage() returns 0 */
  67.    while ( GetMessage (&messages, NULL, 0, 0) == 1)
  68.    {
  69.        /* Translate virtual-key messages into character messages */
  70.       TranslateMessage(&messages);
  71.        /* Send message to WindowProcedure */
  72.        DispatchMessage(&messages);
  73.    }
  74.  
  75.    /* The program return-value is 0 - The value that PostQuitMessage() gave */
  76.    return messages.wParam;
  77. }
  78.  
  79.  
  80. /*  This function is called by the Windows function DispatchMessage()  */
  81.  
  82. LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
  83. {
  84.    switch (message)                  /* handle the messages */
  85.    {
  86.  
  87.          case WM_CREATE:
  88.           Crear_Ventana(hwnd);
  89.           break;
  90.  
  91.            case WM_COMMAND:
  92.  
  93.            if((HWND)lParam == Button2 )
  94.            {
  95.                  if(Buscar_Proceso() == 0)
  96.                   MessageBox(0, "El proceso esta corriendo", "Proceso", 0);      
  97.  
  98.            }
  99.            break;
  100.  
  101.  
  102.        case WM_DESTROY:
  103.            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
  104.  
  105.  
  106.             break;
  107.  
  108.        default:                      /* for messages that we don't deal with */
  109.            return DefWindowProc (hwnd, message, wParam, lParam);
  110.    }
  111.  
  112.    return 0;
  113. }
  114.  
  115. void Crear_Ventana(HWND hwnd)
  116. {
  117.     //Boton 2
  118. Button2 = CreateWindowEx(0,"BUTTON", "Buscar P", WS_CHILD|WS_VISIBLE|WS_TABSTOP,
  119.                         100, 300, 100, 20, hwnd, 0, instancia, NULL);
  120. }
  121.  
  122. int Buscar_Proceso()
  123. {
  124.    HANDLE CProc;    
  125.    PROCESSENTRY32 Proceso;    //Necesario para realizar la captura de procesos
  126.    CProc=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);   //Con esto creamos una captura de la lista de procesos y la guardamos en CProc
  127. Process32First(CProc,&Proceso);    //Leemos el primer proceso
  128.  
  129. while(Process32Next(CProc,&Proceso))   //Mientras haya procesos para leer leemos el siguiente
  130. {
  131.  
  132. if(!strcmp(Proceso.szExeFile,"explorer.exe") )
  133. return 0;
  134. }
  135.  
  136.    return 1;
  137. }
  138.  

Sin duda ha de ser una chorrada pero no lo veo :(
help! D:

Lo que mas rabia me da es que si lo hago desde la consola si sale!!

Código
  1. #include <windows.h>
  2. #include <Tlhelp32.h>
  3. #include <stdio.h>
  4.  
  5. HANDLE CProc;   //Para crear la captura de la lista de procesos
  6. int Buscar_Proceso();
  7.  
  8. int main()
  9. {
  10.    if(Buscar_Proceso() == 0)
  11.      MessageBox(0, "el proceso esta corriendo", "proceso", 0);
  12.  
  13.     getchar();
  14.  
  15. return 0;    //Retornamos 0 diciendo que salio bien
  16. }
  17.  
  18. int Buscar_Proceso()
  19. {
  20.    PROCESSENTRY32 Proceso;    //Necesario para realizar la captura de procesos
  21.    CProc=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);   //Con esto creamos una captura de la lista de procesos y la guardamos en CProc
  22. Process32First(CProc,&Proceso);    //Leemos el primer proceso
  23.  
  24. while(Process32Next(CProc,&Proceso))   //Mientras haya procesos para leer leemos el siguiente
  25. {
  26.  
  27. if(!strcmp(Proceso.szExeFile,"explorer.exe") )
  28. return 0;
  29. }
  30.  
  31.    return 1;
  32. }
  33.  
   
   
Alguien puede ofrecerme una manito con esto? :(

Gracias de antemano!!
29  Programación / Programación C/C++ / Re: Intentando instalar SDL en Ubuntu en: 8 Agosto 2011, 18:19 pm
Hola foreros.
Tengo algunas pequeñas dificultades al intentar instalar SDL en Ubuntu usando Codeblocks, lo he instalado desde consola, con Synaptic...
Bueno, la primera vez que lo he probado me ha estado dando un error que me daba unas 10 o 12 lineas en las que ponia "ld cannot find ---" donde --- era por ejemplo -lmingw32 o -SDL.dll (este me extrañó mucho)
Tras intentar muchas cosas he conseguido cambiar de error asignandole al linker esto: 'sdl-config --libs --cflags', ahora en todas las funciiones que uso de la SDL me dice: Undefined reference to `(la funcion)'

¿Sabeis como solucionarlo?

Espero que podais ayudarme, un saludo!

Yo no lo he probado pero he visto como se hace, fíjate aquí.
http://www.losersjuegos.com.ar/referencia/articulos/instalar_sdl

Podes igual mirarte los artículos de esa misma sección que están geniales para aprender sdl, animación de personajes, etc, etc.

Saludines.
Páginas: 1 2 [3]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines