comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Programa en C ; Apaga el PC

  • 7 Respuestas
  • 4675 Vistas

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Den udode

  • *
  • Underc0der
  • Mensajes: 3
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« en: Diciembre 29, 2015, 04:36:46 am »

Hola chicos aqui les dejo un programilla en c que me ha ayudado mucho en las descargas de juegos y archivos.
ya que siempre cuando descargo cosas tengo que estar al pendiente de apagarla, como en la noche, porque si no queda prendida, y estuve buscando a ver si habia un programa asi pero no lo encontre asi que hice uno, espero que les guste.

---------------------------------------------------------------------------------------------------------------------------------
Código: C
  1. // cronometro que al finalizar apaga a computadora
  2.  
  3. #include <stdio.h>
  4.  
  5. int main(){
  6.        
  7. float horas, minutos, x,y;
  8. double p;
  9. int res;
  10. x = 0;
  11. y = 0;
  12. p = 0;
  13. horas = 0;
  14. minutos = 0;
  15.  
  16. You are not allowed to view links. Register or Login("\n\n Este es un programa para que en determinado tiempo se apague el computador\n Ideal para dejarla descargando un archivo y poderse ir, sabiendo que en cierto tiempo su pc se apagara");
  17. You are not allowed to view links. Register or Login(" color 0A");
  18. You are not allowed to view links. Register or Login(" \n \n\n DISEÑADO POR: Rishar_XL\n\n");
  19. You are not allowed to view links. Register or Login("pause");
  20. You are not allowed to view links. Register or Login ("cls");
  21. You are not allowed to view links. Register or Login("color 0C");
  22. You are not allowed to view links. Register or Login("\n\n\n (1) apagar pc ( con el programa, la pc se apaga mas rapido, en windows)");
  23. You are not allowed to view links. Register or Login("\n (2) reiniciar la pc");
  24. You are not allowed to view links. Register or Login("\n (3) suspender");
  25. You are not allowed to view links. Register or Login("\n (4) temporizador para apagar la pc");
  26. You are not allowed to view links. Register or Login(" \n\n \n Elige el numero de la opcion que quieras hacer: ");
  27. You are not allowed to view links. Register or Login("%i",&res);
  28. switch(res){
  29.        
  30.         case 1: You are not allowed to view links. Register or Login (" shutdown /s /f");break; //aqui va el primer codigo  que es reiniciar
  31.         case 2: You are not allowed to view links. Register or Login (" shutdown /r ");break; //aqui va el codigo de reiniciar
  32.         case 3: You are not allowed to view links. Register or Login (" shutdown /l ");break;// aqui va e codigo de suspender
  33.         case 4: You are not allowed to view links. Register or Login("cls");
  34.         You are not allowed to view links. Register or Login("\n deja en 0 el valor para no marcar nada");
  35.         You are not allowed to view links. Register or Login (" \n\n Introduce un valor para las horas: ");
  36. You are not allowed to view links. Register or Login("%f",&horas);
  37. You are not allowed to view links. Register or Login("cls");
  38. You are not allowed to view links. Register or Login("\n deja en 0 el valor para no marcar nada");
  39. You are not allowed to view links. Register or Login("\n\n Introduce un valor para los minutos:  ");
  40. You are not allowed to view links. Register or Login("%f",&minutos);
  41. You are not allowed to view links. Register or Login(" \n EL PRGOGRAMA YA ESTA INICIADO\n");
  42. You are not allowed to view links. Register or Login(" ADVERTENCIA:    MANTEN EL PROGRAMA ABIERTO, PRESIONA ENTER\n");
  43. You are not allowed to view links. Register or Login("pause");
  44. y = minutos * 60;
  45. x = horas * 3600;
  46. //operaciones
  47. p = x + y;
  48. p *= 16363;
  49.  
  50.         while(p > 0){
  51.                 You are not allowed to view links. Register or Login("\n %f",p);
  52.                 p--;
  53.                 if(p == 0){
  54.                         You are not allowed to view links. Register or Login("shutdown /s /hybrid");
  55.                 }
  56. }
  57. break;// AQUI ACABA EL CODIGO DEL CRONOMETRO
  58.         default: You are not allowed to view links. Register or Login(" LA OPCION ELEGIDA NO ES CORRECTA\n");
  59.  
  60.         }
  61. return 0;
  62.  
  63. }
  64.  
  65.  
  66.  
