Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: OmarHack en 20 Junio 2013, 02:45 am



Título: [Resuelto] ¿Cómo expresar esto en C++?
Publicado por: OmarHack en 20 Junio 2013, 02:45 am
No sé que tengo que poner en el lugar de "existe".

Código
  1. if (programa.exe existe)
  2. {
  3. system ("start programa.exe");
  4. }

Un saludo.


Título: Re: Miniduda ¿Cómo expresar esto en C++?
Publicado por: amchacon en 20 Junio 2013, 03:14 am
Intenta abrirlo como un fichero normal, si la apertura se realiza con exito esque existe.


Título: Re: Miniduda ¿Cómo expresar esto en C++?
Publicado por: leosansan en 20 Junio 2013, 03:47 am
No sé que tengo que poner en el lugar de "existe".

Código
  1. if (programa.exe existe)
  2. {
  3. system ("start programa.exe");
  4. }

Un saludo.

Muy sencillito:

Código
  1.    if ("programa.exe")
  2.        system ("programa.exe");
  3.  

 Saluditos!
    
(http://st.forocoches.com/foro/images/smilies/dancer2.gif)


Título: Re: Miniduda ¿Cómo expresar esto en C++?
Publicado por: pacoperico en 20 Junio 2013, 03:51 am
Si estas en windows puedes usar alguna de las funciones de su api tal como:

http://msdn.microsoft.com/es-es/library/aa365527(v=vs.85).aspx (http://msdn.microsoft.com/es-es/library/aa365527(v=vs.85).aspx)

http://msdn.microsoft.com/es-es/library/aa364418(v=vs.85).aspx (http://msdn.microsoft.com/es-es/library/aa364418(v=vs.85).aspx)


Título: Re: Miniduda ¿Cómo expresar esto en C++?
Publicado por: amchacon en 20 Junio 2013, 08:30 am
Muy sencillito:

Código
  1.    if ("programa.exe")
  2.        system ("programa.exe");
  3.  

 Saluditos!
    
(http://st.forocoches.com/foro/images/smilies/dancer2.gif)

Leo, eso no tiene sentido  :rolleyes:


Título: Re: Miniduda ¿Cómo expresar esto en C++?
Publicado por: OmarHack en 20 Junio 2013, 11:28 am
Muy sencillito:

Código
  1.    if ("programa.exe")
  2.        system ("programa.exe");
  3.  

 Saluditos!
    
(http://st.forocoches.com/foro/images/smilies/dancer2.gif)


Eso es lo que quiero hacer, pero el problema es que si no existe informa del error, y yo quiero que si el archivo existe lo abra, y si no, no haga nada.
Probé también con la librería fstream y no doy conseguido que se ejecute un bat.
A ver si me podéis ayudar. Saludos!


Título: Re: Miniduda ¿Cómo expresar esto en C++?
Publicado por: leosansan en 20 Junio 2013, 14:12 pm
Como dice daryo y amchacon no furula. Lo intentaré mejorar. :silbar:


Título: Re: Miniduda ¿Cómo expresar esto en C++?
Publicado por: daryo en 20 Junio 2013, 14:32 pm
aca un ejemplo con fstream
Código
  1. ifstream logc;
  2. logc.open ( "archivo.exe" );
  3. if ( logc.is_open() )
  4. {
  5. // se pudo abrir el fichero por tanto existe
  6. }
  7. else
  8. {
  9. //no se pudo abrir el fichero se supone no existe o lo esta usando otro programa
  10. }
  11. logc.close();

leosansan lo que propones no sirve e_e lo probe y exista o no el fichero ejecuta el system


Título: Re: Miniduda ¿Cómo expresar esto en C++?
Publicado por: amchacon en 20 Junio 2013, 14:57 pm
Lo que te he indicado hace exactamente eso, si existe lo abre y si no "pasa" de la instrucción ¡ ¡ ¡ .

Lo único que me falto indicarte es que si el programa a abrir no está en el directorio actual habrá  que indicar el path, bien con dobles barras invertidas o con barras simples:


Código
  1. if ("M:\\MP3\\J\\JAMIE CULLUM\\219.mp3")
  2.        system ("M:/MP3/J/JAMIE CULLUM/219.mp3");

Saluditos!
   
(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)
Leo, eso no va a funcionar.

El compilador encuentra un puntero const char* que transforma a booleano para hacer la comprobación (dado que el puntero es válido, siempre dará true).

El código de daryo es correcto y si debería funcionar.


Título: Re: Miniduda ¿Cómo expresar esto en C++?
Publicado por: daryo en 20 Junio 2013, 15:04 pm
por si acaso recuerden el
Código
  1. #include <fstream>
y el
Código
  1. using namespace std;
y que es un codigo para c++ y no para c

tambien se puede usar las herramientas de windows; la api de windows en cuyo caso importa poco si es c o c++ y supongo que para c pueden usar el  puntero FILE *archivo pero no conozco muy bien el manejo de ficheros en c puro


Título: Re: Miniduda ¿Cómo expresar esto en C++?
Publicado por: OmarHack en 20 Junio 2013, 16:34 pm
No hace nada al abrir el programa :S

Lo tengo así:

Código
  1. ifstream logc;
  2. logc.open ( "Personalizacion.bat" );
  3. if ( logc.is_open() )
  4. {
  5. // se pudo abrir el fichero por tanto existe
  6. }
  7. else
  8. {
  9. //no se pudo abrir el fichero se supone no existe o lo esta usando otro programa
  10. }
  11. logc.close();
 

E probado también quitándole el .bat y hasta poniéndole .exe
El archivo se encuentra en el mismo sitio que el ejecutable y el código. Dentro del bat hay un simple start www.google.com para ver si funciona.
No e probado poniéndole la ruta porque entonces no me serviría, yo tengo la carpeta en la unidad K pero mucha gente lo tendrá en la unidad C, y ademas al ser un programa portable...
Un saludo.


Título: Re: Miniduda ¿Cómo expresar esto en C++?
Publicado por: daryo en 20 Junio 2013, 16:35 pm
postea el programa completo omarhack


Título: Re: Miniduda ¿Cómo expresar esto en C++?
Publicado por: 0xDani en 20 Junio 2013, 16:46 pm
@OmarHack:

En los comentarios del código que has puesto, en la parte que corresponde a que existe el archivo, pon tu código para abrir el .bat. Si no lo pones, lógicamente no se va a abrir.

Y en cuanto a tu problema con el .bat, creo que existía una variable que te indicaba el disco local, algo así como %localdrive%.

Saludos.


Título: Re: Miniduda ¿Cómo expresar esto en C++?
Publicado por: OmarHack en 20 Junio 2013, 16:52 pm
Es bastante grande, si os sirve el código para vuestros programas usarlo sin problema, es licencia gpl. Es para el concurso de esta web. Aún le falta mucho que mejorar y añadir, sobre todo comandos propiamente echos en C++ sin ser funciones al sistema.  Lo que quiero hacer es que mediante la función color se va a cambiar el color de las letras y el fondo de consola. Y con la función que me falta por hacer que se llamara void GuardarColores(); Crear un archivo bat que si existe se ejecutará nada más abrir el programa, así si alguien quiere la consola en el típico matrix (letras verdes en fondo negro) aplique la configuración llamando a color y después eligiendo el numero 3 (creo que era) se ponga la consola a lo matrix, después llamando a la función GuardarConfiguración, se creará un bat con "color 0f" dentro o el color que sea, y por último, si existe el archivo color.bat en el cual se guardará el color elegido, se ejecute al abrir el programa. Aún que ahora que lo pienso abriría una nueva consola de comandos con ese color, pero se puede solucionar fácilmente poniendo que si existe el archivo, aun que esté vacío, haga una llamada a "color ef" o cual sea el elegido.

Ahora supongo que ya entendéis, tengo la versión del código anterior que ya no voy a usar, por usar la clase maps, si la quiereis ver o simplemente reutilizar pedírmela y os la pongo sin problemas.

Aquí el programa: La información aún está sin editar y vendrá con un archivo leeme para saber la lista de comandos y como usar el programa. Viendo el código ya entenderéis como funciona.
Lo he acabado hoy, así que aún no es la versión definitiva, no creo ni que sea una beta.

Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <windows.h>
  5. #include <sstream>
  6. #include <vector>
  7. #include <map>
  8.  
  9. using namespace std;
  10.  
  11. int salir = 0;
  12. int segundosSalir;
  13.  
  14.  
  15. typedef void (*Puntero_A_Funcion)(void);
  16.  
  17.  
  18. void LimpiarPantalla();
  19. void MasterShell();
  20. void Salir();
  21. void funcionEspera(int segundosSalir);
  22. void Cmd();
  23. void AbrirAdministradorDeTareas();
  24. void ComandosDos();
  25. void Colores();
  26. void AbrirQuitarProgramas();
  27. void InformacionSistema();
  28. void EstadoDeRed();
  29. void EstadoProtocoloInternet();
  30. void ApagarOrdenador();
  31. void CancelarApagado();
  32. void Rendimiento();
  33. void EditorRegistro();
  34. void BlocDeNotas();
  35. void CapturarPantalla();
  36. void Calculadora();
  37. void GrabarSonido();
  38. void TecladoEnPantalla();
  39. void Lupa();
  40. void AjustarVolumenDeSonido();
  41. void MaquinaDelTiempo();
  42. void VersionDeWindows();
  43. void LimpiarDisco();
  44. void AdministrarDiscos();
  45. void CargarColores();
  46. void ParticionarDisco();
  47. void ConexionesDeRed();
  48. void AdministrarFirewall();
  49. void CerrarSesion();
  50. void EliminarArchivosTemporales();
  51. void NavegarPorInternet();
  52. void FechaYHora();
  53.  
  54.  
  55.  
  56. int main (int argc, char* argv[])
  57. {
  58.    system ("title MASTERSHELL");
  59.  
  60.  
  61.  
  62.      ifstream logc;
  63. logc.open ( "PersonalizacionMasterShell" );
  64. if ( logc.is_open() )
  65. {
  66. // se pudo abrir el fichero por tanto existe
  67. }
  68. else
  69. {
  70. //no se pudo abrir el fichero se supone no existe o lo esta usando otro programa
  71. }
  72. logc.close();  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.    Inicio:
  82.  
  83.    cout << "@";
  84.    void (*Funcion)(void); // Puntero a funcion sin argumentos
  85.    string Mensaje;
  86.    map<string,Puntero_A_Funcion> Comandos;
  87.    vector<string> texto;
  88.    string str;
  89.  
  90.  
  91.  
  92.  
  93.  
  94.    Comandos["limpiarpantalla"] = LimpiarPantalla;
  95.    Comandos["lp"] = LimpiarPantalla;
  96.    Comandos["mastershell"] = MasterShell;
  97.    Comandos["salir"] = Salir;
  98.    Comandos["administradordetareas"] = AbrirAdministradorDeTareas;
  99.    Comandos["comandosdos"] = ComandosDos;
  100.    Comandos["comandoscmd"] = Cmd;
  101.    Comandos["colores"] = Colores;
  102.    Comandos["abrirquitarprogramas"] = AbrirQuitarProgramas;
  103.    Comandos["informacionsistema"] = InformacionSistema;
  104.    Comandos["estadodered"] = EstadoDeRed;    
  105.    Comandos["estadodelprotocolodeinternet"] = EstadoProtocoloInternet;    
  106.    Comandos["cancelarapagado"] = CancelarApagado;    
  107.    Comandos["apagarordenador"] = ApagarOrdenador;
  108.    Comandos["rendimiento"] = Rendimiento;
  109.    Comandos["editordelregistro"] = EditorRegistro;
  110.    Comandos["blocdenotas"] = BlocDeNotas;
  111.    Comandos["capturarpantalla"] = CapturarPantalla;
  112.    Comandos["calculadora"] = Calculadora;
  113.    Comandos["grabarsonido"] = GrabarSonido;
  114.    Comandos["tecladoenpantalla"] = TecladoEnPantalla;
  115.    Comandos["lupa"] = Lupa;
  116.    Comandos["ajustarvolumendesonido"] = AjustarVolumenDeSonido;
  117.    Comandos["maquinadeltiempo"] = MaquinaDelTiempo;
  118.    Comandos["versiondewindows"] = VersionDeWindows;
  119.    Comandos["limpiardisco"] = LimpiarDisco;
  120.    Comandos["administrardiscos"] = AdministrarDiscos;
  121.    Comandos["cargarcolores"] = CargarColores;
  122.    Comandos["particionardisco"] = ParticionarDisco;
  123.    Comandos["conexionesdered"] = ConexionesDeRed;
  124.    Comandos["administrarfirewall"] = AdministrarFirewall;
  125.    Comandos["cerrarsesion"] = CerrarSesion;
  126.    Comandos["eliminararchivostemporales"] = EliminarArchivosTemporales;
  127.    Comandos["navegarporinternet"] = NavegarPorInternet;
  128.    Comandos["fechayhora"] = FechaYHora;
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.    getline(cin, str);
  140.    stringstream is(str);
  141.  
  142.    while(is >> str) texto.push_back(str);
  143.  
  144.  
  145.  
  146.    for (int i = 0; i < texto.size(); i++)
  147.        cout << "";
  148.  
  149.  
  150.    for (int i = 0; i < texto.size(); i++)
  151.    {
  152.        Funcion = Comandos[texto[i]]; // Obtengo el puntero a la funcion correspondiente
  153.  
  154.        if (Funcion) // Si existe la funcion
  155.              Funcion(); // llamar a la funcion
  156.        else
  157.             cout<<"Error, no existe el comando introducido: "<<texto[i]<<endl;
  158.    }
  159.    if (salir != 1)
  160. {goto Inicio;}  
  161.  
  162. funcionEspera(segundosSalir);
  163.  
  164.    return 0;
  165. }
  166.  
  167.  
  168. //Declaración de funciones:
  169.  
  170. void LimpiarPantalla()
  171. {
  172. system ("cls");
  173. }
  174.  
  175. void MasterShell()
  176. {
  177. cout << endl << "Nombre: MasterShell" << endl
  178.  << "Copyright: GPL" << endl
  179.  << "Autor: OmarHack" << endl
  180.  << "Fecha inicial de creacion del proyecto: 07/06/13 11:58"
  181.  << endl << "Descripcion: ¡Usar comandos nunca fue tan facil!"
  182.  << endl << "Con esta sencilla aplicación podrás usar comandos de una "
  183.  <<"manera increiblemente facil."
  184.  << "Solo tienes que echar un vistazo a"
  185.  << " el arhivo leeme y seguir las instrucciones." << endl << endl;
  186. }
  187.  
  188. void Salir()
  189. {
  190. salir = 1;
  191. }
  192.  
  193. void funcionEspera(int segundosSalir)
  194. {
  195.     salir = 1;
  196.     for(time_t i = (time(NULL) + segundosSalir); time(NULL) != i;);
  197.  
  198. }
  199.  
  200. void Cmd()
  201. {
  202. system ("cmd");
  203. }
  204.  
  205. void AbrirAdministradorDeTareas()
  206. {
  207. system ("taskmgr");    
  208. }
  209.  
  210. void ComandosDos()
  211. {
  212. system ("command");
  213. }
  214.  
  215. void Colores()
  216. {
  217.     short ColorElegido;
  218. cout << "Que color quieres?" <<endl;
  219. cin >> ColorElegido;
  220.  
  221. switch (ColorElegido)
  222. {
  223. case 1:
  224. system ("color 0f");
  225. break;
  226.  
  227. case 2:
  228. system ("color f0");
  229. break;
  230.  
  231. case 3:
  232. system ("color 0a");
  233.  
  234. case 4:
  235. system ("color 9f");
  236. break;
  237.  
  238. case 5:
  239. system ("color 0d");
  240. break;
  241.  
  242. case 6:
  243. system ("color 0e");
  244.  
  245. case 7:
  246. system ("color 2f");
  247. break;
  248.  
  249. case 8:
  250. system ("color 8e");
  251. break;
  252.  
  253. default:
  254. cout << "No has escrito una opcion valida,vuleve a escribir \"colores\""  <<
  255. " y selecciona un numero del 1 al 8" <<endl;    
  256. }    
  257. }
  258.  
  259. void AbrirQuitarProgramas()
  260. {
  261. system ("appwiz.cpl");
  262. }
  263.  
  264. void InformacionSistema()
  265. {
  266. system ("systeminfo");    
  267. }
  268.  
  269. void EstadoDeRed()
  270. {
  271. system ("netstat");
  272. }
  273.  
  274. void EstadoProtocoloInternet()
  275. {
  276. system ("ipconfig");
  277. }
  278.  
  279. void ApagarOrdenador()
  280. {
  281. cout << "Esta seguro de apagar el ordenador?" << endl;
  282.  string ApagarSi;
  283.  cin >> ApagarSi;
  284.  cout << "@";
  285.  if (ApagarSi == "si")
  286.    {
  287.    system ("shutdown -s -t 60");
  288.    }    
  289. }
  290.  
  291. void CancelarApagado()
  292. {
  293. system ("shutdown -a");
  294. }
  295.  
  296. void Rendimiento()
  297. {
  298. system ("perfmon");    
  299. }
  300.  
  301. void EditorRegistro()
  302. {
  303. system ("regedit");
  304. }
  305.  
  306. void BlocDeNotas()
  307. {
  308. system ("notepad");
  309. }
  310.  
  311. void CapturarPantalla()
  312. {
  313.   system ("SNIPPINGTOOL");
  314. }
  315.  
  316. void Calculadora()
  317. {
  318.    system ("calc");
  319. }
  320.  
  321. void GrabarSonido()
  322. {
  323.    system ("soundrecorder");
  324. }
  325.  
  326. void TecladoEnPantalla()
  327. {
  328.    system ("osk");
  329. }
  330.  
  331. void Lupa()
  332. {
  333.    system ("magnify");
  334. }
  335.  
  336. void AjustarVolumenDeSonido()
  337. {
  338.    system ("sndvol");
  339. }
  340.  
  341. void MaquinaDelTiempo()
  342. {
  343.    system ("rstrui");
  344. }
  345.  
  346. void VersionDeWindows()
  347. {
  348.    system ("winver");
  349. }
  350.  
  351. void LimpiarDisco()
  352. {
  353.    system ("cleanmgr");
  354. }
  355.  
  356. void AdministrarDiscos()
  357. {
  358.    system ("DISKMGMT");
  359. }
  360.  
  361. void CargarColores()
  362. {
  363.    system ("start archivo.bat");
  364. }
  365.  
  366. void ParticionarDisco()
  367. {
  368.    system ("diskpart");
  369. }
  370.  
  371. void ConexionesDeRed()
  372. {
  373.    system ("ncpa.cpl");
  374. }
  375.  
  376. void AdministrarFirewall()
  377. {
  378.    system ("firewall.cpl");
  379. }
  380.  
  381. void CerrarSesion()
  382. {
  383.    system ("logoff");
  384. }
  385.  
  386. void EliminarArchivosTemporales()
  387. {
  388.    system ("del %temp% /f /s /q ");
  389. }
  390.  
  391. void NavegarPorInternet()
  392. {
  393.    system ("start www.google.com");
  394. }
  395.  
  396. void FechaYHora()
  397. {
  398.   time_t fecha;
  399.  
  400. time ( &fecha);
  401. cout << ctime (&fecha);
  402. }

Un saludo.
     

PD: Acabo de leer ahora tu comentario 0xDani, si me puedes ayudar a implementarlo en el código te lo agradecería, que me estoy haciendo un lío... xD


Título: Re: Miniduda ¿Cómo expresar esto en C++?
Publicado por: daryo en 20 Junio 2013, 16:58 pm
Código
  1.      ifstream logc;
  2. logc.open ( "PersonalizacionMasterShell.bat" );
  3. if ( logc.is_open() )
  4. {
  5. system("call PersonalizacionMasterShell.bat");
  6. }
  7. logc.close();  
  8.  
  9.  

algo asi?
supuse es un bat


Título: Re: Miniduda ¿Cómo expresar esto en C++?
Publicado por: OmarHack en 20 Junio 2013, 17:05 pm
Perfecto!! :)
Ahora lo pongo para que cambie el color. :)
Como puedo hacer una función que guarde un texto en ese mismo archivo, solo sé abrirlo, y yo lo hacía con un system ("start archivo.bat") pero al no existir me informaba de que el archivo no existía. Ahora va perfecto, me falta ese detalle y solucionado!
Pd: Gracias :P


Título: Re: Miniduda ¿Cómo expresar esto en C++?
Publicado por: daryo en 20 Junio 2013, 17:14 pm
hay dos formas de abrir un archivo lectura y escritura ahi esta abierto como lectura tienes que cerrarlo primero y abrirlo en modo de escritura.
pero el programa que te pase ya lo cierra
Código
  1. logc.close();
eso se hace con un ofstream
seeria mas o menos asi:
Código
  1.  
  2. ofstream archiv;
  3. archiv.open ( "PersonalizacionMasterShell.bat", ios::app);
  4. archiv << "aca pones el texto que quieras anadir\n";
  5. archiv.close();
  6.  



Título: Re: Miniduda ¿Cómo expresar esto en C++?
Publicado por: OmarHack en 20 Junio 2013, 17:23 pm
Perfecto, muchísimas gracias, a ver si no tengo que preguntar nada más relacionado con el tema que poco más y me hacéis vosotros el programa. Un saludo y gracias de nuevo!


Título: Re: Miniduda ¿Cómo expresar esto en C++?
Publicado por: OmarHack en 20 Junio 2013, 18:22 pm
Ya está el código de los colores a funcionar, lo dejo en este nuevo tema por si alguien le interesa. :)

