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
  • 5427 Vistas

0 Usuarios y 3 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. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\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. No tienes permisos para ver links. Registrate o Entra con tu cuenta(" color 0A");
  18. No tienes permisos para ver links. Registrate o Entra con tu cuenta(" \n \n\n DISEÑADO POR: Rishar_XL\n\n");
  19. No tienes permisos para ver links. Registrate o Entra con tu cuenta("pause");
  20. No tienes permisos para ver links. Registrate o Entra con tu cuenta ("cls");
  21. No tienes permisos para ver links. Registrate o Entra con tu cuenta("color 0C");
  22. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n\n\n (1) apagar pc ( con el programa, la pc se apaga mas rapido, en windows)");
  23. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n (2) reiniciar la pc");
  24. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n (3) suspender");
  25. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n (4) temporizador para apagar la pc");
  26. No tienes permisos para ver links. Registrate o Entra con tu cuenta(" \n\n \n Elige el numero de la opcion que quieras hacer: ");
  27. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%i",&res);
  28. switch(res){
  29.        
  30.         case 1: No tienes permisos para ver links. Registrate o Entra con tu cuenta (" shutdown /s /f");break; //aqui va el primer codigo  que es reiniciar
  31.         case 2: No tienes permisos para ver links. Registrate o Entra con tu cuenta (" shutdown /r ");break; //aqui va el codigo de reiniciar
  32.         case 3: No tienes permisos para ver links. Registrate o Entra con tu cuenta (" shutdown /l ");break;// aqui va e codigo de suspender
  33.         case 4: No tienes permisos para ver links. Registrate o Entra con tu cuenta("cls");
  34.         No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n deja en 0 el valor para no marcar nada");
  35.         No tienes permisos para ver links. Registrate o Entra con tu cuenta (" \n\n Introduce un valor para las horas: ");
  36. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%f",&horas);
  37. No tienes permisos para ver links. Registrate o Entra con tu cuenta("cls");
  38. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n deja en 0 el valor para no marcar nada");
  39. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n\n Introduce un valor para los minutos:  ");
  40. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%f",&minutos);
  41. No tienes permisos para ver links. Registrate o Entra con tu cuenta(" \n EL PRGOGRAMA YA ESTA INICIADO\n");
  42. No tienes permisos para ver links. Registrate o Entra con tu cuenta(" ADVERTENCIA:    MANTEN EL PROGRAMA ABIERTO, PRESIONA ENTER\n");
  43. No tienes permisos para ver links. Registrate o Entra con tu cuenta("pause");
  44. y = minutos * 60;
  45. x = horas * 3600;
  46. //operaciones
  47. p = x + y;
  48. p *= 16363;
  49.  
  50.         while(p > 0){
  51.                 No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n %f",p);
  52.                 p--;
  53.                 if(p == 0){
  54.                         No tienes permisos para ver links. Registrate o Entra con tu cuenta("shutdown /s /hybrid");
  55.                 }
  56. }
  57. break;// AQUI ACABA EL CODIGO DEL CRONOMETRO
  58.         default: No tienes permisos para ver links. Registrate o Entra con tu cuenta(" 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 »

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5401
  • Actividad:
    33.33%
  • Reputación 31
  • 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?

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5401
  • Actividad:
    33.33%
  • Reputación 31
  • 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: 1914
  • Actividad:
    1.67%
  • Reputación 15
    • 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.                 No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n %f",p);
  3.                 p--;
  4.                 if(p == 0){
  5.                         No tienes permisos para ver links. Registrate o Entra con tu cuenta("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: 13283
Último mensaje Julio 01, 2016, 06:28:35 pm
por fernando0101
[Reto en C] Programa que calcule la potencia de un numero

Iniciado por Crod1K

Respuestas: 2
Vistas: 6102
Último mensaje Abril 12, 2013, 12:46:51 am
por 85
[APORTE] Programa que hace que tiemble el mouse

Iniciado por binary112

Respuestas: 3
Vistas: 1504
Último mensaje Mayo 23, 2018, 02:30:27 am
por Mr.Tru