« Última modificación: Enero 02, 2016, 10:51:57 pm por Expermicid »

Desconectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5319
  • Actividad:
    40%
  • Reputación 29
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« Respuesta #1 en: Diciembre 29, 2015, 08:15:20 am »
Hola!
Se ve muy bueno! Quizas una mejora podría ser que detecte cuando finalice o se cierre una ventana antes de apagarla.
Si la descarga dura 2 horas 30 min y pones que se apaque la pc en 3horas, corres el riesgo de que la velocidad de descarga baje y esas 2 horas y media se transformen en 3 horas y media, por lo que se te cortaría la descarga.
Quizas deberías modificar tu programa para que detecte si la descarga terminó y ahi recien apagar la pc.

Es una sugerencia nada mas, me ha gustado mucho tu post!

Saludos!
ANTRAX


Desconectado Den udode

  • *
  • Underc0der
  • Mensajes: 3
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #2 en: Diciembre 29, 2015, 03:50:54 pm »
Gracias ANTRAX pensandolo bien, seria bueno que en vez de programa, fuera un plugin para el navegador, para que fueran mas de la mano y como lo que tu dices, sea mas preciso y se pueda actualizar la hora dependiendo la velocidad de descarga. pero por ahora nesecito acabar el curso de c XD

Desconectado Juan

  • *
  • Underc0der
  • Mensajes: 159
  • Actividad:
    0%
  • Reputación 0
  • Ex-Drinky
    • Ver Perfil
« Respuesta #3 en: Diciembre 29, 2015, 04:22:56 pm »
Como te dice Antrax, deberías de arreglar eso... Si no de poco sirve.

Que navegador usas?

Mira, cuando tu pones una descarga te suele salir la opción de cerrar ventana al finalizar la descarga.  Bien,  detecta cuando se cerró la ventana con la API Findwindow y entonces mandar la orden de apagar pc.

Espero haberte ayudado.

Saludos

Desconectado Den udode

  • *
  • Underc0der
  • Mensajes: 3
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #4 en: Diciembre 31, 2015, 11:56:25 pm »
jajaja gracias la neta si me ayudaste,  quisier poder hacer todo eso... pero apenas acabo de inicar a programar en C y vi que tenia un pedo al descargar los juegos ya que dejaba la pc prendida para que se descargara asi que por eso lo hice, windows tiene uno ya incluido pero tienes que convertiro en segundos asi que no. Juan, en que tendria que aprender a programar para crear plugins en el navegador (mozilla)  o hacer lo que tu dices?

Desconectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5319
  • Actividad:
    40%
  • Reputación 29
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« Respuesta #5 en: Enero 01, 2016, 08:20:27 pm »
A los plugins de Firefox podes hacerlo con Javascript o con C++

Saludos!
ANTRAX


Desconectado blackdrake

  • *
  • Co Admin
  • Mensajes: 1892
  • Actividad:
    15%
  • Reputación 14
    • Ver Perfil
« Respuesta #6 en: Enero 05, 2016, 06:20:19 pm »
Yo uso el siguiente comando:

Código: DOS
  1. shutdown -s -t 1000

Donde 1000 sería el tiempo.

Y para cancelar la orden de apagado:

Código: DOS
  1. shutdown -a



Desconectado Ominous

  • *
  • Underc0der
  • Mensajes: 2
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #7 en: Febrero 03, 2016, 07:10:01 am »
Hola, vi tu post y quería hacer un aporte porque leí que estabas empezando a aprender C y quería comentar un par de puntos a tener en cuenta sobre tu programa. Es la primera vez que me animo a contestar a un hilo y debido a que lo que voy a comentar son errores, me gustaría aclarar que en ningún momento pretendo humillar ni nada por el estilo, simplemente enseñar un poco y hacer que la gente que compone este foro sea día a día un poco mejor.

A pesar de que ya comentaron que el comando shutdown ya dispone de esa opción, voy a suponer que lo queremos implementar en C si o si.