http://foro.elhacker.net/programacion_cc/aporte_cambiar_el_color_de_la_consola_de_los_programas_c-t393041.0.html


Título: Re: Miniduda ¿Cómo expresar esto en C++?
Publicado por: RyogiShiki en 20 Junio 2013, 19:19 pm
Otra forma de hacerlo:
Código
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5.  
  6. int main(int argc, const char * argv[])
  7. {
  8.  
  9.    ifstream exeFile("file.exe");
  10.  
  11.    if (exeFile.good())
  12.    {
  13.        exeFile.close();
  14.        cout << "Archivo existe";
  15.        system("file.exe");
  16.    }
  17.    else
  18.    {
  19.        cout << "Archivo no existe";
  20.    }
  21.  
  22.    return 0;
  23. }


Título: Re: Miniduda ¿Cómo expresar esto en C++?
Publicado por: OmarHack en 20 Junio 2013, 19:22 pm
Interesante. No sé como no se me ocurrió!


Título: Re: Miniduda ¿Cómo expresar esto en C++?
Publicado por: ecfisa en 21 Junio 2013, 11:57 am
Hola.

Por el código del mensaje #13, la aplicación correrá en windows, entonces otra opción es:

Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <windows.h>
  5. using namespace std;
  6.  
  7. // ruta + nombre de archivo, por ejemplo:
  8. #define FULLNAME "C:\\PersonalizacionMasterShell.bat"
  9.  
  10. int main()
  11. {
  12.  ifstream ifs;
  13.  
  14.  ifs.open(((string)FULLNAME).c_str());
  15.  if (ifs.is_open())
  16.   ShellExecute(NULL, "open", "CMD", ((string)"/C "+FULLNAME).c_str(), "", SW_NORMAL);
  17.  else
  18.   cout << "El archivo no existe";
  19. }
  20.  
Si deseas que ejecute el archivo por lotes y quede residente en el prompt, reemplazá "/C " por "/K ".

Saludos.


Título: Re: Miniduda ¿Cómo expresar esto en C++?
Publicado por: OmarHack en 21 Junio 2013, 15:15 pm
Genial, como estaba usando funciones del sistema windows ni me fijé en si era portable. Más adelante si saco la versión para linux ya me has ayudado bastante con ese código!


Título: Re: Miniduda ¿Cómo expresar esto en C++?
Publicado por: amchacon en 21 Junio 2013, 15:16 pm
Genial, como estaba usando funciones del sistema windows ni me fijé en si era portable. Más adelante si saco la versión para linux ya me has ayudado bastante con ese código!
Esa función es de la API de windows xD.

Relee el mensaje que no lo has entendido bien  ;)


Título: Re: [Resuelto] ¿Cómo expresar esto en C++?
Publicado por: OmarHack en 21 Junio 2013, 15:21 pm
Ahhhh vale vale jajajajaja. Las comas... Ya me extrañaba a mi que se incluyera windows.h xDDD
Estoy tonto  :silbar: