• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

kwnds

[C] Dúvida: ExitWindowsEx (Resolvido)

3 mensagens neste tópico

Estou a criar um code para desligar o windows, e estive a pesquisar nesta página e devia ficar assim:

#include <windows.h>

void main (void){
BOOL WINAPI ExitWindowsEx(
  UINT EWX_POWEROFF,
  DWORD EWX_FORCE
);
}

Onde está o erro?

Eu sempre iniciei o programa com "void main (void)", a minha dúvida é: como posso criar outra função por exemplo "tempo" e durante a main, usar a "tempo"? Exemplo:

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

void main (void){
printf("ola adeus");
getch();
/*Aqui queria correr a funcao "tempo"*/
}

Funcao tempo{
blablabla
blablabla
}

Se desse, o que acontecia assim que a main era terminada, o software desligava-se ou voltava outra vez á "tempo"?

Abraços

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quanto à 1ª dúvida, estás a chamar a função incorrectamente... Sem querer soar paternal, devias aprender a sintaxe do C antes de começar a programar coisas mais sérias.

Há ali muita conversa sobre as permissões que o programa tem que ter para poder desligar o Windows, mas com um pouco de sorte basta chamar a função ExitWindowsEx com os parâmetros que são descritos na página que indicaste. A função aceita 2 parâmetros:

- o 1º diz o que queres fazer ao sistema: se queres desligar, reiniciar, fazer logout, etc. Os valores que pode tomar estão descritos na página que indicaste;

- o 2º diz ao sistema qual é a razão para desligar o Windows, e estão descritos aqui os valores que pode tomar.

Se o que queres é desligar o computador, isto (em princípio) serve:

#include <windows.h>

void main (void){
ExitWindowsEx(EWX_POWEROFF | EWX_FORCEIFHUNG, SHTDN_REASON_FLAG_PLANNED | SHTDN_REASON_MAJOR_OTHER | SHTDN_REASON_MINOR_MAINTENANCE);
}

Quanto à 2ª dúvida:

- Quando a função main termina, acabou. Mais nenhum código é executado, e o controlo é devolvido ao sistema operativo. Na prática não é exactamente assim, mas a ideia é que mais nenhum código que tenhas escrito é executado.

- Para a função tempo ser executada, primeiro tinha que estar declarada antes da função main,o que pode ser feito de duas maneiras: ou escreves o cabeçalho da função antes da main e implementas a função depois, assim:

void tempo();

void main() {
tempo();
}

void tempo() {
//função aqui
}

ou implementas logo antes da main, assim:

void tempo() {
//função aqui
}

void main() {
tempo();
}

Para a função ser executada, tens que a chamar na main (ou noutra função qualquer) como está nos exemplos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora