Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: dalvisito en 18 Noviembre 2010, 03:00 am



Título: [AYUDA] con mi aplicacion porfa
Publicado por: dalvisito en 18 Noviembre 2010, 03:00 am
Hola soy nuevo con c++ y quisiera que me ayudaran.
mi aplicaion es la sigiente. el problema que tengo es que tengo que entrar a la
consola para ejecutar las opciones, lo que quiero es minimizar la aplicacion y
digamso precionar 'F8' y que la aplicacion ejecute la opcion 1.


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4.  
  5. using namespace std;
  6. int main()
  7. {
  8. int fin = 0;
  9. int opcion;
  10.  
  11. while (fin == 0)
  12. {
  13. system("cls");
  14. printf("Menu Del AutoClick\n\n");
  15.  
  16. printf("\t1] AutoClick Izquierdo.\n");
  17. printf("\t2] AutoClick Derecho.\n");
  18. printf("\t3] Salir.\n");
  19.  
  20. printf("\n\nOpcion: ");
  21. scanf("%i", &opcion);
  22. switch(opcion)
  23. {
  24. case 1:
  25. printf("AutoClick Izquierdo Empieza en 10 Segundos.\n");
  26. for(signed int i = 10; i >= 0; i--)
  27. {
  28. printf("%i\n",i);
  29. Sleep(1000);
  30. }
  31. printf("Para Detener Precione 'F8'\n");
  32. while(1 && !GetAsyncKeyState(VK_F8)){
  33. mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
  34. Sleep(20);
  35. mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
  36. Sleep(20);
  37. }
  38. break;
  39. case 2:
  40. printf("AutoClick Derecho Empieza en 10 Segundos.\n");
  41. for(signed int i = 10; i >= 0; i--)
  42. {
  43. printf("%i\n",i);
  44. Sleep(1000);
  45. }
  46. printf("Para Detener Precione 'F9'\n");
  47. while(1 && !GetAsyncKeyState(VK_F9)){
  48. mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
  49. Sleep(20);
  50. mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
  51. Sleep(20);
  52. }
  53. break;
  54. case 3:
  55. fin = 1;
  56. printf("La Aplicacion a Finalizado\n\n");
  57. break;
  58. default:
  59. fin = 0;
  60. break;
  61. }
  62.  
  63. }
  64. system("pause");
  65. return 0;
  66. }


Título: Re: [AYUDA] con mi aplicacion porfa
Publicado por: fary en 18 Noviembre 2010, 22:20 pm
El problema que tienes en tu codigo es que haces un scanf y paras el programa, y si lo minimizas no puede recibir datos y pasar el scanf... para hacer lo que tu quieres no tienes que hacer scanf simplemente esperar a que se pulse la tecla que quieres ( con getasynckeystate como tu bien haces o con hooks)  y listo.

salu2!


Título: Re: [AYUDA] con mi aplicacion porfa
Publicado por: dalvisito en 19 Noviembre 2010, 07:34 am
Si es verdad lo que tu dices. pero si quito el "scanf" se crea un bucle infinito
hasta que yo precione la alguna tecla.
ese es en realidad mi problema.


Título: Re: [AYUDA] con mi aplicacion porfa
Publicado por: fary en 19 Noviembre 2010, 23:53 pm
Si es verdad lo que tu dices. pero si quito el "scanf" se crea un bucle infinito
hasta que yo precione la alguna tecla.
ese es en realidad mi problema.

Es normal que pase eso...  :xD

Creo  que tu quieres seguir utilizando la consola aunque no se haya pulsado la tecla, para eso tienes que usar multihilos, mirate la funcion CreateThread.

salu2!


Título: Re: [AYUDA] con mi aplicacion porfa
Publicado por: dalvisito en 20 Noviembre 2010, 07:03 am
Bueno pensando y analizando los comentarios de "Drinky94" llege
a esto, para evitar un bucle infinito que consuma recurso le puse
un Sleep(1000);.
ahora no se hasta que punto sera una buena programacion o simplemente
estoy haciendo sonseras.



#include <stdio.h>
#include <stdlib.h>

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

using namespace std;

int main()
{
   int fin = 0;
   int opcion;
   int sasa;
   
   while (fin == 0)
   {
      system("cls");
      cout << "Menu Del AutoClick \n\n";   
      
      cout << "\tF8] AutoClick Izq.\n";
      cout << "\tF10] AutoClick Der.\n";
      cout << "\tF12] Salir.\n";         

      if(GetAsyncKeyState(VK_F8))
      {      
         cout<<"\aPara Detener Precione 'F8'"<<endl;
         Sleep(1000);
         while(1 && !GetAsyncKeyState(VK_F8)){
            mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
            Sleep(20);
            mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
            Sleep(20);   
         }
      }
      if(GetAsyncKeyState(VK_F10))
      {      
         cout<<"\aPara Detener Precione 'F10'"<<endl;
         Sleep(1000);
         while(1 && !GetAsyncKeyState(VK_F10)){
            mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
            Sleep(20);
            mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
            Sleep(20);   
         }
      }
      if(GetAsyncKeyState(VK_F12))
      {      
         cout<<"\aLa Aplicacion a Finalizado."<<endl;
         fin = 1;
      }
      Sleep(1000);
      
   }
   
   return 0;
}