Punto 1:
Primero me gustaría comenzar haciendo una pregunta con referencia a tu código (linea 48):

Código: C
  1. p *= 16363;

¿Por qué multiplicas la varialbe p por 16363 y lo guardas en p? ¿De donde sale este número? ¿Qué significa?
-He podido intuir que esto se debe a que para relacionar la velocidad a la que disminuyes p y que el tiempo que tarda este en llegar a 0 sea similar a los minutos que introdujo el usuario habrás hecho numerosas pruebas y en tu PC posiblemente hayas conseguido que coincida a cronómetro en mano con el tiempo indicado. Sin embargo tengo que decirte que esto no es correcto.

¿Por qué no es correcto? Te estarás preguntando, aquí la respuesta:
Cuando nosotros ejecutamos un programa, este carga el proceso en memoria y comienza a ser ejecutado por el procesador. En los Sistemas Operativos actuales se hace uso de la multiprogramación a nivel incluso de múltiples núcleos, esto quiere decir que como estamos ante un proceso secuencial, el sistema operativo asignará tu proceso a un núcleo y luego este competirá por el uso de la CPU de ese núcleo con otros procesos que también se encuentren ahí asignados.
¿Que vengo a decir con esto? Que dependiendo de la cantidad de competencia que tenga tu proceso para luchar por el uso de la CPU asignada tu contador disminuirá a mayor o menor velocidad.
Otro factor que afectaría a tu programa es que el nucleo asignado sea "mas rapido o mas lento" que el tuyo.
Esto significaría que se produciría un adelanto o un retrasos a la hora del momento en que se eligió para apagar el PC.

Punto 2:
Otro punto que me gustaría resaltar es que no es recomendable hacer una espera ocupada para llevar a cabo un cierto evento, me refiero a tu codigo (lineas 50-56):

Código: C
  1. while(p > 0){
  2.                 You are not allowed to view links. Register or Login("\n %f",p);
  3.                 p--;
  4.                 if(p == 0){
  5.                         You are not allowed to view links. Register or Login("shutdown /s /hybrid");
  6.                 }
  7. }

Este bucle lo único que hace es imprimir por pantalla el valor de p, decrementar su valor, comprobar si es 0 y de ser así ejecuta el comando indicado. El estar todo el rato comprobando esto consumiendo CPU de forma innecesaria se le llama espera ocupada. Esto no es recomendable. Se que quizás sea un poco pronto pero esto lo aprenderás una vez sepas sobre programación secuencial (que es el caso actual) y comiences a aprender sobre programación concurrente.
Para evitar la ejecución de la espera puedes hacer uso de la funcion

sleep(int param);

Ten cuidado pues dependiendo de tu SO, la función esperará los milisegundos del numero que le pases (Caso windows) o lo segundos del numero que le pases (Caso linux).
Si en windows queremos que se haga una espera de 1 segundo, escribimos:

Código: C
  1. sleep(1000)

Podrias comenzar haciendo esas modificaciones si gustas y luego proponerte hacer lo que ya te propusieron anteriormente, que es la detección de la finalización de la descarga.

Si en algun momento he resultado ofensivo o demasiado machacador, les agradecería que me lo hicieran saber pues no es la imagen que quiero transmitir.
Un saludo y gracias por su tiempo :)

PD: cualquier duda, puedes preguntarla en este mismo hilo y lo vamos viendo. Ánimo!!
PD2: Lo siento por el tocho de texto XD



 

¿Te gustó el post? COMPARTILO!



Programa un virus en C sin ser detectado por nada "Source"

Iniciado por Dr0B4ck

Respuestas: 11
Vistas: 12282
Último mensaje Julio 01, 2016, 06:28:35 pm
por fernando0101
[APORTE] Programa que hace que tiemble el mouse

Iniciado por binary112

Respuestas: 3
Vistas: 997
Último mensaje Mayo 23, 2018, 02:30:27 am
por Mr.Tru
[Reto en C] Programa que calcule la potencia de un numero

Iniciado por Crod1K

Respuestas: 2
Vistas: 5651
Último mensaje Abril 12, 2013, 12:46:51 am
por 85