PDA

Ver la versión completa : Lenguaje C a bajo nivel ... ¿?



Dwarft
05-01-2004, 11:55
Hola !

Bueno, había pensando en hacer un programita en C, dónde programases a que hora quieres que sea apagado/reiniciado este para WinXP.
Entonces, yo había pensando, que metieses cuantas horas quieres que este encendido y cuando se termine la cuenta atras que apague la pc.

Bueno, para apagar la pc seria con el comando "shutdown -s -t 00" y para reiniciar "shutdown -r -t 00", pero... Cómo hago para ejecutar un comando o programa externo desde un programa creado en C ??
Y otra pregunta... Me podeis dar alguna idea para hacer la cuenta atras, por segundo ??

Muchas gracias, un saludo ! :0=

juanma.m.d
05-01-2004, 15:28
yo no se casi nada pero no creo q puedas encender el ordenador con un programa :S.

Dwarft
05-01-2004, 15:31
Upss... U_U me equivoque... jjajajaja encender no.. No se porqué lo puse :confused:

jejeje por la cara...

Un saludo, thanks

Scar_T
05-01-2004, 16:08
Lo puedes hacer con la api de windows, con la funcion ExitWindowsEx.

Para ejecutar un programa externo desde tu programa puedes usar la funcion system, y si quieres usar las salidas y entradas del programa necesitas usar pipes.

Dwarft
05-01-2004, 16:31
Acabo de estar buscando información sobre las cosas que me has planteados de como hacerlo... Pero aun asi sigo teniendo muchas dudas, haber si podeis ayudarme:
1º Para utilizar la función "ExitWindowsExec" tengo que cargar la dll user32.dll o quartz.dll, pero... Me podriais poner un poco mas claro, como funciona ?? No se.. Estoy bastante confuso ahora mismo.. Se que utiliza dos parámetros... Pero nada mas :(
2º Algo parecido con la función system (de este no he encontrado mucha información :(). Y eso... Si podeis aclararme como utilizar todo esto...

Las pipes se que son salidas (significa tuberia.. jeje). Y nada más.

Un saludo :rolleyes:

Scar_T
05-01-2004, 18:01
Veo que no conoces bien la API de windows, seria bueno que le dieras una revisada. Lo mas facil es hacerlo con system, he aqui un pequeño programa para apagar la computadora:

#include <stdlib.h>

int main() {
system("shutdown -s -t 00");
return 0;
}

Ahi pueder ver que solo hay que pasarle a la funcion system el comando a ejecutar.

Dwarft
06-01-2004, 02:45
Aaaa.. Que sencillo !! :eek: muchas gracias :)

P.D: Ok, voy a buscar la Api. (A tu salud :0= )

Dwarft
07-01-2004, 21:02
Ahora tengo un problemilla con la libreria time, ya que quiero programar cuando quieres que se apague o reinicie el pc y que lo haga.
Entonces hice lo siguiente:



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

main()
{
int a;
char l;

while((l != 'a') || (l != 'b') || (l != 'c'))
{
printf("\nApagar [a]");
printf("\nReiniciar [b]");
printf("\nProgramar []");
scanf("%s",&l);

switch(l)
{
case 'a': break;
case 'b': break;
case 'c':
{ printf("\nA que hora deseas apagar: ");
scanf("%i",&a);
while(a != time)
{ if(time == a) system("shutdown -s -t 00"); }
} } }


Bueno, esto no rula.. A parte que me da un warning... jeje
Lei que contiene la hora y/o fecha en formato condensado.. Eso que significa ?? Ya que yo probe sin dos puntos ni nada es decir (las 6, 18:00) lo puse 1800, para comprobar... Pero no hizo nada.
Asi que hice un programita que mostrase el valor de time:
printf("\nHora: %i",time);
Pero.. Ni si quiera se si habria que utilizar %i u otro tipo... Y me muestra siempre el mismo valor 15552, aunque haya cambiado la hora.
Como se utiliza la funcion "time" ??

Por ultimo, el de apagado y reinicio, funciona... Pero se cuelga el programa en si, y cuando se cierra, es cuando rula la aplicacion (si tenia que apagar, se apaga el pc y si tenia que reiniciar reinicia).

Un saludo, gracias.

Scar_T
07-01-2004, 21:11
Es que no estas usando bien la "funcion" time, asi es, time es una funcion no una variable que este cambiando con el pasar del tiempo :).

time_t tiempo;
struct tm *tmp;

tiempo = time(NULL);
tmp = localtime(&tiempo);


Ahora aqui esta la estructura tm
struct tm {
int tm_sec; /* segundos */
int tm_min; /* minutos*/
int tm_hour; /* horas */
int tm_mday; /* dia del mes */
int tm_mon; /* mes */
int tm_year; /* año */
int tm_wday; /* dia de la semana */
int tm_yday; /* dia del año */
int tm_isdst; /* daylight saving time */
};

Asi consigues la hora y fecha actual.

Dwarft
07-01-2004, 21:15
Aaaaaaaaaaa, yo tambien encontre eso, pero no sabia que era asi :$
Bueno, pues voy a intentar haber :P

Asias :)